Meta Ads Offline Conversions Guide for B2B SaaS

Meta Ads Offline Conversions Guide for B2B SaaS

Meta Ads

October 9, 2026

October 9, 2026

Meta offline conversions let you send conversion data from outside the browser—customer relationship management (CRM) stage changes, signed contracts, closed revenue—back to Meta so the algorithm can optimize for actual business outcomes instead of just form fills. For B2B SaaS, where the real value happens weeks after the ad click in your sales pipeline, this is the difference between Meta finding you more leads and Meta finding you more revenue.

This guide covers how to set up offline event tracking, connect your CRM to Meta's Conversions API, map your pipeline stages to events, and troubleshoot the most common issues that tank match rates.

Key Takeaways

  1. Meta offline conversions are conversion events that happen outside the browser—sales calls, signed contracts, closed revenue in your CRM—that you send back to Meta so the algorithm can optimize for real business outcomes.

  2. Without offline conversion data, Meta optimizes for shallow events like form fills instead of pipeline and revenue, which creates problems for B2B SaaS with long sales cycles.

  3. Meta has discontinued the standalone Offline Conversions API, as Segment's documentation confirms. You now send offline events through the Conversions API with specific offline parameters.

  4. For B2B SaaS, map your CRM pipeline stages (marketing qualified lead (MQL), sales qualified lead (SQL), Opportunity, Closed Won) to Meta events so the algorithm learns which ad clicks lead to actual revenue.

  5. Upload offline events in real time or at least daily. Meta rejects any batch that includes an event_time more than 7 days old.

What Are Meta Offline Conversions

Meta offline conversions are conversion events that happen outside of browser-based tracking. Think phone calls, in-person meetings, CRM stage changes, and closed-won deals. Meta's pixel can only see what happens in the browser, so anything that occurs after someone leaves your website is invisible to the algorithm unless you send that data back manually.

For B2B SaaS, this gap decides what Meta optimizes for. A prospect clicks your ad, fills out a demo form, and then the real value—the signed contract—happens weeks later in your CRM. Meta never sees that contract close. Without offline conversion data, the algorithm has no idea which ad clicks actually turned into revenue.

  • Offline conversions: Events that occur outside the browser or app where the ad was clicked

  • Examples for B2B SaaS: Demo requests completed via phone, sales calls, signed contracts, closed revenue in your CRM

Looking for Meta ads support?

We're a small, hardworking US-based team. Book a call and get a free audit today.

Get In Touch

Why B2B SaaS Advertisers Need to Track Offline Conversions

When you run Meta ads for B2B SaaS without offline conversion data, the algorithm optimizes for whatever it can see. Usually that means form fills or page views. The problem is that not all form fills are equal—some become $50K contracts while others never respond to a single sales email. MarketJoy's vendor benchmark data shows that just 6–9% of pipeline opportunities reach closed-won, so only a fraction of what enters your funnel turns into revenue.

Feeding Meta your offline conversions lets the algorithm find users who convert into real pipeline and revenue. Over time, Meta learns the patterns: which audiences, placements, and creative combinations drive actual closed deals. Without this signal, you're essentially asking Meta to optimize blindfolded, and the algorithm will happily find you more form fills that go nowhere.

Offline Conversions API vs Conversions API for Offline Events

Meta has discontinued the standalone Offline Conversions API (sometimes called OCAPI). Meta's Conversions API documentation now says it is "no longer recommended for new integrations," and Segment's documentation confirms the shutdown. If you're reading older guides or documentation, they may reference a separate system that no longer exists.

The Conversions API now handles both online and offline events through a unified system. You send offline events to the same endpoint as your server-side web events, just with different parameters that tell Meta the conversion happened offline. Same API, different configuration.

Feature

Offline Conversions API (Deprecated)

Conversions API for Offline Events

Status

Discontinued; Meta lists it as no longer recommended for new integrations

Current recommended method

Event types

Offline only

Online and offline

Integration

Separate setup

Unified with online events

How to Set Up Meta Offline Conversions in Events Manager

1. Create or Select a Dataset

Start in Events Manager and create or select a dataset; the same dataset your Pixel uses works. Name it for the source, for example "HubSpot Pipeline Events." This dataset stores all the offline conversion data you send to Meta, and a clear naming convention helps when you're managing multiple data sources.

2. Assign the Dataset to Ad Accounts

