Troubleshooting: data mismatch in Facebook Ads Manager and Coupler.io

If you see that metrics values returned by Coupler.io are not equal to what you see in Facebook Ads Manager UI, it may be due to importer misconfiguration or specifics of Facebook API. Please review possible reason and steps you may take to ensure you getting proper data.

1. Attribution window settings

When setting up the Facebook Ads importer, go to Advanced settings and make sure you've selected the same Action attribution window settings in Coupler.io as you have in your Facebook Ads manager to ensure your data match.

If nothing selected in Coupler.io advanced settings - 7 days click attribution window is used by default.

Review your settings in Facebook Ads Manager
Apply same values in Coupler.io advanced settings

2. Time aggregation level

Check that the selected Split data by period in your Coupler.io importer is the same as in Facebook UI - Daily, Weekly, Monthly, or Totals.

Review time aggregation you use in Facebook Ads Manager
Use same time aggregation in Coupler.io "Split data by period"

3. Entity aggregation level

You may receive different numbers in case you compare Ad report from Coupler.io with Campaign report in Facebook Ads manager.

Coupler.io returns insights for the lowest entity for which you selected fields in Metrics and Dimensions field:

  • you selected Campaign name -> report for Campaign level will be returned
  • you selected Campaign name and Ad set name -> report for Ad set level will be returned

4. Data breakdowns

Ensure that in the Metrics and Dimensions field you have the same breakdowns as in your Facebook Ads manager.

For example, in Coupler.io data might be selected to be broken down by 'Publisher platform' (Facebook, Instagram), but in Facebook Ads, breakdown by platform might not be selected. You need either to select platform the breakdown in your Ads Manager or to remove the 'Publisher platform' dimension from the wizard setup in Coupler.io.

Coupler.io supports the following breakdowns that may affect your resulting numbers:

  • Age
  • Gender
  • Country
  • Region
  • Device platform
  • DMA
  • Hourly stats aggregated by advertiser time zone
  • Hourly stats aggregated by audience time zone
  • Impression device
  • Product id
  • Publisher platform
  • Frequency value


5. Advanced filters

Coupler.io allows you to specify additional filters to narrow down your results, you can read how to use filters in article: How to use advanced filters in Facebook Ads?

Short domain knowledge for Facebook Ads:

Ad units may be DELETED  or ARCHIVED . The stats of deleted or archived objects appear when you query their parents. This means if you query impressions  at the ad set level, results include impressions  from all ads in the set it, regardless of whether the the ads are in a deleted or archived state. 


However, if you use ANY filtering, status filtering will be applied by default to return only ACTIVE objects. As a result, the total stats of the parent node may be greater than the stats of its children.


For example, you want to filter results by specific campaign name, so you used filter:

[{"field":"campaign.name","operator":"CONTAIN","value":"NAME"}]

With this filter data for deleted and archived entities will be not returned, so you may receive different numbers. To include data for deleted and arhcived entities - add filter by ad set or campaign status:

[{"field":"campaign.name","operator":"CONTAIN","value":"NAME"},{'field':'adset.effective_status','operator':'IN','value':['ACTIVE','PAUSED','DELETED','ARCHIVED']}]

OR

[{"field":"campaign.name","operator":"CONTAIN","value":"NAME"},
{'field': 'campaign.effective_status','operator': 'IN','value': ['ACTIVE', 'PAUSED', 'DELETED', 'PENDING_REVIEW', 'DISAPPROVED', 'PREAPPROVED', 'PENDING_BILLING_INFO', 'CAMPAIGN_PAUSED', 'ARCHIVED','ADSET_PAUSED']}]
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.