Send HubSpot Offline Conversions to Facebook Ads with Zapier

Sync HubSpot offline conversions to Facebook Ads via Zapier to track real ROI, fix attribution gaps, improve lead quality, and boost performance.

Send HubSpot Offline Conversions to Facebook Ads with Zapier
Free pipeline audit

Pipeline,
not promises.

Senior operators audit your funnel in 48 hours. Ship 3 specific moves in 30 days.

$60M+
Ad spend managed
4.9/5
on G2 · 300+ teams
  • Full-funnel audit · 4 velocity levers
  • 3 wins to ship in 30 days
  • $3K flat · month-to-month

30-min call · No commitment

★★★★★ Trusted by PriceLabs, Trackxi, Rocketlane & 300+ B2B teams
Last Updated:

HubSpot to Facebook Offline Conversions With Zapier: The 2026 Setup

If you built a Zap that sends HubSpot conversions to Facebook before mid 2024, it is almost certainly dead. Zapier blocked new Zaps on the Facebook Offline Conversions app on 4 June 2024, and every existing Zap using it stopped running on 1 May 2025, because Meta retired the Offline Conversions API underneath it.

Most of the guides still ranking for this topic describe that dead app. They tell you to pick “Send Offline Event” inside an action that no longer accepts new connections. This guide covers what actually works now.

Quick answer

To send HubSpot offline conversions to Meta through Zapier in 2026, use the Facebook Conversions app (or Facebook Conversions for Business admins), not Facebook Offline Conversions. Which action you pick depends on where the lead came from:

Your lead sourceZapier actionMatch keyaction_source
Meta lead ads (instant forms)Send Funnel Eventlead_id from Meta, unhashedsystem_generated
Website form after a Meta ad clickSend Other Event or Send Lead EventHashed email, phone, fbc, fbpwebsite or physical_store
Genuinely offline (call, demo, event)Send Other Event or Send Purchase EventHashed email and phonephysical_store

If your Meta spend goes to lead ads, the first row is the one that matters, and it is the row almost nobody writes about. Using lead_id gets you near perfect matching with no personal data leaving HubSpot.

Key takeaways

  • The Facebook Offline Conversions Zapier app is retired. Existing Zaps stopped on 1 May 2025.
  • The replacement is the Facebook Conversions app, which posts to Meta’s Conversions API and requires a Dataset ID from Events Manager rather than an offline event set.
  • HubSpot’s own native Meta integration cannot fire on deal stages. That single limitation is the honest reason most B2B SaaS teams still need Zapier.
  • For Meta lead ads, send funnel events keyed on lead_id with action_source set to system_generated. No hashing, no match rate problem.
  • Meta accepts an event_time up to 7 days old. Send the stage change within a week of it happening, or the event is rejected.
  • Send fewer, better events. Two or three meaningful pipeline stages beat eight noisy ones.

What changed, and why your old Zap broke

Meta used to run two separate systems. The Pixel handled browser events. The Offline Conversions API handled uploads of in person and CRM conversions into an “offline event set”. Zapier’s Facebook Offline Conversions app talked to the second one.

Meta then consolidated everything into a single Conversions API, and everything now writes into a dataset instead of a pixel or an offline event set. Offline events did not disappear. They became a normal Conversions API event with action_source set to physical_store.

Zapier followed. Here is the migration in plain terms:

ThenNow
App: Facebook Offline ConversionsApp: Facebook Conversions, or Facebook Conversions (for Business admins)
Action: Send Offline EventAction: Send Purchase Event, Send Other Event, Send Lead Event or Send Funnel Event
Destination: offline event setDestination: Dataset, selected or created in Events Manager
Offline flag was implicitYou set Action Source explicitly, usually Physical Store
Worked until 1 May 2025Current

If you still have a paused or erroring Zap on the old app, do not try to repair it. Rebuild it on the new app. The old one cannot be reconnected.

Native HubSpot integration or Zapier? The real decision

HubSpot does ship a native Meta Conversions API sync, and the honest advice is to use it when it fits. It is free with your existing subscription and there is nothing to maintain. But its limits are specific, and they are what push B2B SaaS teams to Zapier.