Next, link the dataset to the ad accounts you want to attribute conversions to. You can assign multiple ad accounts to one dataset, which is useful if you're running campaigns across different accounts for the same business. The connection between dataset and ad account is what allows Meta to match conversions back to specific campaigns.

3. Configure Attribution Windows

Select your click-through and view-through windows. Meta's attribution settings separate click-through (link clicks only as of Meta's March 2026 update), engage-through, and view-through. For B2B SaaS with longer sales cycles, use the longest click-through window Ads Manager offers and discount view-through conversions. Attribution windows determine how far back Meta looks when attributing an offline conversion to an ad click, so longer windows capture more of your sales cycle.

4. Verify Permissions and Dataset Access

Confirm the Business Manager admin has granted the correct permissions. You need both dataset access and ad account access for the integration to work. Missing permissions is one of the most common reasons offline events fail to appear, and it's an easy fix once you know to check for it.

How to Upload Offline Conversions to Meta With a CSV File

The CSV upload method works for testing or low-volume advertisers, though it's not ideal for ongoing use at scale. You're essentially uploading a spreadsheet of conversions manually, which gets tedious quickly.

Format the CSV File

Your columns need to include event_time, event_name, and at least one customer identifier. For identifiers, you can use email, phone, or FBCLID (the Facebook Click ID that gets appended to your landing page URLs when someone clicks an ad). Use ISO 8601 format for timestamps—that's the standard date-time format like "2024-01-15T14:30:00."

Map Required Customer Information Fields

Email addresses need to be lowercase and trimmed of whitespace. Phone numbers require country codes—+1 for US numbers, for example. Meta hashes these fields automatically on upload, but formatting errors will tank your match rate before the hashing even happens.

Upload and Review the Match Rate

After upload, Meta displays a match rate showing what percentage of events matched to Meta users. In Flighted's accounts, we treat a match rate below 30% as a formatting problem, above 50% as solid, and above 70% as excellent. These are our rules of thumb, not Meta thresholds.

If your match rate is low, check your email formatting first—that's usually the culprit. Do not use Event Match Quality to check CRM or offline events. Meta's Conversions API best practices say it is "currently available only for web events."

How to Send Offline Events Using the Conversions API

The Conversions API is Meta's recommended method for sending offline and physical store events, which makes it the right path for B2B SaaS advertisers with CRM automation. It enables real-time or near-real-time event transmission without manual uploads, so your data flows automatically as deals progress through your pipeline.

1. Configure Offline Event Parameters

The action_source parameter is required on every server event. This parameter tells Meta the event did not happen in a browser. Meta's Conversions API best practices say it tells Meta which campaign objectives an event is intended for, so do not use website for offline events.

Per Meta's server event parameters, valid values include phone_call, chat, physical_store, system_generated, and other. Meta defines system_generated as automatic conversions such as subscription renewals.

Meta's offline events guide recommends physical_store for offline and store events. Confirm which value your CRM connector sends.

2. Hash Customer Information Before Sending

Meta's customer information parameters require SHA-256 hashing for these PII (personally identifiable information) fields: em, ph, fn, ln, ct, st, zp, and country. Normalize each value first (lowercase, trimmed), then hash it. Do not send unhashed data—Meta will reject it, and you'd be exposing customer information unnecessarily.

Do not hash fbc, fbp, client_ip_address, client_user_agent, or lead_id. Most CRM integrations handle hashing automatically, but verify if you're building a custom integration.

3. Attach Custom Data and Event Value

