# Marketing ETL Explained: Pipelines, ELT and Build vs Buy

> Marketing ETL explained in plain terms: how ad data pipelines work, ETL vs ELT, common sources and warehouses, a design checklist, and when to build or buy.

- Canonical URL: https://www.vexio.ai/insights/marketing-etl-explained/
- Published: 2026-10-14
- Updated: 2026-10-14
- Category: Cloud and DevOps
- Author: Vexio engineering team

## What is marketing ETL, in plain terms?

Marketing ETL means copying your advertising data out of Google Ads, Meta, Amazon and similar platforms, tidying it so the numbers mean the same thing everywhere, and loading it into a warehouse you control. ETL stands for extract, transform, load. Once spend, clicks, orders and revenue sit in one place, you can compare and join them in SQL or a reporting tool instead of exporting a spreadsheet from each platform.

It exists because every platform reports in its own shape, on its own schedule and with its own attribution rules, and none of them will do the cross-platform joining for you. The rest of this article covers why ad data is harder than ordinary ETL, how ETL differs from ELT, typical sources and destinations, a design checklist, and how to choose between building and buying.

## Why does ad data need more care than ordinary ETL?

Moving rows between two databases is a solved problem. Ad data adds problems that come from how the platforms work. The facts below were checked on 2026-10-14.

