How we use Facebook's Offline Events to circumvent Aggregated Event Measurement

We’ve been leveraging Facebook’s Offline Conversions as a way to circumvent a lot of the restrictions that Aggregated Event Measurement has placed on us.

With the rollout of Facebook’s Aggregated Event Measurement, many advertisers have been struggling with reporting and optimizing their campaigns on the platform. While we’ve been big proponents of looking at performance on a blended basis, it can still be difficult to feel confident about any ad ops on a day to day basis. At Thesis, we’ve been leveraging Facebook’s Offline Conversions as a way to circumvent a lot of the restrictions that AEM has placed on us. With its help, we’ve been able to close the gap on conversions that may have been missed from users who have opted out of tracking, get conversion data without any delays, and feel more confident in the conversion values being reported. 

What is the Offline Conversions API

Originally developed to help advertisers measure the effectiveness of conversions that happen in the real world (think retail, auto, housing, etc). In its simplest form, it works by taking customer information that you send to Meta and matches that information with a user on one of Meta’s various platforms. If a match is found, look back at every ad that user has been served in the last 90 days. If it finds that a user viewed/clicked on one of your ads before the conversion took place and the timing of that view/click is within the attribution window your ad set is set to, it’ll attribute the conversion to the ad that was displayed.

This is a pre-iOS 14 diagram of how the process works so the attribution/time windows are no longer accurate, but it’s a helpful visualization. 


It’s important to understand that since you’re removing any pixel based data from the process, offline conversions are not subject to the same restrictions as web conversions. Offline conversions will be reported in real time (or however frequently you upload data), will have accurate value numbers (assuming you also pass that information back), and can help bridge the gap between any missed conversions from the pixel and/or the Conversions API. 

To illustrate how much of a difference this has made for some of our clients, we wanted to share a real world example. These are a few numbers pulled from a D2C client before implementing offline conversions.

Performance with only web events


While these cost per purchases were much higher than where they were pre-iOS14, on a blended basis, the client was still hitting their targets. The issue with that is on the media side, we only had so much conversion data to make optimizations off of. It’s hard to tell which ads were the most effective when we knew that we were only looking at a fraction of the conversions they were actually driving. Now here’s a look of what that account looks like with offline conversions over that same period of time.

Performance including offline events


After implementing offline events we saw an almost threefold increase in conversions. It’s important to mention that Facebook will deduplicate both offline and web purchases, so if set up correctly, you won’t have to worry about double counting events. So in the example above, all 119 offline purchases were conversions that the pixel/CAPI missed and can be added to the 59 website purchases to give us the total number of purchases. Facebook seems to favor pixel/CAPI conversions over offline, so your increase in conversion data may vary. 

How to set up Offline Conversion tracking

While there are various different ways to set this up, from plugging directly into the API, partner integrations, and manual uploads, we’re going to focus on the latter two as they don’t require much dev knowledge to execute. 

No matter which way you decide to set this up, the first few steps are exactly the same:

  1. Go to you Events Manager and click Connect Data Sources
  2. Select Offline and then Get Started
  3. Name your offline event set and hit Create
  4. Select which ad accounts you want to tie your offline event set to (you can choose multiple ad accounts if you wish)
  5. This one is optional, but highly recommended, turn on auto-tracking so any new ads you create will by default include the offline event set as a conversion source.

Manual Upload

This route is definitely the easiest in that you don’t really need any technical knowledge to complete. It’s great if you want to test into using offline conversions, but we wouldn’t recommend it if offline conversions are something you’d like to use on an ongoing basis as the process can be a bit tedious.


To start you’ll want to gather a list of records of whatever conversions you’d like to upload. This could be a list of leads from your CRM, purchase records from your e-com platform, or any lists that you may want to tie to a conversion event. Once you have that list, you’ll want to format it into a CSV (here’s a template to get you started) to upload into your offline event set. It’s important to know that not all columns are required, but Event Name, Time, Value (if applicable) and Currency are must haves. You will need to include some sort of data point that will help identify users (email, phone number, etc) however you don’t have to fill out every single column available in the template. Once complete you’ll upload your data using the following steps:

  1. Go to you Events Manager and click your offline event set
  2. Select the Upload Events button and upload a CSV of your conversion data
  3. Click Map Data and confirm that all your columns were mapped correctly
  4. Click Review and make sure there aren’t any major issues (it’s common for a handful of rows to have errors, but you’ll want to make sure it’s not entire columns that have issues)
  5. Click Start Upload

Once you’ve uploaded your data, it’ll take some time for Facebook to start matching your conversions to users. We typically recommend waiting at least a couple of hours, if not more depending on the size of the list you uploaded. 

Partner Integration via Zapier

While there are quite a few partner integrations available (Segment is a common one we’ve used), we’re going to focus on Zapier as it’s the most flexible in terms of fitting into an existing tech stack and relatively simple (no dev resources needed). While most of the common connections require a paid account, the cheapest plan which starts at $19.99 per month, will be enough to get you started. Here are the steps necessary to start sending data:

  1. Log in to your Zapier account and click Create Zap
  2. Select whatever source you’d like to use to get conversion records (Shopify, WooCommerce, Hubspot, etc)
  3. Complete any necessary login steps
  4. Choose an event that triggers the send (new purchase, new lead, etc)
  5. Choose Facebook Offline Conversions as your destination
  6. Log in to your Facebook Account
  7. Map your records to the appropriate fields and click Continue
  8. Test your Zap to ensure that there are no errors
  9. Click Closed and turn on your Zap

How often you send data to Facebook will depend on the type of Zapier account you have. At minimum you’ll want to send data at least once per day, but we would recommend sending data on an hourly basis if not more frequently. 

Important Notes

When trying to measure any offline conversion in Ads Manager, it’s important to make sure that you’re looking at the correct metrics. Using purchases as on example, the default performance view will not include any offline purchases. You’ll want to add the following metrics to make sure you’re accounting for those offline events, Purchases, Cost per purchase, Offline purchases, and Website Purchases. The process is similar for other events. 

While offline conversions are a great way to help bridge the reporting gap in a post iOS14.5 world, there are a few limitations. It’s important to know that offline conversions will not allow you to see how many conversions your pixel/CAPI missed. While you can see the total number of records you uploaded on a given day (only going back 28 days), you’re unable to get an exact number of how many of those conversions are matched. After 1,000 records are uploaded, you’ll just see what percentage were matched. While you could do some quick math to back into the number of matched records, Ads Manager will only show you the number of offline conversions attributed to your ads, so there is no real way to judge the “iOS gap”. 

It’s also important to know that offline events and web events will deduplicate. To make sure this is possible, you’ll want to make sure the Event Times you upload are as accurate as possible. This is also why you'll want to be uploading data as often as possible. If you’re using a partner integration or API, you’ll also want to make sure the Event ID you are using for your offline events matches what your pixel is using. Shopify and most other e-com platforms will use Order ID, but you’ll want to confirm that for your set up. 

Lastly when it comes to match rates, we’ve typically found that ours hover somewhere between 70%-80%. The customer info we’ve found to have the biggest influence on match rates are Email Addresses and Phone Numbers. If you have access to your customers MAIDs, I’m sure they’d be much higher, but realistically that doesn’t seem very likely for most advertisers. 

Get in touch