Include event_name (use a Meta standard event such as Lead, CompleteRegistration, or Purchase rather than a custom name like "ClosedWon"; in Flighted's accounts, custom event names underperform standard events), value, and currency. For B2B SaaS, send contract value or ACV (annual contract value) as the value parameter—this data directly informs your target return on ad spend (ROAS) calculations. Including value helps Meta understand which conversions are worth more, so the algorithm can optimize toward higher-value deals.

4. Fire the Event Through the API

Send events in real time or at least daily, as Meta recommends. Meta rejects the entire request if any event_time in it is more than 7 days old. The sooner you send the event, the better your attribution accuracy.

5. Verify Events in Test Events

Meta's offline events documentation recommends the Test Events tool in Events Manager for testing your payload. Run this check before every new integration goes live:

  1. In Events Manager, open your dataset and go to Test Events.

  2. Send a payload with the test_event_code shown there.

  3. Confirm the event name, action_source, value, and currency appear as sent.

  4. Remove test_event_code before going live.

  5. Check the dataset Overview tab to confirm event volume.

How to Connect Meta Offline Conversions Through CRM Partner Integrations

Pre-built connectors require no custom code, which makes them the right path for teams without developer resources. The tradeoff is less flexibility, but for most B2B SaaS setups, the standard integrations cover what you need.

HubSpot to Meta Offline Events

HubSpot's knowledge base documents a native integration that syncs CRM lifecycle stage changes or form submissions to Meta through the Conversions API. It requires Marketing Hub Starter or higher. HubSpot doesn't document native deal-stage sync, so for deal-stage triggers like "Demo Scheduled" to "Proposal Sent," use a workflow tool or middleware.

Salesforce to Meta Offline Events

Salesforce Help documents a Meta Conversions API activation target in Salesforce Data 360 (formerly Data Cloud) that sends lead and opportunity stage changes to Meta. It requires a Data 360 license with Ad Audience entitlements.

Without Data 360, Sales Cloud teams use middleware: a Salesforce flow triggers Zapier or a custom function that sends the event to Meta. Plan for more setup than HubSpot's native connector.

Zapier and Middleware Connectors

Tools like Zapier or Segment can bridge CRM events to the Conversions API without custom development. Meta's Zapier guide shows how to send events with Zapier's Facebook Conversions app every time your data source changes. Segment offers a Facebook Conversions API (Actions) destination that sends events from your servers directly to Meta.

Set up a trigger-action workflow: when a deal closes in your CRM, send a "Purchase" event to Meta with the deal value. Meta's guide says you must match your data to its events schema, so most of the work is mapping fields.

Looking for Meta ads support?

We're a small, hardworking US-based team. Book a call and get a free audit today.

Get In Touch

Mapping B2B SaaS Pipeline Stages to Meta Offline Events

Sending the right CRM stages as events helps Meta optimize for pipeline quality, not just lead volume. The key is choosing stages that represent meaningful progression toward revenue. To qualify Meta leads for your sales team, make a human-validated stage—SQL or demo-booked—your primary optimization event instead of raw MQLs, so Meta learns from leads your reps actually accept rather than every form fill.

At Flighted, every SaaS account runs two events at minimum: a Lead event on every demo booking or trial start, and a Qualified Lead event that fires only when the lead meets a written rule. Our own rule is annual revenue of $500,000 or more.

  • MQL Events: Marketing Qualified Lead—send when a lead meets your scoring threshold, indicating they've shown enough engagement to warrant sales attention

  • SQL and Demo Booked Events: Sales Qualified Lead and demo scheduled indicate sales team engagement and are stronger signals than MQL since a human has validated the lead

  • Opportunity Created Events: When a deal enters your pipeline with an estimated value; include the opportunity value as the event value so Meta can weight it appropriately

  • Closed Won Revenue Events: The most valuable event; send this when a deal closes with the actual contract value

How to Track Closed-Won Revenue and Set Offline Conversion Value

To track closed-won revenue from Meta ads, send a Purchase event from your CRM when a deal moves to Closed Won, with the contract value in value and an ISO currency code in currency. Meta's custom data documentation requires value on purchase events and on any event used for value optimization.

  • Send opportunity value on Opportunity Created, then actual contract value or ACV on Closed Won.

  • Include the identifiers captured at lead creation (hashed email or phone, fbc click ID, or Meta lead_id) so Meta matches the deal to the click.

  • Report revenue by campaign in Ads Manager with the Purchase conversion value column.

Setting Attribution Windows for Long B2B Sales Cycles

B2B deals often take weeks or months to close, but Meta only credits conversions that land inside your selected attribution window. This creates a real limitation for longer sales cycles. As Search Engine Land reported in March 2026, Meta now counts only link clicks toward click-through attribution and renamed engaged-view to engage-through.

Vendor benchmark data from Optifai's 939-company dataset puts the median B2B SaaS sales cycle at 84 days. If your average sales cycle is 45 days, the closed-won event won't attribute to the original ad click because too much time has passed. To attribute a multi-month cycle, split the job: optimize Meta on a qualified stage that lands inside the window, send closed-won with deal value so Ads Manager shows revenue, and reconcile campaign-level pipeline in your CRM with UTMs.

Dreamdata's 2026 benchmark data (vendor data) puts the typical B2B customer journey at 272 days, up from 211, which is far past any Meta window. For the CRM side of that reconciliation, follow our step-by-step guide to closed-loop B2B SaaS attribution.

How to Deduplicate Offline and Online Conversion Events

If you track the same event both online (via Pixel) and offline (via Conversions API), Meta may double-count. The event_id parameter solves this problem.

Send the same event_id from both sources for the same conversion, and Meta will count it once. For example, if a demo form submission fires both a Pixel event and a Conversions API event, both should include an identical event_id; set the Pixel side up using our Meta Pixel implementation guide. The ID can be any unique string—a form submission ID, a CRM record ID, or a generated UUID all work fine.

Viewing Meta Offline Conversion Reporting

In Events Manager, you can view match rates and event volume for your datasets. Meta's offline events documentation says uploaded data "is processed in real time," so you can usually view results as soon as you add it. If events don't show up, check Test Events and your dataset permissions first.

In Ads Manager, add the custom conversion column to see attributed offline conversions per campaign. You'll find this under "Customize Columns" by searching for your offline event name. Once added, you can see exactly how many offline conversions each campaign, ad set, and ad generated.

Troubleshooting Low Match Rates and Missing Offline Events

When offline events aren't appearing or match rates are low, the cause is usually one of a few common issues:

  • Unhashed PII: Data sent via API requires SHA-256 hashing before transmission; unhashed data gets rejected

  • Incorrect email formatting: Emails need to be lowercase with no leading or trailing spaces; even one space breaks the match

  • Missing country codes: Phone numbers require country codes (+1 for US); domestic formatting won't match

  • Event timing delays: Meta rejects any batch with an event_time more than 7 days old, so upload in real time or at least daily

  • Permissions errors: Confirm dataset and ad account permissions in Business Manager; missing permissions is the most common fixable issue

Scale Meta Offline Conversions With Flighted

If you want offline conversions set up correctly from the start, an experienced B2B SaaS growth team can get you there faster. For Tie, a B2B SaaS client, moving Meta's optimization from raw form fills to qualified, revenue-aligned events made the account profitable within 30 days, at a month-1 Pipeline ROAS above 5x. Flighted manages over $6M in monthly Meta ad spend across B2B SaaS and DTC brands, with Meta Ads management, Creative Strategy, and Landing Page Optimization working together as one system—Paid Media Expertise, Creative Strategy, and Landing Page Design built around your pipeline, not bolted on as separate add-ons.

Book a call to talk through your current setup and where the gaps are.

Frequently Asked Questions About Meta Offline Conversions

How long does it take for offline conversions to appear in Meta Ads Manager?

Meta's offline events documentation says uploaded data "is processed in real time," so you can usually view results as soon as you add it. Meta's developer docs give no separate timeline for Ads Manager attribution, so confirm arrival in Test Events first.

Can Meta optimize campaigns toward offline CRM conversions?

Yes, for Lead Ads, through Meta's Conversion Leads optimization (Conversions API for CRM). Meta's CRM integration guide sets these fit criteria:

  • At least 200 leads per month

  • CRM uploads at least once per day

  • The target stage reached within 28 days of lead creation

  • A 1%–40% conversion rate to that stage

For website leads, optimize toward a qualified-lead event sent through the Conversions API.

What is the minimum match rate needed for offline conversions to be useful?

Meta's Conversions API docs don't set a minimum. In Flighted's accounts, we treat a match rate below 30% as a formatting problem and audit email, phone, and hashing first. Meta's best practices note that unmatched events can't be used for attribution or ad delivery optimization.

Why am I getting ad clicks but no offline conversions attributed?

This usually indicates a data formatting issue, a permissions misconfiguration, or that your offline events are occurring outside the attribution window. Also check your upload cadence: Meta rejects any batch with an event_time more than 7 days old, so upload in real time or at least daily.

How do I verify offline conversions are reaching Meta?

Use the Test Events tool in Events Manager and send a payload with the test_event_code shown there. Once events arrive as sent, remove the code and confirm event volume in your dataset's Overview tab.

How often should I upload offline conversions to Meta?

Upload in real time or at least daily. Meta rejects any batch that includes an event_time more than 7 days old.

What CRM data should I send to Meta for offline conversions?

Send event_name, event_time (as a Unix timestamp), action_source, event_id, hashed em and ph, and fbc or lead_id. Add value and currency inside custom_data for any event that carries deal value.

How do I set the value of an offline conversion in Meta?

Pass the deal amount in value and the ISO currency code in currency on the Purchase or closed-won event.

Meta offline conversions let you send conversion data from outside the browser—customer relationship management (CRM) stage changes, signed contracts, closed revenue—back to Meta so the algorithm can optimize for actual business outcomes instead of just form fills. For B2B SaaS, where the real value happens weeks after the ad click in your sales pipeline, this is the difference between Meta finding you more leads and Meta finding you more revenue.

This guide covers how to set up offline event tracking, connect your CRM to Meta's Conversions API, map your pipeline stages to events, and troubleshoot the most common issues that tank match rates.

Key Takeaways

  1. Meta offline conversions are conversion events that happen outside the browser—sales calls, signed contracts, closed revenue in your CRM—that you send back to Meta so the algorithm can optimize for real business outcomes.

  2. Without offline conversion data, Meta optimizes for shallow events like form fills instead of pipeline and revenue, which creates problems for B2B SaaS with long sales cycles.

  3. Meta has discontinued the standalone Offline Conversions API, as Segment's documentation confirms. You now send offline events through the Conversions API with specific offline parameters.

  4. For B2B SaaS, map your CRM pipeline stages (marketing qualified lead (MQL), sales qualified lead (SQL), Opportunity, Closed Won) to Meta events so the algorithm learns which ad clicks lead to actual revenue.

  5. Upload offline events in real time or at least daily. Meta rejects any batch that includes an event_time more than 7 days old.

What Are Meta Offline Conversions

Meta offline conversions are conversion events that happen outside of browser-based tracking. Think phone calls, in-person meetings, CRM stage changes, and closed-won deals. Meta's pixel can only see what happens in the browser, so anything that occurs after someone leaves your website is invisible to the algorithm unless you send that data back manually.

For B2B SaaS, this gap decides what Meta optimizes for. A prospect clicks your ad, fills out a demo form, and then the real value—the signed contract—happens weeks later in your CRM. Meta never sees that contract close. Without offline conversion data, the algorithm has no idea which ad clicks actually turned into revenue.

  • Offline conversions: Events that occur outside the browser or app where the ad was clicked

  • Examples for B2B SaaS: Demo requests completed via phone, sales calls, signed contracts, closed revenue in your CRM

Looking for Meta ads support?

We're a small, hardworking US-based team. Book a call and get a free audit today.

Get In Touch

Why B2B SaaS Advertisers Need to Track Offline Conversions

When you run Meta ads for B2B SaaS without offline conversion data, the algorithm optimizes for whatever it can see. Usually that means form fills or page views. The problem is that not all form fills are equal—some become $50K contracts while others never respond to a single sales email. MarketJoy's vendor benchmark data shows that just 6–9% of pipeline opportunities reach closed-won, so only a fraction of what enters your funnel turns into revenue.

Feeding Meta your offline conversions lets the algorithm find users who convert into real pipeline and revenue. Over time, Meta learns the patterns: which audiences, placements, and creative combinations drive actual closed deals. Without this signal, you're essentially asking Meta to optimize blindfolded, and the algorithm will happily find you more form fills that go nowhere.

Offline Conversions API vs Conversions API for Offline Events

Meta has discontinued the standalone Offline Conversions API (sometimes called OCAPI). Meta's Conversions API documentation now says it is "no longer recommended for new integrations," and Segment's documentation confirms the shutdown. If you're reading older guides or documentation, they may reference a separate system that no longer exists.

The Conversions API now handles both online and offline events through a unified system. You send offline events to the same endpoint as your server-side web events, just with different parameters that tell Meta the conversion happened offline. Same API, different configuration.

Feature

Offline Conversions API (Deprecated)

Conversions API for Offline Events

Status

Discontinued; Meta lists it as no longer recommended for new integrations

Current recommended method

Event types

Offline only

Online and offline

Integration

Separate setup

Unified with online events

How to Set Up Meta Offline Conversions in Events Manager

1. Create or Select a Dataset

Start in Events Manager and create or select a dataset; the same dataset your Pixel uses works. Name it for the source, for example "HubSpot Pipeline Events." This dataset stores all the offline conversion data you send to Meta, and a clear naming convention helps when you're managing multiple data sources.

2. Assign the Dataset to Ad Accounts

Next, link the dataset to the ad accounts you want to attribute conversions to. You can assign multiple ad accounts to one dataset, which is useful if you're running campaigns across different accounts for the same business. The connection between dataset and ad account is what allows Meta to match conversions back to specific campaigns.

3. Configure Attribution Windows

Select your click-through and view-through windows. Meta's attribution settings separate click-through (link clicks only as of Meta's March 2026 update), engage-through, and view-through. For B2B SaaS with longer sales cycles, use the longest click-through window Ads Manager offers and discount view-through conversions. Attribution windows determine how far back Meta looks when attributing an offline conversion to an ad click, so longer windows capture more of your sales cycle.

