
Quick Answer: There's no standalone Offline Conversions API anymore. Meta shut its version down in May 2025, and offline events now go through the regular Conversions API with an action_source such as physical_store or system_generated. Google moved offline conversion imports and enhanced conversions for leads to the Data Manager API and stopped accepting them in the Google Ads API from June 15, 2026. For a Shopify brand, offline conversions are the orders that don't come from your online checkout: POS sales, phone and draft orders, wholesale, and subscription renewals. Sending the right ones back, matched on customer data, lets ad platforms credit and optimize toward sales they'd otherwise never see.
Key Takeaways
- Meta discontinued its Offline Conversions API in May 2025. Offline sales now go through the same Conversions API as your web events, tagged with the right action_source.
- Google now routes offline conversion imports and enhanced conversions for leads through the Data Manager API. The Google Ads API stopped accepting them on June 15, 2026.
- Not every offline order deserves to be sent. POS and phone sales from ad-influenced customers usually do. Automatic subscription renewals and wholesale orders usually don't belong in your optimization signal.
- Offline events live or die on match quality. With no browser cookie to lean on, the email or phone number you capture at the point of sale is what connects a sale to an ad.
- Speed matters. Ad platforms accept late uploads within a window, but the algorithm learns faster from sales sent daily or in real time.
I still get asked how to "set up the Offline Conversions API." The honest answer is that you can't, because it doesn't exist anymore. Meta and Google both retired their dedicated offline pipelines and folded them into their main APIs.
The need didn't go away, though. If you run a retail store, pop-ups, a phone line, or subscriptions, a real share of your revenue happens where no pixel will ever see it. Your ad platforms are optimizing as if those sales never happened, and they're making budget decisions on that basis.
What counts as an offline conversion for a Shopify brand?
Any order that doesn't come through your online store checkout. For most DTC brands that means four kinds of sales.
POS sales. A customer sees your ad on Instagram, then buys at your store or a weekend pop-up through Shopify POS.
Phone and chat orders. Your team builds the order as a draft order and sends an invoice or takes payment directly.
Wholesale and B2B orders. A retailer places a bulk order, often through Shopify B2B or a separate app.
Subscription renewals. A customer's subscription app charges them automatically every month.
Shopify records all of these as orders, and you can see which channel each one came from. Your browser pixel sees none of them, because there's no browser session for it to watch.
What happened to the Offline Conversions API?
Both major platforms changed course, about a year apart.
Meta discontinued the Offline Conversions API in May 2025, along with offline event sets. Offline sales now go through the standard Conversions API into the same dataset as your web events. The difference is the action_source field: physical_store for in-store and phone sales, and system_generated for events your systems create automatically. Meta accepts most offline events within a limited window after they happen, with a longer window for physical_store events, but the value of the data drops the later it arrives.
Google made Data Manager its primary route for offline conversions. Starting June 15, 2026, offline conversion imports and enhanced conversions for leads uploads are blocked in the Google Ads API and handled through the Data Manager API or Google Ads Data Manager. Google recommends enhanced conversions for leads over the legacy import, since it adds hashed customer data like email alongside the click ID (GCLID) for more accurate matching. Store sales measurement was added to the Data Manager API in May 2026 as well.
If someone on your team built an offline upload a few years ago and nobody has touched it since, check it. Meta's old route stopped working entirely, and practitioners have reported setups where events still showed as accepted but never reached campaign reporting.
Offline Conversions on Meta vs. Google in 2026
| Meta | Google Ads | |
|---|---|---|
| Old route | Offline Conversions API and offline event sets, discontinued May 2025 | Offline conversion import and enhanced conversions for leads via the Google Ads API |
| Current route | Conversions API, same dataset as web events | Data Manager API or Google Ads Data Manager |
| How a sale gets matched to an ad | Hashed customer data such as email, phone, and name, plus event time | GCLID where available, plus hashed customer data with enhanced conversions for leads |
| Key field to get right | action_source: physical_store or system_generated | The offline conversion action the upload maps to |
| Typical Shopify use | POS and pop-up sales, phone orders | POS and phone sales from customers who clicked a Google ad |
| Main thing to watch | Upload windows and late data losing optimization value | New offline setups must use Data Manager since June 15, 2026 |
Which offline orders should you actually send?
This is where I disagree with a lot of setup guides. They treat "send everything" as the goal. It isn't. You're not reporting revenue to your accountant. You're teaching an ad algorithm what a good customer looks like, so send the sales where an ad plausibly influenced the purchase and you can identify the customer.
Usually send: POS and pop-up purchases where you captured an email or phone number, and phone orders from customers who found you through ads. These are real conversions your campaigns may have driven, and right now they get zero credit.
Think twice about subscription renewals. An automatic charge in month seven isn't a decision your ads drove. Sending every renewal as a Purchase tells Meta its ads are producing sales they aren't, which inflates ROAS and can pull optimization toward the wrong people. If you want renewal data in the platform, send it as a separate event so your campaigns don't optimize toward it by default.
Usually leave out wholesale. One retailer's bulk order can dwarf a week of DTC sales. Dropping that into your Purchase signal skews value-based bidding and makes campaign ROAS meaningless.
Why match quality decides whether any of this works
Online events come with browser signals like cookies and click IDs. Offline events usually don't. Meta and Google have to match the sale to a person using whatever customer data you send, which mostly means email, phone number, name, and location.
That makes your point of sale part of your ecommerce conversion tracking setup, whether anyone planned it that way or not. A POS checkout that offers digital receipts by email, a loyalty sign-up, or staff who ask for a phone number all raise your match rate. A store that rings people up anonymously is sending ad platforms sales they can't connect to anyone.
Two technical details matter here as well. Hash customer data the way each platform expects, and use the Shopify order ID as the event ID so the same order never gets counted twice if an upload runs again.
How do you set up offline conversions on Shopify?
- Size the opportunity first. In Shopify admin, filter orders by sales channel and see how much revenue comes from POS, draft orders, and other non-online channels. If it's a rounding error, this can wait. If it's 15 or 20 percent of revenue, your ad platforms are working blind on a meaningful slice of your business.
- Decide what to send. Use the rules above. Write them down so whoever maintains the setup later doesn't start sending renewals by accident.
- Capture identifiers at the point of sale. Email receipts, loyalty programs, and phone numbers on draft orders all count.
- Choose how the data gets there. Options include automation tools like Zapier or Make, CRM connectors, a custom integration built on Shopify webhooks, or a server-side tracking platform that already handles your web events.
- Send to Meta through the Conversions API with the correct action_source, real order value, and the order ID as the event ID.
- Send to Google through Data Manager, mapped to an offline conversion action, ideally using enhanced conversions for leads.
- Verify, then automate. Check the offline data quality indicator in Meta Events Manager and the conversion action diagnostics in Google Ads. Once events are flowing correctly, send them daily or in real time rather than in monthly batches.
What changes in your reports once offline data flows?
Campaigns that drive in-store or phone sales start getting credit for them, so reported ROAS on those campaigns rises. That's not inflation if you've been selective about what you send. It's the platform finally seeing sales that were always there.
Your ad platforms will also start claiming some orders Shopify already counted under POS or draft orders. That's expected, and it's another reason platform totals and Shopify totals will never line up perfectly. Shopify counts orders. Ad platforms count the orders they believe their ads influenced.
Common mistakes to avoid
- Running an offline upload built for the old API. Meta's Offline Conversions API is gone, and on Google new offline setups belong in Data Manager.
- Sending every order type as a Purchase. Renewals and wholesale distort the signal your campaigns optimize toward.
- Uploading in monthly batches. Late data teaches the algorithm slowly, and some of it may fall outside the upload window entirely.
- Skipping customer identifiers at POS. Without an email or phone number, an offline sale can't be matched to anyone.
- Forgetting the event ID. Use the Shopify order ID so a re-run upload doesn't double count sales.
- Setting the wrong action_source on Meta. Website and offline events need different values, and getting it wrong affects how Meta uses the data.
FAQ
Does the Meta Offline Conversions API still exist? No. Meta discontinued it in May 2025. Offline events now go through the standard Conversions API, tagged with an action_source such as physical_store or system_generated.
How do I send offline conversions to Google Ads in 2026? Through the Data Manager API or Google Ads Data Manager. Since June 15, 2026, offline conversion imports and enhanced conversions for leads uploads are blocked in the Google Ads API. Google recommends enhanced conversions for leads over the legacy offline import.
What counts as an offline conversion on Shopify? Any order that doesn't come through your online store checkout, such as Shopify POS sales, phone or draft orders, wholesale orders, and subscription renewals.
Should I send subscription renewals to Meta as purchases? Usually not as your main Purchase event. Automatic renewals aren't driven by ads, so sending them as purchases can inflate ROAS and steer optimization the wrong way. If you want the data in Meta, send it as a separate event.
Why aren't my offline conversions matching to ads? Most often because the events don't include enough customer data. Offline events have no browser cookies, so matching depends on hashed email, phone number, and name. Capturing those at the point of sale raises your match rate.
How fast should I upload offline conversions? Daily or in real time if you can. Platforms accept late events within a set window, but the sooner the data arrives, the sooner campaigns can learn from it.
Sources
[1] Zapier Help Center, "Changes impacting Facebook Offline Conversions users,"
[2] Google Ads Help, "About offline conversion imports,"
[3] Google Ads Help, "About enhanced conversions for leads,"
[4] PPC Land, "Google blocks new offline conversion imports via Ads API from June 15,"
[5] AdAdvisor, "Offline conversions,"
Related reading

Try Aimerce Pixel Risk-Free
for 30 Days
Most teams see results within 2 weeks.
Money-back guarantee.
It pays for itself, or you don't pay anything.
30-Day Aimerce Pixel Free Trial