HubSpot native Meta CAPIZapier + Facebook Conversions
CostIncluded with Marketing Hub Starter, Professional or EnterpriseFree plan covers a simple 2 step Zap at 100 tasks a month; Professional from about $19.99 a month for filters and multi step
Fires on lifecycle stage changeYes, including custom stagesYes
Fires on deal stage changeNoYes
Fires on form submissionYes, HubSpot forms onlyYes, any trigger HubSpot exposes
Fires on a custom property changeNoYes
Conditional filtering before sendingNoYes, filter on score, deal size, owner, anything
Event limit5 (Starter), 50 (Professional), 100 (Enterprise)Practical limit is your task allowance
Sends deal revenue as event valueNot for deal based eventsYes
Requires Meta pixel installed in HubSpotYesNo
Requires ad account inside a Business ManagerYesYes
MaintenanceNoneYou own the Zap

The short version. If your only conversion signal is a HubSpot form submission or a lifecycle stage change, use the native integration and skip Zapier entirely. If you want Meta to optimise toward Closed Won, toward deals above a certain value, or toward an SQL that a rep actually accepted, the native integration cannot do it and Zapier can.

Plenty of teams run both: native for the top of funnel Lead event, Zapier for the two or three deeper stages that matter commercially.

Before you build anything

Get these four things in place first. Skipping them is the cause of most failed setups.

  1. A dataset in Events Manager. Open Meta Events Manager, then Data sources. If you already run a pixel, it has become a dataset and you can reuse it. Note the dataset ID.
  2. Business Manager access. Your ad account has to sit inside a Business Manager account, and your user needs permission on the dataset, not just the ad account.
  3. Partner permission for Zapier. In Events Manager, open your data source, then Settings, then Conversions API, then Choose a partner, then Zapier, and turn the permission on. Do this before you build the Zap and you avoid the single most common connection error.
  4. A decision about which stages you will send. Write them down before you open Zapier. Three stages is usually right for B2B SaaS.

Path A: Meta lead ads leads, using funnel events

This is the right path when the lead filled in a Meta instant form. Meta generates a leadgen_id for that lead, HubSpot stores it, and you send pipeline updates back against that ID. Matching is essentially perfect because you are handing Meta its own identifier back.

Step 1. Confirm the lead ID is reaching HubSpot. If you use HubSpot’s native Meta lead ads sync, the Meta lead ID lands on the contact record. Check a recent contact from a lead ad and find the property that holds it. If it is not there, this path will not work and you should use Path B.

Step 2. Build the trigger. In Zapier, create a Zap with HubSpot as the trigger. For pipeline movement, use Updated Deal Stage or New Contact Property Change on your lifecycle stage property.

Step 3. Filter. Add a Filter step so the Zap only continues when the Meta lead ID property is not empty, and when the stage matches the one you want to report. This keeps organic and non Meta leads out of the feed.

Step 4. Add the action. Choose Facebook Conversions, then Send Funnel Event. Connect the account that has permission on the dataset.

Step 5. Map the fields.

FieldWhat to mapNotes
DatasetYour dataset from Events ManagerNot an offline event set
Lead IDHubSpot’s Meta lead ID propertyA 15 or 16 digit number. Never hash it
Event NameYour stage nameMeta’s own examples are Initial Lead, Marketing Qualified Lead, Sales Opportunity, Converted
Event TimeHubSpot’s timestamp for the stage changeMust be within 7 days
Action Sourcesystem_generatedThis is what marks it as a CRM event
Lead Event SourceHubSpotMeta expects the CRM name here
Value and CurrencyDeal amount, on your revenue stage onlyOptional but worth doing

Step 6. Send the early stages too. Meta’s guidance is to send every stage as it updates, including the initial lead stage, not just the deep ones. The model needs the full shape of the funnel to learn what an eventual customer looks like early.

Because matching uses lead_id rather than personal data, no hashed email or phone is required, and a long sales cycle is not a problem. The lead ID keeps the connection to the original ad however many weeks later the deal closes.

Path B: website leads and true offline conversions

Use this when the lead came from a form on your own site after clicking a Meta ad, or when the conversion genuinely happened away from the browser, such as a sales call or a signed contract.

Step 1. Trigger. HubSpot, then Updated Deal Stage or Contact Recently Created or Updated.

Step 2. Filter. Continue only when the stage is the one you care about and, ideally, when the original source indicates paid social. Sending your entire database is the fastest way to teach Meta nothing.

Step 3. Action. Facebook Conversions, then Send Purchase Event for revenue events, or Send Other Event for everything else.

Step 4. Map the fields.

