Let's get on the same page before we review the discrepancies...
Before we get into the details, I'd like to provide one short note about comparing data from the Adwords API (the deprecated version of the API) to the [newer] Google Ads API. A comparison of the data between the two APIs will often be a fruitless exercise for all of the reasons below, plus the fact that the Google Ads API provides reporting on more campaigns and at lower granularities than the Adwords API. This means that your comparison of the data from obtained from each API would show you "discrepancies" like the number of distinct campaigns is different, summed metrics don't line up, etc. To do an accurate review of the data from the Google Ads API, you should make sure that you are using the updated Google Ads user interface and that you are looking at the same granularity between the user interface and the API data (ex.: ad group to ad group and not campaign to ad group).
On to the good stuff...these discrepancies could be due to one or more of the below Google Ads nuances that should be kept in mind.
Possible Reasons for Discrepancies:
- Data for some campaigns is only provided at the campaign level. Campaign types that are only provided at the campaign level include: local campaigns, app campaigns, and Performance Max campaigns.
- NOTE: Google released this notice in their blog: "Starting July 2022, existing and future Smart Shopping campaigns (SSC) will begin automatic upgrades to Performance Max campaigns. Local campaigns (LC) will begin automatic upgrades starting August 2022. If you manage and/or report on SSC and/or LC, you should implement Performance Max campaign features as early as possible in order to avoid loss of functionality". This means that reporting for these campaigns will only be provided at the campaign level since they will be considered Performance Max campaigns.
- Zero Metrics: "Rows whose selected metrics are all zero won't be returned." (Google Ads Documentation)
- Segmentation (Google Ads Documentation)...this is a big one when you compare the functionality of the Google Ads API to the Adwords API. When segmenting, any rows that have no segment data are filtered out. The important thing to remember here is that if your Google Ads dataset provided by ChannelMix contains several dimensions, you need to include as many of those dimensions as possible in your report from the Google Ads user interface. When a dimension is considered by Google Ads to be something that segments the data, "...that segment is telling the query to only get the rows of data that have [the desired dimension], and remove any row that is not associated with [the desired dimension]. In this case, the metrics would be lower because it would exclude any [metrics without the desired dimension]." This means that your data may be filtered by Google Ads and look different as you add more dimensions. This is especially true within the "keyword" and "search term" reports.
- Example 1: Let's say that we pulled a geo report with country, state, and city. By pulling the "city" dimension, we have now filtered the report to only countries and states where the "city" data is also available. This may result in some countries and/or states not being pulled into the dataset.
- Example 2: Where is my shopping campaign data in my Keyword dataset? If the "keyword" dimension is added to the dataset, the results will be segmented based on keyword information. Shopping campaigns never have keyword data, so whenever segmenting by "keyword", all shopping campaign data is excluded from the result set.
- NOTE: For this specific situation, ChannelMix has provided a workaround. You will see shopping campaign data in your keyword dataset, but you will see "NOT AVAILABLE" as the keyword value.
- Example 3: My shopping performance dataset includes the "custom attribute 0-4" fields and it appears to be missing values for "custom attribute 0" when compared to a report from Google Ads that only pulls "date" and "custom attribute 0" as the dimensions. In this case, all of these fields are segmenting the data, so only data that is relevant to the most granular level, "custom attribute 4", is being returned. You will need to either include all of the "custom attribute 0-4" fields in your report from Google Ads or ask ChannelMix for a dataset that does not include "custom attribute 1-4", so that values from "custom attribute 0" are not filtered out by Google Ads.