- **Reports are often asynchronous.** The Amazon Ads version 3 reporting flow has you request a report, wait for it to be generated, then download it from a link ([get started with version 3 reports](https://advertising.amazon.com/API/docs/en-us/guides/reporting/v3/get-started)). Other platforms return rows directly from a query. A pipeline has to support both styles, and [Amazon Ads API reporting explained](https://www.vexio.ai/insights/amazon-ads-api-reporting-explained/) walks through the asynchronous one.
- **Numbers change after you load them.** Amazon states that sponsored ads conversion data can change for up to 60 days back, and that invalid-click detection monitors traffic for up to 30 days ([reporting overview](https://advertising.amazon.com/API/docs/en-us/guides/reporting/overview)). Google Ads reports conversions on the ad impression date and says they can arrive up to 90 days after the click ([data discrepancies](https://support.google.com/google-ads/answer/7457111)). A pipeline that loads each day once and never revisits it drifts away from the platform. The fix is covered in [idempotent ad reporting pipelines, backfills and late data](https://www.vexio.ai/insights/idempotent-ad-reporting-pipelines-backfills-late-data/).
- **Authorization expires.** Amazon access tokens are valid for 60 minutes ([access tokens](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/access-tokens)), and refresh tokens issued on or after July 30, 2026 expire 365 days from the advertiser's consent ([refresh tokens](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/refresh-tokens)). Someone has to own renewal and alerting.
- **Rate limits are dynamic.** Amazon's reporting limits depend on the size of the report queue in the region, so a backfill that works one day can be throttled the next ([rate limiting](https://advertising.amazon.com/API/docs/en-us/reference/concepts/rate-limiting)).
- **Definitions differ.** Cost, conversions, attributed sales, currency and time zone mean slightly different things in each source. The transform step is where those differences are reconciled and written down.

ETL is read-only data movement. Changing campaigns is a separate job with its own tools, compared for Google in [Google Ads Editor vs bulk upload vs API](https://www.vexio.ai/insights/google-ads-editor-vs-bulk-upload-vs-api/).

## ETL vs ELT: which order should the steps run in?

In ETL, data is transformed before it is loaded. In ELT, raw data is loaded first and transformed inside the destination. AWS describes ELT as reversing the order of operations: data goes into the target system before processing, and no intermediate staging area is required because the warehouse can do the mapping ([AWS: What is ETL?](https://aws.amazon.com/what-is/etl/)).

For advertising data the practical answer is a hybrid:

| Stage | What happens | Why |
|---|---|---|
| Extract | Call the API, handle pagination, polling and throttling | Platform-specific code lives here and nowhere else |
| Land raw | Store the response as received, in object storage or a raw table | Transforms can be re-run without calling the API again |
| Light transform before load | Fix types, flatten nested JSON, convert units such as micros to currency, set aside malformed rows | Keeps warehouse tables clean and typed |
| Load | Merge into tables keyed on each report's natural key | Safe to repeat, no duplicates |
| Model in the warehouse (the ELT part) | Join platforms, apply business definitions, build reporting views | SQL is easy to review, change and version |

SQL modelling tools fit the last row. dbt's documentation, for example, describes writing SQL select statements that dbt turns into models in your cloud data platform, working alongside whatever does the ingestion ([dbt introduction](https://docs.getdbt.com/docs/introduction)).

Keeping a raw copy matters more for ad data than for most domains, because platforms restate numbers and retain history for a limited time. If you keep only the transformed result, a mistake in your logic cannot be corrected without going back to the source, which may no longer hold the history. Amazon lists a retention period per ad product for its campaign reports, from 60 to 95 days ([campaign reports](https://advertising.amazon.com/API/docs/en-us/guides/reporting/v3/report-types/campaign)).

## Which sources and destinations come up most often?

Sources fall into three groups: ad platforms (campaign, ad group, keyword, search term and placement performance), commerce or retailer data (orders, inventory, sales and traffic) and first-party data (CRM, web analytics, product feeds). Destinations are usually one warehouse plus object storage for raw files.

| Role | Examples |
|---|---|
| Search and social ads | Google Ads, Meta Ads, TikTok Ads |
| Retail media | Amazon Ads, Walmart Connect, Instacart Ads, Criteo Retail Media |
| Programmatic | Display & Video 360 |
| Commerce data | Amazon Selling Partner API (see [SP-API vs Ads API](https://www.vexio.ai/insights/amazon-sp-api-vs-amazon-ads-api/)) |
| Warehouse | BigQuery, PostgreSQL |
| Raw landing | Amazon S3, Google Cloud Storage or Azure Blob, often as Parquet |

Some platforms offer a first-party route into a warehouse. Google provides a BigQuery Data Transfer Service connector for Google Ads, compared with the alternatives in [Google Ads to BigQuery options](https://www.vexio.ai/insights/google-ads-to-bigquery-options/). For Amazon, the reporting overview describes Amazon Marketing Stream as delivering data to your AWS environment, with no polling or rate limiting ([reporting overview](https://advertising.amazon.com/API/docs/en-us/guides/reporting/overview)). Evaluate these before writing code.

## What should a marketing data pipeline get right?

Use this list to review a pipeline you are building or buying. Every item should have an answer.

**Identity and keys**
- What is the natural key of each report (date, campaign ID, plus any segment such as placement), and is it enforced in the load?
- Are account, profile or customer IDs part of every key, so two accounts can never collide?

**Correctness over time**
- Is every load idempotent, so a retry or manual re-run cannot create duplicates?
- Is there a rolling re-pull window for recent days, sized to each platform's restatement behaviour?
- Can you backfill a date range without hand-editing SQL?
- Is there a record of which dates were loaded, when, and by which run?

**Operations**
- Are retries bounded, with backoff on throttling errors?
- Does anything alert on stale data, not only on failed jobs?
- Are credentials in a secrets manager, with a named owner for token renewal?
- Is raw data kept so transforms can be replayed?

**Semantics**
- Which time zone and currency apply to each source, and where are they recorded?
- Which attribution window does each conversion column use, and does the column name say so?

**Handover**
- Can a new engineer follow the documentation, and is there a runbook for the three most likely failures?

Where the pipeline runs (scheduler, secrets, deployment, monitoring) is a cloud and DevOps decision in its own right, covered under [cloud and DevOps](https://www.vexio.ai/cloud-devops/).

## Build vs buy: which route fits your sources?

There are three realistic routes, and they are not exclusive.

| Route | Fits when | Watch for |
|---|---|---|
| First-party transfer (for example the BigQuery Data Transfer Service for Google Ads) | One platform, one warehouse, standard tables are enough | Fixed table layout, limited control over restatement windows and custom logic |
| Managed connector tool | Many common sources, small team, standard reports | Connector coverage for your exact reports, how restated data is handled, pricing model, limited custom report support |
| Custom pipeline | Unusual sources, custom report definitions, strict data residency, tight fit with an existing stack | Ongoing ownership: API version changes, token renewal, monitoring |

Fivetran and Airbyte are two examples of the middle row. Fivetran's documentation lists a Connector SDK for building custom connectors, and Airbyte describes itself as an open source data replication platform with self-managed and cloud versions ([Fivetran documentation](https://fivetran.com/docs/getting-started), [Airbyte documentation](https://docs.airbyte.com/)). Whether a given tool covers your sources and report types is a question for that vendor's connector list, not a general rule.

A useful test: list the ten fields you need and the three platforms you need them from. If a first-party transfer or managed connector delivers those fields with the restatement behaviour you need, use it. If not, or if API changes worry you, custom work is easier to justify. Amazon's reporting overview, for instance, lists version 3 reporting as to be shut off after June 30, 2027, and points to its reporting API v1 and Amazon Marketing Stream Version 2. A custom pipeline also fits when the data is a core asset and you want to control how it evolves. The [data engineering services buyer's guide](https://www.vexio.ai/insights/data-engineering-services-buyers-guide/) covers how to compare providers if you hire the work out.

Whichever route you pick, you still own the model layer: the definitions of spend, sales and efficiency metrics your team agrees on. Tools move the data. They do not decide what ACOS or TACoS means for your reporting, and the [glossary](https://www.vexio.ai/glossary/) is a starting point for shared terms.

## Where Vexio fits

Vexio delivers advertising data pipelines as custom engagements, not as a packaged platform. That covers scoping the sources and report definitions, building extraction and authorization handling, landing raw data and loading typed tables with idempotent merges, backfills, a ledger of loaded dates, alerting, and handover of code and documentation. The scope is on the [advertising data pipelines page](https://www.vexio.ai/etl/). To talk through your sources and where the data should land, [request a demo](https://www.vexio.ai/demo/).

## Sources

Checked on 2026-10-14.

- Amazon Ads API, [Reporting overview](https://advertising.amazon.com/API/docs/en-us/guides/reporting/overview): data freshness, Amazon Marketing Stream, version 3 shut-off date.
- Amazon Ads API, [Get started with version 3 reports](https://advertising.amazon.com/API/docs/en-us/guides/reporting/v3/get-started): asynchronous flow.
- Amazon Ads API, [Campaign reports](https://advertising.amazon.com/API/docs/en-us/guides/reporting/v3/report-types/campaign): retention per ad product.
- Amazon Ads API, [Access tokens](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/access-tokens) and [Refresh tokens](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/refresh-tokens): token lifetimes.
- Amazon Ads API, [Rate limiting](https://advertising.amazon.com/API/docs/en-us/reference/concepts/rate-limiting): dynamic limits.
- Google Ads Help, [Data discrepancies](https://support.google.com/google-ads/answer/7457111): conversion delay.
- AWS, [What is ETL?](https://aws.amazon.com/what-is/etl/): ETL and ELT definitions.
- dbt, [Introduction](https://docs.getdbt.com/docs/introduction); [Fivetran documentation](https://fivetran.com/docs/getting-started); [Airbyte documentation](https://docs.airbyte.com/): what each tool says it does.

## Frequently asked questions

### What is marketing ETL?

Marketing ETL is the process of extracting performance data from advertising and commerce platforms, cleaning and reshaping it, and loading it into a data warehouse. Once the data is in one place with consistent definitions, spend, clicks, orders and revenue from different channels can be compared and joined in SQL or a reporting tool.

### What is the difference between ETL and ELT for marketing data?

In ETL, data is transformed before it is loaded into the destination. In ELT, raw data is loaded first and transformed inside the warehouse. For advertising data a hybrid is common: light cleanup before loading, raw copies kept for replay, and business logic written as SQL models in the warehouse.

### What data sources does a marketing data pipeline usually pull from?

Typical sources are ad platforms such as Google Ads, Meta Ads, TikTok Ads and Amazon Ads, retail media networks, commerce data such as Amazon sales and inventory reports, and first-party data like CRM or web analytics. Destinations are usually a warehouse such as BigQuery or PostgreSQL, plus object storage for raw files.

### Should I build a marketing ETL pipeline or buy a connector tool?

Buy or use a first-party transfer when your sources are common, your reports are standard and the tool handles restated data the way you need. Build when you need custom report definitions, unusual sources, tight control over loading logic, or when API changes and token renewal must be owned by someone who knows your stack.

### Why do my warehouse numbers not match the ad platform?

Usually timing and definitions. Platforms restate recent data: as documented on 2026-10-14, Amazon says conversion data can change for up to 60 days back, and Google Ads can report conversions up to 90 days after a click. Attribution windows, time zones and currency also differ. Re-pulling a rolling window of recent days closes most gaps.

---

Source: Vexio, https://www.vexio.ai/insights/marketing-etl-explained/
Talk to Vexio: request a demo at https://www.vexio.ai/demo/, call +1 778 896 4353 or email hello@vexio.ai.
