Is there a way to setup Google Ads to replace rather than append?

Google ads data I am unable to keep accurate.
All good on the initial sync but then the data management spins out of control and the costs which I rely on are no longer accurate.

Currently the function is pull Google Ads table and replicate in Postgresql

I would rather it download and replace all rather than append as its accurate on the initial sync
Is this possible?

Hi there,

There’s a few different factors that are likely contributing here which I’ve outlined for you below.

As a heads up for future reference, the best way to receive support for questions related to product functionality such as yours will be to reach out to Stitch’s support team through in-application chat or via email at

Conversion Window

Most of Stitch’s ad-reporting integrations such as Facebook Ads and Google Analytics or Google Ads use a conversion window in order to capture changes made to data within the source account over a given period of time.

This functionality will always be listed in Stitch’s documentation for a source where it is used, such as in this section for the Google Ads integration, and for this data source specifically, Stitch uses a 30 day conversion window for any reporting tables, so you would see the past 30 days worth of data extracted and loaded during each replication cycle.

Append-Only Functionality of Google Ads

In the case of the Google AdWords integration, it’s also worth noting that any report tables replicated will always function in an append-only manner, regardless of the destination you’re using.

This is outlined in more detail in the page linked above for the Google Ads documentation, and while this functionality is not configurable, you can find some more information on approaches for accounting for this duplication and grabbing the latest version of each record from this page of Stitch’s documentation, or this page dedicated to querying append-only tables.

Annoying when I don’t use the adwords conversions, only care about the costs

The query I came up with from a combination from the other forum posts.
Had to concat as there were no unique identifiers

select *
from (
select o.*,
(row_number() over(partition by concat(, o.campaign, o."adGroup")  order by concat(, o.campaign, o."adGroup")  desc, o._sdc_sequence desc, _sdc_received_at desc, _sdc_batched_at desc, _sdc_extracted_at desc, o.campaign desc, o."adGroup" desc)) row_num
where row_num = 1