Login
ZappushZappush Docs
The dashboardConnections

Offline Conversions

Record sales that happen away from your website, one at a time, in bulk, or automatically from Shopify POS, so they count in your reporting and reach Meta like any other purchase.

Not every sale happens on your website. A shopper buys in your store, calls in an order, or pays you at a market stall. Offline conversions let you record those sales, so they count in your reporting and reach Meta the same way an online purchase does. That gives Meta your real sales picture instead of only the online slice, so your ads keep learning from all of your customers, not just the ones who checked out online.

Where to find it

Everything lives under your Meta pixel. Open Connections → Destinations → Meta → your pixel and go to its Offline conversions tab. The tab shows on plans that include offline conversions, and holds four sections, top to bottom:

  • Setup: the one-time setup (below).
  • Record a sale: enter one sale as it happens.
  • Bulk upload: send many sales at once from a spreadsheet.
  • History: every upload and what happened to it.

You can also record a single sale without leaving your orders: the Orders page has a Record offline sale button that opens the same form in a side panel.

Turn it on first

The Setup section walks you through a short setup. Recording stays switched off until it is done:

  1. Confirm you have permission. Tick the box confirming you have the rights and consent to share this customer data with Meta. Nothing below unlocks until you do.
  2. Enable offline conversions. Flip the switch to start sending offline sales to Meta as you record them.
  3. Choose where they land. Pick the dataset your offline sales go to. Leave it empty to use the pixel shown as the placeholder.
  4. Set up automatic Shopify sales (optional). Covered under Let Shopify sales flow in automatically.

Until the switch is on and a destination is chosen, offline conversions are set up but nothing is sent. The setup panel tells you plainly when everything is live.

Three ways to record a sale

  • One at a time. Fill in a sale as it happens, from the Record a sale section or the Record offline sale button on your Orders page.
  • In bulk. Upload a spreadsheet of many sales at once from the Bulk upload section.
  • Automatically from Shopify. In-store sales from Shopify count as offline by default, and phone orders can too, with nothing to re-enter.

All three produce the same result: a real order in your reporting, attached to a real shopper, sent to Meta as a purchase.

Record a single sale

Fill in the sale as it happens. A few things about the fields:

  • Order or receipt number. Every sale needs its own number. The same number cannot be submitted twice; Zappush blocks the repeat rather than recording it again.
  • Email or phone number. At least one is required. This is what lets the sale be matched to a shopper. Adding more, like their name, city, or postcode, improves the match further.
  • Sale date and time, value, and currency.

If the shopper already exists in your records, search for them first and their details fill in for you. The matched fields lock so you do not overwrite what is on file; the shopper's card above the form shows who the sale is attached to.

If a shopper has opted out of marketing, check that box on the form. The sale still records and shows up in your reporting; it is simply left out of anything Zappush sends to Meta.

Upload sales in bulk

To record many sales at once, upload a spreadsheet instead of entering them one by one, from the Bulk upload section:

  1. Download the template. It has one column for each field a sale needs.
  2. Fill in one row per sale and save the file as a CSV.
  3. Upload the file.

Zappush checks every row before anything is submitted, and shows you which rows are Ready and which are Quarantined, along with the reason for each: a missing email and phone, a repeated order number, a sale already on file, or a sale outside the recording window. It also estimates how many rows Meta will be able to match. Fix the file and re-upload if you need to. Nothing reaches Meta until you confirm.

The row list shows each row's number, order ID, outcome, and reason. An outcome is Ready (will send), Quarantined (fixable, and skipped for now), Failed (could not be processed), or Sent (delivered to Meta). When an upload has more rows than fit, View all opens the full list in a full-screen view, where you can search by order ID or reason and filter by outcome.

The History section keeps a record of every upload and what happened to it. It lists the newest first, with the file name, when you uploaded it, its status, and how many rows were ready or quarantined. Search by file name, filter by status, or sort by upload time or row count. Open Display to also show a count of duplicate rows. For an upload with quarantined or failed rows, the menu on its row has Download error report.

Let Shopify sales flow in automatically

If you sell through Shopify, your in-store sales reach your offline destination on their own, so you never re-enter them. Meta receives exactly one purchase for each, never two.

In-store sales follow the in-store setting in the Orders section of your Shopify source (Connections → Sources → Shopify). It sends them to your offline destination by default, whether or not pos is on the allowlist below. Change it there to count in-store sales as regular purchases instead, or to stop sending them. An in-store sale at or below your minimum order value, set in the same section, is not sent.

If your store has no offline destination set up, in-store sales are not sent anywhere. The in-store row in the Orders section says so and links straight to this setup.

Other order sources, such as phone orders, still follow the Offline source allowlist in the setup panel. List the Shopify order sources that should count as offline. Zappush suggests the usual ones to start (pos, phone); add or remove entries to match how your store is set up, then save. From then on, a new order from one of those sources is recorded as an offline sale and sent to your offline destination, instead of being treated as a website order.

Draft orders do not use the allowlist. They follow the draft row in the Orders section of your Shopify source.

The allowlist applies to orders that sync after you save it. It does not reach back and reclassify orders already imported.

Review carefully: submitted sales are final

Once you submit an offline sale, it cannot be edited or withdrawn, whether you record one at a time, confirm a batch upload, or let a Shopify order flow in. This is exactly what the review step is for: take the time to check it before you confirm. For the same reason, opting a shopper out after a sale was already sent cannot un-send it; opt-out only governs future sales.

Record within 62 days

Record a sale within 62 days of when it happened. A sale older than that is flagged as Quarantined rather than submitted.

You'll know it worked when

A recorded sale appears in your order history and on the shopper's profile like any other purchase, and Meta receives it like any other conversion. Offline revenue counts in your reporting alongside your online sales, distinguishable as its own channel.

On this page