4. Verify Permissions and Dataset Access

Confirm the Business Manager admin has granted the correct permissions. You need both dataset access and ad account access for the integration to work. Missing permissions is one of the most common reasons offline events fail to appear, and it's an easy fix once you know to check for it.

How to Upload Offline Conversions to Meta With a CSV File

The CSV upload method works for testing or low-volume advertisers, though it's not ideal for ongoing use at scale. You're essentially uploading a spreadsheet of conversions manually, which gets tedious quickly.

Format the CSV File

Your columns need to include event_time, event_name, and at least one customer identifier. For identifiers, you can use email, phone, or FBCLID (the Facebook Click ID that gets appended to your landing page URLs when someone clicks an ad). Use ISO 8601 format for timestamps—that's the standard date-time format like "2024-01-15T14:30:00."

Map Required Customer Information Fields

Email addresses need to be lowercase and trimmed of whitespace. Phone numbers require country codes—+1 for US numbers, for example. Meta hashes these fields automatically on upload, but formatting errors will tank your match rate before the hashing even happens.

Upload and Review the Match Rate

After upload, Meta displays a match rate showing what percentage of events matched to Meta users. In Flighted's accounts, we treat a match rate below 30% as a formatting problem, above 50% as solid, and above 70% as excellent. These are our rules of thumb, not Meta thresholds.

