Google Ads

Setup Meta Ads with DinMo's ingestion capabilities.

Sync overview

Incremental sync

An incremental sync is a regular sync that starts according to the sync frequency that you chose in the DinMo dashboard. Each incremental sync captures changes for the past three days.

For the GEO_TARGET table, we sync all records on the 1st and 15th of every month, which may increase your MAR.

Rollback sync

A rollback sync is a sync that automatically starts once a day. Rollback syncs capture the changes that happen outside of the incremental sync time frame. In the Conversion Window Size field of your connection setup form, you can choose a rollback sync window size between 1 and 90 days. The default value is 30.

Conversion window

A conversion window is the period of time after a person interacted with your ad during which the subsequent actions, like a phone call or a purchase, are recorded in Google Ads. By default, Google Ads uses a conversion window of 30 days. If you use the default setting, your reports contain information about the actions that happened within 30 days after a person interacted with your ad.

Since you can specify custom window size for your conversion trackers, you may want to set the same conversion window size in your Google Ads connection. You can set the window size manually in the range of 1 to 90 days, or let DinMo detect it automatically.

Changing the conversion window size for the connection only changes the length of a rollback sync. It does not affect the conversion window settings in your Google Ads account.

DinMo performs an automatic window detection before each sync. The automatic window detection finds the maximum window size across all the conversion trackers available for the specified accounts. It adds some extra time for each sync to complete which depends on the number of accounts you want to sync.

The same conversion window applies to all reports configured in the connection.

If you set your window size manually and select a window size smaller than what you set in Google Ads, you will lose some conversion data. If you select a window size bigger than you have, there will be some excessive syncs leading to an unwanted increase in your Monthly Active Rows.

Zero impressions

The Google Ads API returns rows with zero metric values only if the report does not contain segments. If the report contains segments, the rows with zero metric values are excluded.

Enabling and disabling syncs for your reports

On the connection's Schema tab, you can enable or disable the sync for any report you previously set up. The Schema tab shows the table name you chose to correspond to the report when you set up the connection. It doesn't show the report name. For that reason, we suggest you name the table something you will find easy to identify.

De-selecting a table on the Schema tab means the connection will stop syncing the table. The last sync date for this table won't change until you select the table to sync again. After selecting the table, the connection will sync the data that appeared in the source since the last recorded sync date.

Skip empty reports

When a connection receives empty data for an account report (prebuilt or custom), it starts monitoring it during a 30 days period. If during that time the account report remains empty, the connection starts attempting to sync the report every 1 to 3 days. Upon receiving data, the connection stops syncing the account report every 1 to 3 days and starts a new 30 days monitoring period.

Skipping empty account reports significantly improves connection performance. This feature is enabled by default for all connections. However, you can also manually toggle it On or Off on the connection setup form. Disabling this option may decrease connection performance.

Metadata sync

For Metadata tables, we use three types of data sync:

  • A historical data sync fetches all data from the customer's Google Account using the Google Ads API. Usually, a historical sync starts automatically after the connection is created (which is also called the initial sync), or when you manually trigger a historical sync in your DinMo dashboard (which is also called a full re-sync).

  • An incremental sync, which is the default sync type DinMo uses after the initial sync has completed. The incremental sync runs on a schedule that you define and updates only the data that has changed since the last sync. During the incremental sync, the connection uses the Google Ads API Change Status Service to retrieve data only for entities that have changed in the source since the last sync and to track the last change timestamp.

  • A full re-import, which DinMo uses for a Google Ads account when there are too many changes to return within the scope of the incremental sync and all attempts to narrow down the date range and retry the request since the last sync are unsuccessful. These re-imports produce MARs.

Metadata tables don't contain the full change history of their corresponding objects within an account. In case of metadata tables, during every sync, the connection retrieves a list of objects that have changed since the previous sync, and takes a snapshot of their current state. A historical sync, on the contrary, captures the current state for all the objects within an account regardless if they have changed or not.

We perform a full re-import for the ACCOUNT_HISTORY table during every sync as the Google Ads API doesn't provide information regarding changes made to the table.

Historical sync

Handled exceptions

