Conversions API vs Offline Conversion Import: Server Events or Batch Uploads
In short: Both exist to get a conversion to the ad platform when the browser alone can't be trusted to report it. Conversions API streams events from your server to Meta close to real time, mainly to cover purchases and leads that browser-based tracking is losing to blockers and tracking prevention. Offline Conversion Import is a batch upload, usually into Google Ads, that reconnects an outcome that happened well after the click - a signed contract, a closed sale - back to the gclid that started it. Pick CAPI when the gap is signal loss in the browser; pick offline import when the gap is time, the sale just hasn't happened yet at click time.
By the AdFlint research team · Fact-checked against current Google and Meta platform behavior · Last reviewed July 2026
Conversions API
Sends conversion events to Meta from your server or CRM instead of the visitor's browser, bypassing client-side signal loss.
Your backend posts events straight to Meta's endpoint with hashed customer parameters and the browser identifiers fbp and fbc for matching. You add it because pixel-only setups lose events to blockers and tracking prevention, and because server events can carry offline or delayed outcomes. Send the same event from both sources with a shared event_id so Meta deduplicates; skip that and you will double-count purchases and mislead the bidding system.
Full definitionOffline Conversion Import
Uploads conversions that happened outside the website, such as a signed contract or a phone sale, back to the ad platform.
You store the click identifier, gclid for Google or the lead's hashed details, capture the outcome in your CRM, then upload conversion time and value so bidding learns which clicks produced revenue. It is essential for anything with a sales cycle. Uploads fail most often on window and timezone problems: a conversion recorded after the click-through window closes, or timestamps submitted in the wrong account timezone, is discarded.
Full definitionSide by side.
The differences that actually change what happens in your account.
| Conversions API | Offline Conversion Import | |
|---|---|---|
| What triggers the send | An event happening on your server or in your CRM in the moment - a purchase, a lead, an app action. | A scheduled or manual export of outcomes that already closed in your CRM. |
| Timing | Near real time, typically seconds after the event. | Delayed by design, often days or weeks after the original click. |
| Matching key | Hashed customer parameters plus the browser identifiers fbp and fbc. | The click identifier captured at click time, or hashed lead details tied to that click. |
| Primary destination | Meta's ad account, feeding pixel-parallel bidding signals. | Google Ads, feeding Smart Bidding with revenue from clicks that converted offline. |
| Event scope | Any funnel event you choose to send - view, add to cart, purchase, lead. | Typically just the outcome you've defined as the conversion action, not every step. |
| Runs alongside | A client-side pixel, deduplicated using a shared event_id. | No client-side counterpart; it's a standalone upload. |
| Failure mode | Missing or mismatched event_id causes the same action to be counted twice. | A conversion recorded after the window closes, or a timestamp in the wrong timezone, gets silently discarded. |
What actually separates them.
CAPI fires automatically the moment an event happens on your server; offline import is a batch of rows describing things that already happened, sent on whatever schedule you run.
CAPI matches to a person using hashed identifiers plus browser cookies; offline import matches to a click using the click identifier or hashed lead details captured at that click.
CAPI is built to run in parallel with a client-side pixel and dedupe against it using a shared event ID; offline import has no client-side counterpart to reconcile against.
CAPI can carry any event type across the funnel; offline import is typically scoped to the single outcome you've defined as the conversion action.
A CAPI mistake tends to double-count an event that already arrived from the pixel; an offline import mistake tends to drop the row entirely so the conversion never posts at all.
Which one should you use?
Use Conversions API when
- You're running Meta ads and losing purchases to browser tracking prevention or ad blockers.
- Your backend already fires webhooks on key events like purchase or signup completion.
- You want redundancy against pixel data loss without waiting on a sales cycle to close.
- You need same-day event data flowing so bidding keeps optimizing on fresh signal.
Use Offline Conversion Import when
- Sales close in a CRM days or weeks after the ad click - B2B deals, financed purchases, quoted work.
- You run Google Ads and need bidding to learn from real revenue instead of a proxy like a form submission.
- A lead qualifies or disqualifies on a phone call, somewhere the website can never see.
- You want Smart Bidding to favor the clicks that actually became paying customers, not just the ones that filled out a form.
Common questions.
Can I use Conversions API and Offline Conversion Import together?
Yes, they usually apply to different platforms and don't conflict - CAPI feeds Meta's ad account with real-time events, while offline import feeds Google Ads with delayed outcomes tied to a gclid. Most businesses running both platforms end up using both mechanisms for their respective destinations.
Why didn't my offline conversion show up after uploading?
The two most common causes are the conversion window closing before the outcome was recorded, or the timestamp being submitted in the wrong account timezone. Both cause the platform to silently discard the row rather than post it, so check the original click date against the window length first.
Does Conversions API replace the Meta pixel?
No, it's meant to run alongside the pixel, not instead of it. The two channels send the same events from different sources and dedupe against each other using a shared event ID, which gives you coverage when either the browser or the server-side path individually misses something.
How fresh does an offline upload need to be to actually influence bidding?
Upload as soon as the outcome is known. Automated bid strategies weight recent data most heavily, so a batch uploaded months after the click helps your reporting look complete but arrives too late to meaningfully shift the bidding decisions that were already made near that click.
Or stop choosing between them.
AdFlint picks the setting, writes the ads, and keeps optimizing inside the Google and Meta accounts you already own.
Related comparisons
- Conversions API vs Meta Pixel
- Google Tag vs Meta Pixel
- Google Tag Manager vs Meta Pixel
- Meta Pixel vs Server-Side Tagging
- Enhanced Conversions for Leads vs Meta Pixel
- GA4 Conversion Tracking vs Meta Pixel
- Conversions API vs Google Tag Manager
- Conversions API vs Server-Side Tagging