# 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.

- Workflow type: agent
- Services: Meta Ads, HubSpot, Slack Bot
- Categories: Sales, Marketing
- Published: 2026-07-11

## What it does

- 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 you'll need

- 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.

## Prompt

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.

## How to customize

- 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.

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/facebook-lead-ads-to-hubspot-and-slack-every-15-minutes