If your match rate is low, check your email formatting first—that's usually the culprit. Do not use Event Match Quality to check CRM or offline events. Meta's Conversions API best practices say it is "currently available only for web events."

How to Send Offline Events Using the Conversions API

The Conversions API is Meta's recommended method for sending offline and physical store events, which makes it the right path for B2B SaaS advertisers with CRM automation. It enables real-time or near-real-time event transmission without manual uploads, so your data flows automatically as deals progress through your pipeline.

1. Configure Offline Event Parameters

The action_source parameter is required on every server event. This parameter tells Meta the event did not happen in a browser. Meta's Conversions API best practices say it tells Meta which campaign objectives an event is intended for, so do not use website for offline events.

Per Meta's server event parameters, valid values include phone_call, chat, physical_store, system_generated, and other. Meta defines system_generated as automatic conversions such as subscription renewals.

Meta's offline events guide recommends physical_store for offline and store events. Confirm which value your CRM connector sends.

2. Hash Customer Information Before Sending

Meta's customer information parameters require SHA-256 hashing for these PII (personally identifiable information) fields: em, ph, fn, ln, ct, st, zp, and country. Normalize each value first (lowercase, trimmed), then hash it. Do not send unhashed data—Meta will reject it, and you'd be exposing customer information unnecessarily.

