How do I send HubSpot or Salesforce lead stages back to Meta so it finds better B2B leads?
TofuAnswer by the Tofu team · checked

Use Meta's Conversions API for CRM. Run lead ads with Instant Forms, keep each lead's Meta Lead ID in your CRM, create a CRM dataset in Events Manager, and send an event every time a lead changes stage, at least once a day. HubSpot does this with its Meta ad conversion events; Salesforce Sales Cloud uses Meta's free AppExchange app or Salesforce Webhooks. Then optimize for "Maximize number of qualified leads." A partner setup takes under a day, then Meta learns for 2 to 4 weeks or longer. Meta set the Offline Conversions API to end in May 2025.
As of October 2026.
Doing the same for other platforms? See how to send MQLs and SQLs from your CRM to LinkedIn and how to upload offline conversions to Google Ads.
Before you start
- Lead ads with Instant Forms. Meta's developer guide and payload specification say this optimization supports only Instant Form leads. Meta's help page on lead ad performance goals and its developer FAQ (updated March 2026) say website forms work too, but the Lead ID matching below is for Instant Form leads.
- Leads flowing into your CRM automatically, through a partner, a webhook or the Graph API. Meta doesn't recommend manual CSV downloads.
- A business ad account and admin access. The goal isn't available in personal ad accounts. You need admin access to create the CRM dataset.
- Enough leads, and a stage that happens fast. Meta's developer guide asks for at least 200 leads a month, an optimization stage that happens within 28 days of the lead, and a conversion rate to that stage between 1% and 40%. On October 30, 2025, Meta said it was removing the minimum monthly lead volume requirement. Its developer FAQ (updated March 2026) no longer lists one, but the main developer guide (updated October 19, 2026) and its data check step still list 200. Treat 200 a month as a safe target.
- Don't build on the Offline Conversions API. Meta said it would discontinue that API when Graph API v16.0 expired in May 2025 (Meta's version table gives May 14, 2025), and told advertisers to move to the Conversions API.
Step 1: Check that you can pick the qualified leads goal
In Ads Manager, create a campaign with the Leads objective and set the conversion location to Instant forms. Meta's help center has you go to Conversions, open the Leads dropdown and choose Qualified leads. The performance goal is listed as Maximize number of qualified leads. Meta's developer docs and HubSpot call the same goal "Conversion Leads."
Meta's help center says that from April 2026, the qualified leads goal isn't available for new campaigns without a Conversions API integration, and existing campaigns are affected from August 2026. Meta's developer guide, in a step last updated in February 2026, still says the integration isn't required to start. If you don't see the goal, finish the integration first.
You can't change the optimization goal on a published campaign. Duplicate it and change the copy.
Step 2: Store the Meta Lead ID in your CRM
Each Instant Form lead has a Meta Lead ID, a 15 to 17 digit number (one Meta help page says 15 or 16). Meta recommends it as the match key and rejects events with an invalid one. Map it to a CRM field first.
| How leads reach your CRM | Where the Lead ID is, per Meta |
|---|---|
| Webhook or Graph API | The lead's id field, or leadgen_id in the webhook |
| Zapier, LeadsBridge or Make | The id (or Lead ID) field; map it to a Lead ID or custom field |
| Salesforce Lead Capture | The Lead ID field; map it to a custom field you create |
| HubSpot Lead Sync | Not stored (see Step 4a) |
| Manual CSV download | The first column, id |
Without a Lead ID, you can match on click ID or hashed email (which Meta also rates highest priority) or hashed phone number (high).
Step 3: Create a CRM dataset in Events Manager
- In Events Manager, click Connect data, select CRM and click Next.
- Read the Connect your CRM for conversion leads message and click Next.
- Pick a dataset or click Create new dataset. Meta suggests a new one, so CRM events don't mix with website events.
- Choose Connect with a partner and search for your CRM, or Connect manually.
Keep this dataset. Meta says switching to a different one restarts training.
Step 4a: Connect HubSpot
HubSpot's built-in route is ad conversion events, which send lifecycle stage changes to Meta through the Conversions API. You can also start it from Events Manager: choose Connect with a partner, search HubSpot, then pick Hubspot via Meta.
- Connect your Meta Ads account (it must be in a Business Manager) and install the Meta pixel through HubSpot, which HubSpot requires. The pixel goes on every page with HubSpot's tracking code and starts sending page views right away, so remove any pixel code you added by hand.
- Go to Marketing > Ads, click Create, then Event.
- Choose Meta as the ad network, pick the ad account, and choose Lifecycle stage change as the trigger.
- Select the lifecycle stages to send. HubSpot says to create an event for each stage, including Others.
- Pick the data to share (Click ID, Email address, Phone number) and whether to share all contacts who reach the stage or only those who interacted with your ads.
- Click Create event.
What to know:
- Limits. Marketing Hub Starter allows 5 ad conversion events, Professional 50 and Enterprise 100, and each stage counts as one. Free HubSpot accounts can't create them. (Meta's older Lead ID guide says HubSpot's lifecycle stage sync is Professional and Enterprise only; HubSpot's own page, updated October 2026, includes Starter.)
- Timing. Only stage changes after you create the event count. Meta says events reach Events Manager about 20 to 30 minutes after a status change.
- Scope. HubSpot says Meta only syncs lifecycle data from contacts who interacted with your lead generation campaigns, and those campaigns must use Instant Forms.
- The Lead ID gap. Meta's Lead ID guide says HubSpot's Lead Sync doesn't store the Meta Lead ID, yet Meta's HubSpot setup page lists Lead ID and Click ID as required. HubSpot's event setup, lead sync and field mapping pages don't list a Lead ID. If your match rate is low, download leads through a webhook or partner that stores it.
Step 4b: Connect Salesforce
Meta documents two routes for Salesforce Sales Cloud. Meta also lists Salesforce Data Cloud as a partner.
Meta's AppExchange app (Meta Conversion Leads Integration for Salesforce, published by Meta, free, listed November 2025). Meta says it may not be available to you yet.
- Make sure Meta leads sync into Sales Cloud with the Meta Lead ID (or at least email or phone) in a field, using Salesforce's Lead Capture app or a third party.
- Install the app from AppExchange: Get it now, pick the org, Confirm and install.
- A Salesforce admin assigns the Meta Conversion Leads User permission set to the people and automation users who update leads.
- Open Meta conversion leads from the App Launcher, click Connect, and choose your business and dataset.
- Confirm the fields to send. Meta recommends the Lead ID field; otherwise email or phone.
- Optional test: in Events Manager, open Test events, choose your CRM, create a test lead, change its stage in Salesforce and check that the event arrives.
Salesforce Webhooks (no code, more Salesforce setup). Pick the Salesforce Webhooks partner in Events Manager. In Salesforce, create a Lead outbound message to the endpoint URL Meta gives you, sending Status, LastModifiedDate, your Meta Lead ID field, email and phone, then a record-triggered flow with the formula Meta provides. Repeat it for Opportunity if you convert leads to opportunities. You need System Administrator in Salesforce and full control of the ad account and business in Meta.
Step 4c: Or build it yourself
Send events to https://graph.facebook.com/API_VERSION/PIXEL_ID/events with an access token from the dataset's settings. Each event needs:
| Field | Value |
|---|---|
event_name | The CRM stage, in your own words (for example "MQL") |
event_time | Unix time of the stage change, after the lead was created |
action_source | system_generated |
user_data | lead_id, plus hashed email or phone if you have them |
custom_data.lead_event_source | Your CRM's name, such as "Salesforce" |
custom_data.event_source | crm |
Events missing the last two fields show in Events Manager but don't count for this integration. Meta estimates 3 to 4 weeks for a developer build, against under a day with Zapier (free for up to 100,000 lead events, Meta said in October 2025) or another partner.
Step 5: Send every stage, at least once a day
- Send all stages, including the raw lead. Meta's example: 100 leads that become 70 MQLs, 30 opportunities and 15 sales means 215 events.
- Upload at least daily. Real time is best. Batches work if they include every status change, not a snapshot.
- Keep batches small. A batch holds up to 1,000 events, and one error discards the whole batch.
- Backfill 7 days at most. Don't change
event_timeto go further back; Meta may discard all of it. - Cover your leads. Meta wants lead coverage of at least 60%: matching events for 60% of the leads you get from Meta.
Step 6: Map your funnel and wait out learning
Meta validates your data first: its FAQ asks for at least seven days of events and two stages (three is better). Then the dataset's Overview tab lets you configure the funnel. Remove events that don't belong, order the rest, mark the stages that signal a quality lead, and pick the earliest stage to optimize for (Meta may pick another if it performs better). In October 2025, Meta said advertisers would also be able to pick a single conversion event in ad creation instead.
Meta gives two learning times: 2 to 4 weeks in its setup guide, and 1 to 2 months in its FAQ. You can run qualified leads campaigns meanwhile, but the full effect comes later. Share the dataset with every ad account that will use it.
Common problems
| Problem | Why it happens | Fix |
|---|---|---|
| Events rejected | Invalid lead_id | Send the Lead ID exactly as Meta issued it, or match on hashed email or phone |
| Events show in Events Manager but the integration ignores them | lead_event_source or event_source: crm missing, or a website payload | Use the CRM payload fields in Step 4c |
| Stuck on "Wait for 7 days of CRM events" | Under seven days of data, one stage only, too few leads matched, or errors | Check the Diagnostics tab and send a raw lead event for every lead |
| HubSpot events match poorly | HubSpot Lead Sync doesn't store the Lead ID; only changes after setup count | Store the Lead ID through a webhook or partner, and give it time |
| No qualified leads goal | No Conversions API integration, a personal ad account, or a published campaign | Finish the integration, use a business ad account, or duplicate the campaign |
| Offline Conversions API calls fail | Meta set it to end in May 2025 | Send events through the Conversions API |
Sources (24)
- Conversions API for CRM integration (Meta for Developers), checked October 24, 2026
- 1: Connecting Your CRM to Download Leads (Meta for Developers), checked October 24, 2026
- 2: Getting Started With the CRM Integration (Meta for Developers), checked October 24, 2026
- 3: Developer Implementation (Meta for Developers), checked October 24, 2026
- 4: Verify Your Data (Meta for Developers), checked October 24, 2026
- 5: Configure Your Sales Funnel (Meta for Developers), checked October 24, 2026
- 6: Follow-up steps after CRM integration (Meta for Developers), checked October 24, 2026
- Conversions API FAQ (Meta for Developers), checked October 24, 2026
- How to Find the Meta Lead ID (Meta for Developers), checked October 24, 2026
- Payload Specification (Meta for Developers), checked October 24, 2026
- Set Up Conversions API with Salesforce Webhooks (Meta for Developers), checked October 24, 2026
- Version 20.0 (Marketing API changelog), checked October 24, 2026
- Graph API versions, checked October 24, 2026
- About performance goals for lead ads (Meta Business Help Center), checked October 24, 2026
- Set up your CRM for qualified leads (Meta Business Help Center), checked October 24, 2026
- Connect your CRM to Meta using Conversions API for CRM (Meta Business Help Center), checked October 24, 2026
- Use a partner to connect your CRM for conversion leads (Meta Business Help Center), checked October 24, 2026
- Connect HubSpot to Meta using Conversions API for CRM (Meta Business Help Center), checked October 24, 2026
- Connect your Salesforce Sales Cloud to Meta (Meta Business Help Center), checked October 24, 2026
- More quality leads this Q5 with Meta's latest AI-enabled updates (Meta for Business, October 30, 2025), checked October 24, 2026
- Meta Conversion Leads Integration for Salesforce (Salesforce AppExchange), checked October 24, 2026
- Create and sync ad conversion events with your Meta Ads accounts using Meta's Conversion API (HubSpot), checked October 24, 2026
- Sync leads from your lead ad forms to HubSpot (HubSpot), checked October 24, 2026
- Understand how lead ad fields map to HubSpot properties (HubSpot), checked October 24, 2026