FieldWhat to mapNotes
DatasetYour dataset IDRequired
Action SourcePhysical Store for offline events, Website for online form fillsMeta requires physical_store for offline and in store events
Event NameLead, Purchase, or your own name such as SQLUse a standard event name where one fits
Event TimeThe HubSpot timestamp of the stage changeUp to 7 days old. Store transactions should be uploaded within 62 days of the conversion
EmailContact emailHashed automatically
PhoneContact phone in E.164 formatHashed automatically
First and last name, city, state, zip, countryContact propertiesAll hashed automatically. Each one lifts match rate
External IDHubSpot contact ID or record IDHashing recommended, handled for you
Click ID (fbc) and Browser ID (fbp)Stored cookie values, if you capture themNot hashed. These are the strongest signals you can send
Order IDHubSpot deal IDUse this for deduplication. Meta prefers order_id
Value and CurrencyDeal amount and currencyRequired for Purchase events

Step 5. Capture fbc and fbp if you possibly can. Add hidden fields to your HubSpot forms that store the _fbc and _fbp cookie values at submission. This is the single highest leverage change on this entire list. Email matching is decent. Click ID matching is exact.

Which pipeline stages should a B2B SaaS actually send?

More events is not better. Meta’s optimisation needs volume at whichever event you optimise toward, and B2B pipelines are thin at the bottom. A sensible default:

StageSend it?Event nameValue to sendWhy
Form submittedYesLeadNoneBaseline volume, and the anchor for everything after
MQLYesYour own name, e.g. MQLNoneUsually the deepest stage with enough volume to optimise on
Demo held or SQL acceptedYesYour own name, e.g. SQLOptional pipeline valueThe first stage a human has validated
Opportunity createdOnly at scaleSales OpportunityDeal amountUseful once you exceed roughly 50 a month
Closed WonYes, for reportingPurchaseActual contract valueRarely enough volume to optimise on, but it is what proves ROI
Everything elseNoNoise

The rule of thumb: optimise on the deepest stage that produces enough weekly volume for Meta to exit the learning phase, and report on everything below it. For most B2B SaaS teams that means optimising to MQL or SQL and reporting on Closed Won.

Checking that it actually works

Do not trust a green Zap. Verify on Meta’s side.

WhereWhat to checkHealthy sign
Zapier, Zap historyTask success rate and error logsNo repeated errors, no filtered-out tasks you expected to pass
Events Manager, OverviewEvents arriving against your datasetEvents appear, usually within a couple of hours
Events Manager, Event Match QualityThe score Meta assigns your matchingThe higher the better. Adding phone, fbc and fbp is what moves it
Events Manager, DiagnosticsWarnings about missing or malformed parametersEmpty
Ads Manager, custom columnsYour event as a reportable column, split by campaignConversions attributed to campaigns, not just to the account

Give it a week before you judge anything. Then give any new optimisation target another two weeks to leave the learning phase before you touch budgets.

Common failures and what causes them

SymptomCauseFix
Zap errors on connecting FacebookZapier not authorised as a CAPI partnerEvents Manager, data source, Settings, Conversions API, Choose a partner, Zapier, enable
”Dataset not found”Using an old offline event set IDUse the dataset ID from Data sources in Events Manager
Events accepted but nothing attributesNo usable match keyAdd phone, external ID, and above all fbc and fbp. For lead ads, switch to lead_id funnel events
Events rejected with a time errorevent_time older than 7 daysTrigger on the stage change itself, not on a nightly batch
Match quality stuck lowOnly sending email, and often a shared or generic work addressAdd more parameters. Generic addresses like info@ rarely match a personal Meta account
Duplicate conversionsThe same deal sent by two Zaps, or by Zapier and the native integration at onceSend order_id (the deal ID) on every event and pick one system per event name
Task usage spikesNo filter, so every property change firesFilter hard at step two. Only continue on the exact stage transitions you care about
Test passes, live does nothingMapped fields that are empty on real recordsTest with a real record that has the properties populated

Does this work with CRMs other than HubSpot?

Yes, and the pattern is identical. Zapier’s Facebook Conversions app does not care which app the trigger came from, so the same structure works for Salesforce, Pipedrive, Close, a Google Sheet, or a plain webhook. Swap the trigger, keep the filter, keep the field mapping, keep the dataset. Only the property names change.

What to do this week

  1. Check whether you have a broken Zap on the retired app. If yes, rebuild it, do not repair it.
  2. Decide whether the native HubSpot integration covers you. If you only need form submissions and lifecycle stages, it does.
  3. If you need deal stages, build one Zap, for one stage, keyed on lead_id if your leads come from Meta instant forms.
  4. Add hidden fbc and fbp fields to your HubSpot forms.
  5. Wait a week, check Event Match Quality, then add the second stage.