DinMo handles the following Google Ads authorization errors, and generates warnings when these errors occur:

  • CUSTOMER_NOT_ENABLED - The customer is not active and has been skipped during the sync.

  • USER_PERMISSION_DENIED - The user doesn't have the permission to access the customer, therefore the customer has been skipped during the sync.

  • TWO_STEP_VERIFICATION_NOT_ENROLLED - The customer has a policy to enforce 2-Step Verification, but the user is not enrolled.

Syncing data from multiple Google Ads accounts

When setting up your Google Ads connection, you can configure it to query each account - no matter how many you have - and combine their data into a single table (one per each report) within your destination.

You can also limit the data loaded into a particular schema by selecting the relevant accounts and reports you need. You can use multiple connections to write data to separate schemas.

Field selection limitation

When configuring your connection in the setup form, you may find that you cannot combine some fields available in your Google Ads reports. You may want to review the Google Ads API documentation to figure out exactly which metrics you want to sync, rather than just select all fields of your Google Ads report.

Because of this limitation, if it's imperative that you receive fields that conflict with one another, you may need to set up two different reports within one connection (or even another Google Ads connection targeting another schema name).

All connections created before June 7, 2024 must include the segments.date field in custom reports, which is required for incremental syncs.

All connections created after June 7, 2024 must include one of the following timeline segments:

  • segments.date

  • segments.week

  • segments.month

For more details, see timeline granularity for custom reports.

CAMPAIGN_SEARCH_TERM_INSIGHT report sync speed

The Google Ads API limits the sync speed of the CAMPAIGN_SEARCH_TERM_INSIGHT report. We recommend that you create a separate connection to sync the CAMPAIGN_SEARCH_TERM_INSIGHT report and avoid delays for other reports.

Schema information

We provide the following types of reports and tables:

  • Prebuilt reports, which sync a pre-defined set of fields. We have the corresponding pre-defined tables on the Schema tab that you can enable or disable.

  • Custom reports, which require you to select the report type and fields you wish to sync in the connection setup form.

  • Metadata tables reflecting the state of their respective entities in the source - These are shown in the ERD as tables without the _stats suffix in their names. We have the corresponding pre-defined tables on the Schema tab of the connection page that you can enable or disable.

For either of them, we deliver a single table that contains the following standard fields besides its specific fields:

  • date

  • customer_id

  • _dinmo_id

The money amount field values are stored in micros. One million micros is equivalent to one unit of a local currency. For example, $180.00 equals 180000000 micros.

Type transformations and mapping

DinMo transforms types. If there is an important type that we are missing that you need, reach out to support.

Naming conventions

The Google Ads connector follows a few specific naming rules used to name the columns in the destination:

  • the segments and metrics parts are removed from the field name - segments.date becomes date, metrics.clicks becomes clicks

  • the name of a resource specified as a report type in the report is removed from the field name - ad_group.id becomes id in the ad_group report, campaign.name becomes name in the campaign report

  • customer.id always becomes customer_id no matter what resource name is specified as a report type in the report

  • if a field has a deep nesting, the connector only leaves the two last parts joined by an underscore - ad_group_ad.ad.expanded_text_ad.description becomes expanded_text_ad_description

Take into account our standard naming conventions. ConversionCategoryName in the example becomes conversion_category_name in the destination.

Updating data

When you change the configuration of your connection, we will re-sync the connection during the next sync, and you will see a warning in your DinMo dashboard.

We re-sync prebuilt reports in case we need to change or remove fields for compatibility with the current Google Ads API version or when we add support for new fields.

We also automatically update your custom reports for compatibility with the latest Google Ads API version if needed. If the update involves entity renaming or deletion in the Google Ads API, you will see a warning in your DinMo dashboard.

The above cases can get complicated and increase the chances of an error, so we urge you to create a new connection, perhaps syncing into a different schema, in either of the cases:

  • you want to change the configuration of your connection

  • we had to update the configuration of your connection for compatibility with the current Google Ads API version or due to added support of new fields

Deleted rows

Reports do not support deleted rows because they often record events and data chronologically, so it is impossible to delete data that has already been logged.

Last updated