Facebook Lead Ads to HubSpot and Slack, every 15 minutes

Sweep new Facebook and Instagram lead form submissions every 15 minutes, sync them to HubSpot, and post a qualified alert with a draft intro email to Slack.

Agentic Task
Meta AdsHubSpotSlack BotSalesMarketingLead EnrichmentNotifications & AlertsData Sync
PromptCreate

Build an agent workflow that runs on a cron every 15 minutes to move new Facebook and Instagram Lead Ad submissions from Meta Ads into HubSpot and post an enriched alert to Slack.

Trigger: cron, every 15 minutes.

On each run, the agent should:

1. For each active lead form in the configured Meta Ads account, use Meta Ads Get Ad Leads to pull the latest lead submissions. Keep a small state note of the last-seen lead id per form so we only process new submissions and never post the same lead twice.

2. For every new lead, use HubSpot Search Contacts to check whether a contact already exists (match on the email captured on the form). Remember whether this was a new create or an existing update, because we surface that in Slack.

3. Upsert the lead into HubSpot via HubSpot Batch Upsert Contacts, matched on email. Write standard properties (first name, last name, email, phone) plus source campaign, source ad, source ad set, and each form question and answer. Batch upserts up to 100 leads per HubSpot call when a single sweep pulls in many at once.

4. Take the email domain of the new lead and use HubSpot Search Companies to see if there is an existing company with that domain. If yes, remember the company name so we can flag this as an account-based touch in Slack.

5. Write a short qualification summary (2 to 4 sentences) from the form answers, calling out fit signals like company size, role, budget, or timeline where present. Also draft a one-paragraph intro email the AE can copy: friendly, references the specific ad or offer the lead responded to, and ends with a soft ask for a 15-minute call.

6. Post one message per lead to the configured sales Slack channel using Slack Bot Send a Message. The message should include: the lead's full name and title, email and phone, the campaign and ad they came from, whether they are new or already in HubSpot, the account-based flag when the domain matched a company, the qualification summary, and the draft intro email in a code block so it's easy to copy.

Inputs to expose on the workflow: the Meta Ads account id, the Slack channel id for sales alerts, and an optional list of lead form ids to restrict to (default: all active lead forms on the account).

Guardrails: if Get Ad Leads returns nothing new for a form, skip silently. If HubSpot rejects a contact (bad email, etc.), still post the Slack message but note the sync failure so the AE can fix it manually. Never post the same lead twice, even across runs.

What does this prompt do?

  • Checks your Facebook and Instagram lead forms every 15 minutes for new submissions so nothing sits waiting for hours.
  • Creates or updates each new lead in HubSpot with the campaign, ad, and every form answer attached so the record is ready to work.
  • Posts a Slack alert to your sales channel with the lead's contact info, a short qualification summary, and a ready-to-send intro email your AE can copy.
  • Flags when a lead's email matches an existing HubSpot company so the AE knows it's an account touch, not a fresh cold lead.

What do I need to use this?

  • A Meta Ads account with at least one active lead form on Facebook or Instagram.
  • A HubSpot login with permission to search contacts and companies and to create or update contacts.
  • A Slack workspace with the channel where you want sales to be notified.

How can I customize it?

  • Change the sweep frequency from every 15 minutes to hourly, or twice a day, if you don't need near-real-time alerts.
  • Pick which Slack channel gets pinged, or route different lead forms to different channels for different sales pods.
  • Adjust which HubSpot properties get written from the form answers, and tweak the qualification and intro-email style to match your team's voice.

FAQs

How is this different from HubSpot's built-in Facebook Lead Ads sync?
HubSpot's native sync can take up to two hours to pull a new lead in. This runs every 15 minutes, and on top of syncing the contact it also writes a qualification summary and a draft intro email straight to Slack so your AE can respond while the lead is still warm.
Will the same lead ever get posted twice?
No. The workflow tracks the last lead it has seen for each form, so on every run it only picks up submissions that are genuinely new.
What if a lead already exists in HubSpot?
Existing contacts are updated with the new campaign, ad, and form answers rather than duplicated. The Slack message will note that the person was already in your CRM.
How does the account-based flag work?
When a new lead comes in, the workflow looks at the domain of their email and checks HubSpot for a matching company. If there is one, the Slack alert calls it out so the AE knows this is an existing account, not a cold lead.
Do I need a paid HubSpot tier?
No. Any HubSpot tier that lets you search and create contacts through their API will work, including free and starter plans.

Related templates

A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App
LiveKit live operations console for room moderation

Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.

LiveKit
Slack Bot
General Input Database
App
Wake up dormant Keap leads with a researched reason

Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.

Keap
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop losing Facebook leads to a two-hour sync delay.

Connect Meta Ads, HubSpot, and Slack once, and every new lead lands in your CRM and sales channel within 15 minutes, with a qualification summary and a draft intro email attached.