Start with one event. A single reliable SQL event beats six unreliable ones, every time.

Frequently asked questions

Why did my Facebook Offline Conversions Zap stop working?

Meta retired the Offline Conversions API that the app was built on. Zapier stopped allowing new Zaps on that app on 4 June 2024, and existing Zaps stopped running on 1 May 2025. You need to rebuild on the Facebook Conversions app.

What replaced offline event sets?

Datasets. In Events Manager, what used to be a pixel or an offline event set is now a dataset, and every event type writes to it. Offline events are now ordinary Conversions API events with the action source set to physical_store.

Do I still need the Meta pixel?

For the Zapier route, no. The Zap posts server to server. But you should still run the pixel, because the _fbc and _fbp cookies it sets are the strongest match keys you can attach to a server event.

Can HubSpot’s native Meta integration send deal stage conversions?

No. HubSpot’s native ad conversion events fire on lifecycle stage changes, HubSpot form submissions and page views. Deal stages are not a supported trigger, which is the main reason B2B SaaS teams add Zapier.

How many conversion events does the native HubSpot integration allow?

Five on Marketing Hub Starter, fifty on Professional and one hundred on Enterprise. It also only works with forms built in HubSpot, and requires your ad account to sit inside a Business Manager account.

What Zapier plan do I need?

A basic two step Zap can run on the free plan within its 100 monthly tasks. The moment you add a filter, which you should, it becomes a multi step Zap and needs Professional, which starts around $19.99 a month and scales with your task volume. Budget by how many stage changes you expect per month, not by the headline price.

How far back can I send a conversion?

The event_time you stamp on an event can be up to 7 days old. Physical store transactions should be uploaded within 62 days of the conversion. This is why you should trigger on the stage change as it happens rather than uploading a monthly batch.

My deals take three months to close. Does offline conversion tracking still work?

Yes, as long as you send each stage change within a week of it happening. The 7 day limit applies to how stale the event is when you send it, not to how long ago the click was. For Meta lead ads leads, the lead_id keeps the link to the original ad indefinitely.

Should I hash the data before sending it?

No. Email, phone, name, city, state, zip and country are hashed for you. Click ID, Browser ID and lead ID must not be hashed at all. Do not pre hash anything yourself.

What is a good Event Match Quality score?

Higher is better, and the honest answer is that the absolute number matters less than the trend after you add parameters. Sending email alone scores poorly. Adding phone, external ID, and especially the fbc and fbp cookie values is what moves it.

Why is my match rate low even though I send email addresses?

B2B is harder than B2C here. Work email addresses are frequently not the address attached to someone’s personal Meta account, and generic addresses like info@ or sales@ almost never match. Capture the click ID instead of relying on email.

Can I send revenue back to Meta?

Yes. Map the HubSpot deal amount to the Value field and set Currency on a Send Purchase Event action. Send the deal ID as Order ID so the same deal cannot be counted twice.

How do I stop duplicate conversions?

Send a stable Order ID, which for HubSpot should be the deal ID. Meta prefers order_id for deduplication and applies a 7 day deduplication window. Also make sure the same event name is not being sent by both Zapier and the native HubSpot integration.

Will this fix my attribution after iOS privacy changes?

It helps materially, because server side events are not blocked by browser or app level tracking restrictions the way pixel events are. It does not restore everything. Treat it as recovering signal for optimisation rather than as a perfect audit trail.

Is this GDPR compliant?

Sending CRM data to Meta is a data sharing activity, so you need a lawful basis and appropriate consent, and you should reflect it in your privacy notice and processing records. Automatic hashing reduces exposure but does not remove the obligation. Take your own legal advice on your specific setup.

What is the most common mistake?

Sending too many low value events with no filtering. Every contact property change becomes a conversion, Meta optimises toward a meaningless signal, and your task bill goes up. Pick two or three stages that genuinely predict revenue and send only those.


Need this built and maintained?

We set up offline conversion tracking for B2B SaaS companies across Meta, Google and LinkedIn, then run the campaigns that use it. If you want your pipeline stages feeding your ad platforms properly, without a broken Zap you find out about three months later, let’s talk.

Book a free demo →



Sources

Ishan Manchanda

Ishan Manchanda

Turning Clicks into Pipeline for B2B SaaS · Founder, GrowthSpree