Do not hash fbc, fbp, client_ip_address, client_user_agent, or lead_id. Most CRM integrations handle hashing automatically, but verify if you're building a custom integration.

3. Attach Custom Data and Event Value

Include event_name (use a Meta standard event such as Lead, CompleteRegistration, or Purchase rather than a custom name like "ClosedWon"; in Flighted's accounts, custom event names underperform standard events), value, and currency. For B2B SaaS, send contract value or ACV (annual contract value) as the value parameter—this data directly informs your target return on ad spend (ROAS) calculations. Including value helps Meta understand which conversions are worth more, so the algorithm can optimize toward higher-value deals.

4. Fire the Event Through the API

Send events in real time or at least daily, as Meta recommends. Meta rejects the entire request if any event_time in it is more than 7 days old. The sooner you send the event, the better your attribution accuracy.

5. Verify Events in Test Events

Meta's offline events documentation recommends the Test Events tool in Events Manager for testing your payload. Run this check before every new integration goes live:

  1. In Events Manager, open your dataset and go to Test Events.

  2. Send a payload with the test_event_code shown there.

  3. Confirm the event name, action_source, value, and currency appear as sent.

  4. Remove test_event_code before going live.

  5. Check the dataset Overview tab to confirm event volume.

How to Connect Meta Offline Conversions Through CRM Partner Integrations

Pre-built connectors require no custom code, which makes them the right path for teams without developer resources. The tradeoff is less flexibility, but for most B2B SaaS setups, the standard integrations cover what you need.

HubSpot to Meta Offline Events

HubSpot's knowledge base documents a native integration that syncs CRM lifecycle stage changes or form submissions to Meta through the Conversions API. It requires Marketing Hub Starter or higher. HubSpot doesn't document native deal-stage sync, so for deal-stage triggers like "Demo Scheduled" to "Proposal Sent," use a workflow tool or middleware.

Salesforce to Meta Offline Events

Salesforce Help documents a Meta Conversions API activation target in Salesforce Data 360 (formerly Data Cloud) that sends lead and opportunity stage changes to Meta. It requires a Data 360 license with Ad Audience entitlements.

Without Data 360, Sales Cloud teams use middleware: a Salesforce flow triggers Zapier or a custom function that sends the event to Meta. Plan for more setup than HubSpot's native connector.

Zapier and Middleware Connectors

Tools like Zapier or Segment can bridge CRM events to the Conversions API without custom development. Meta's Zapier guide shows how to send events with Zapier's Facebook Conversions app every time your data source changes. Segment offers a Facebook Conversions API (Actions) destination that sends events from your servers directly to Meta.

Set up a trigger-action workflow: when a deal closes in your CRM, send a "Purchase" event to Meta with the deal value. Meta's guide says you must match your data to its events schema, so most of the work is mapping fields.

Looking for Meta ads support?

We're a small, hardworking US-based team. Book a call and get a free audit today.

Get In Touch

Mapping B2B SaaS Pipeline Stages to Meta Offline Events

Sending the right CRM stages as events helps Meta optimize for pipeline quality, not just lead volume. The key is choosing stages that represent meaningful progression toward revenue. To qualify Meta leads for your sales team, make a human-validated stage—SQL or demo-booked—your primary optimization event instead of raw MQLs, so Meta learns from leads your reps actually accept rather than every form fill.

At Flighted, every SaaS account runs two events at minimum: a Lead event on every demo booking or trial start, and a Qualified Lead event that fires only when the lead meets a written rule. Our own rule is annual revenue of $500,000 or more.

  • MQL Events: Marketing Qualified Lead—send when a lead meets your scoring threshold, indicating they've shown enough engagement to warrant sales attention

  • SQL and Demo Booked Events: Sales Qualified Lead and demo scheduled indicate sales team engagement and are stronger signals than MQL since a human has validated the lead

  • Opportunity Created Events: When a deal enters your pipeline with an estimated value; include the opportunity value as the event value so Meta can weight it appropriately

  • Closed Won Revenue Events: The most valuable event; send this when a deal closes with the actual contract value

How to Track Closed-Won Revenue and Set Offline Conversion Value

To track closed-won revenue from Meta ads, send a Purchase event from your CRM when a deal moves to Closed Won, with the contract value in value and an ISO currency code in currency. Meta's custom data documentation requires value on purchase events and on any event used for value optimization.

  • Send opportunity value on Opportunity Created, then actual contract value or ACV on Closed Won.

  • Include the identifiers captured at lead creation (hashed email or phone, fbc click ID, or Meta lead_id) so Meta matches the deal to the click.

  • Report revenue by campaign in Ads Manager with the Purchase conversion value column.

Setting Attribution Windows for Long B2B Sales Cycles

B2B deals often take weeks or months to close, but Meta only credits conversions that land inside your selected attribution window. This creates a real limitation for longer sales cycles. As Search Engine Land reported in March 2026, Meta now counts only link clicks toward click-through attribution and renamed engaged-view to engage-through.

Vendor benchmark data from Optifai's 939-company dataset puts the median B2B SaaS sales cycle at 84 days. If your average sales cycle is 45 days, the closed-won event won't attribute to the original ad click because too much time has passed. To attribute a multi-month cycle, split the job: optimize Meta on a qualified stage that lands inside the window, send closed-won with deal value so Ads Manager shows revenue, and reconcile campaign-level pipeline in your CRM with UTMs.

Dreamdata's 2026 benchmark data (vendor data) puts the typical B2B customer journey at 272 days, up from 211, which is far past any Meta window. For the CRM side of that reconciliation, follow our step-by-step guide to closed-loop B2B SaaS attribution.

How to Deduplicate Offline and Online Conversion Events

If you track the same event both online (via Pixel) and offline (via Conversions API), Meta may double-count. The event_id parameter solves this problem.

Send the same event_id from both sources for the same conversion, and Meta will count it once. For example, if a demo form submission fires both a Pixel event and a Conversions API event, both should include an identical event_id; set the Pixel side up using our Meta Pixel implementation guide. The ID can be any unique string—a form submission ID, a CRM record ID, or a generated UUID all work fine.

Viewing Meta Offline Conversion Reporting

In Events Manager, you can view match rates and event volume for your datasets. Meta's offline events documentation says uploaded data "is processed in real time," so you can usually view results as soon as you add it. If events don't show up, check Test Events and your dataset permissions first.

In Ads Manager, add the custom conversion column to see attributed offline conversions per campaign. You'll find this under "Customize Columns" by searching for your offline event name. Once added, you can see exactly how many offline conversions each campaign, ad set, and ad generated.

Troubleshooting Low Match Rates and Missing Offline Events

When offline events aren't appearing or match rates are low, the cause is usually one of a few common issues:

  • Unhashed PII: Data sent via API requires SHA-256 hashing before transmission; unhashed data gets rejected

  • Incorrect email formatting: Emails need to be lowercase with no leading or trailing spaces; even one space breaks the match

  • Missing country codes: Phone numbers require country codes (+1 for US); domestic formatting won't match

  • Event timing delays: Meta rejects any batch with an event_time more than 7 days old, so upload in real time or at least daily

  • Permissions errors: Confirm dataset and ad account permissions in Business Manager; missing permissions is the most common fixable issue

Scale Meta Offline Conversions With Flighted

If you want offline conversions set up correctly from the start, an experienced B2B SaaS growth team can get you there faster. For Tie, a B2B SaaS client, moving Meta's optimization from raw form fills to qualified, revenue-aligned events made the account profitable within 30 days, at a month-1 Pipeline ROAS above 5x. Flighted manages over $6M in monthly Meta ad spend across B2B SaaS and DTC brands, with Meta Ads management, Creative Strategy, and Landing Page Optimization working together as one system—Paid Media Expertise, Creative Strategy, and Landing Page Design built around your pipeline, not bolted on as separate add-ons.

Book a call to talk through your current setup and where the gaps are.

Frequently Asked Questions About Meta Offline Conversions

How long does it take for offline conversions to appear in Meta Ads Manager?

Meta's offline events documentation says uploaded data "is processed in real time," so you can usually view results as soon as you add it. Meta's developer docs give no separate timeline for Ads Manager attribution, so confirm arrival in Test Events first.

Can Meta optimize campaigns toward offline CRM conversions?

Yes, for Lead Ads, through Meta's Conversion Leads optimization (Conversions API for CRM). Meta's CRM integration guide sets these fit criteria:

  • At least 200 leads per month

  • CRM uploads at least once per day

  • The target stage reached within 28 days of lead creation

  • A 1%–40% conversion rate to that stage

For website leads, optimize toward a qualified-lead event sent through the Conversions API.

What is the minimum match rate needed for offline conversions to be useful?

Meta's Conversions API docs don't set a minimum. In Flighted's accounts, we treat a match rate below 30% as a formatting problem and audit email, phone, and hashing first. Meta's best practices note that unmatched events can't be used for attribution or ad delivery optimization.

Why am I getting ad clicks but no offline conversions attributed?

This usually indicates a data formatting issue, a permissions misconfiguration, or that your offline events are occurring outside the attribution window. Also check your upload cadence: Meta rejects any batch with an event_time more than 7 days old, so upload in real time or at least daily.

How do I verify offline conversions are reaching Meta?

Use the Test Events tool in Events Manager and send a payload with the test_event_code shown there. Once events arrive as sent, remove the code and confirm event volume in your dataset's Overview tab.

How often should I upload offline conversions to Meta?

Upload in real time or at least daily. Meta rejects any batch that includes an event_time more than 7 days old.

What CRM data should I send to Meta for offline conversions?

Send event_name, event_time (as a Unix timestamp), action_source, event_id, hashed em and ph, and fbc or lead_id. Add value and currency inside custom_data for any event that carries deal value.

How do I set the value of an offline conversion in Meta?

Pass the deal amount in value and the ISO currency code in currency on the Purchase or closed-won event.

Want this run for your SaaS company?

Flighted runs Meta ads, creative and landing pages for B2B SaaS companies, measured on qualified pipeline.

Flighted

Flighted is the operating brand of Peter Czepiga LLC, a New York City-based performance marketing agency.

New York, NY 11217

hello@flighted.co

© Flighted, 2026

Flighted

Flighted is the operating brand of Peter Czepiga LLC, a New York City-based performance marketing agency.

New York, NY 11217

hello@flighted.co

© Flighted, 2026