# ChatGPT Ads Attribution: How to Track Paid Clicks to Real Revenue Without Polluting Your Organic ChatGPT Data

> ChatGPT ads have run since February and been self-serve since May. Measuring them is harder than it looks, because organic ChatGPT links already arrive tagged. Here is the tagging, the pixel setup, why the numbers never match, and how to check whether the ads earn anything the answers were not already earning.

Author: Vincent Ruan (https://www.vince-ruan.com/)
Publisher: Attrifast — https://attrifast.com
Last updated: 2026-09-26
Canonical: https://attrifast.com/blog/chatgpt-ads-attribution

**TL;DR**

- **Direct answer:** measure ChatGPT ads in three layers. **Tag every ad** with your own UTM template (`utm_source=chatgpt-ads&utm_medium=cpc`), **install OpenAI's Measurement Pixel** or Conversions API so Ads Manager can report and optimise, and **join the tagged click to the payment it produced**. Only the third layer is revenue.
- **The trap:** ChatGPT already appends `utm_source=chatgpt.com` to the links it cites organically[12]. All 894 cited links in our September test carried it. Tag your ads with anything that looks like that, or leave them untagged, and paid and organic ChatGPT merge into one number.
- **The numbers will not match.** Ads Manager defaults to a **30-day click window**, reports one-day view-throughs separately, dates each conversion to the ad click, and values it at whatever amount your pixel sent[11]. Your analytics does none of those things the same way.
- **Test incrementality before you call it profit.** Ads sit at the bottom of answers that may already recommend you[1]. A regional holdout is the only way to see what the ads add.
- **Context:** CPMs fell from **$60** at the 9 February launch to as low as **$25** ten weeks later[2]. Average CTR was **0.68%** in May and **0.50%** in June[6][7].

If you are reading this, you have probably launched a ChatGPT campaign, or you are about to, and you want to know whether it makes money. The honest answer is that it is measurable, but the default setup misleads you in two directions at once. It can hide paid clicks inside your organic ChatGPT numbers, and it can hand the ads credit for customers that ChatGPT's answers had already won.

This is not a case study. It is the measurement plan I would use, built from OpenAI's developer documentation, the market data published so far, and what we see in our own logs of organic ChatGPT clicks. I build attribution software, so I am biased toward joining clicks to payments. I will say where that bias matters.

## What you are measuring, as of September 2026

ChatGPT ads went from announcement to self-serve in about four months. Most of the measurement tooling arrived after the first advertisers had already spent money, which is why so much early reporting is unreliable.

| When (2026) | What changed | Why it matters for measurement |
|---|---|---|
| January | OpenAI says ads will appear at the bottom of answers, labelled and separate from the organic answer, for Free and Go users. Paid tiers such as Pro, Business and Enterprise stay ad-free[1] | Your organic recommendation and your ad can sit in the same answer |
| 9 February | Pilot launches in the US at a $60 CPM with a $250,000 minimum[2] | Early results come from large brands buying impressions, not clicks |
| April | Minimum falls to $50,000; CPMs as low as $25[2]. Cost-per-click bidding switches on, with recommended bids of $3 to $5[3] | Clicks become the unit most advertisers pay for |
| 5 May | Self-serve Ads Manager opens to US advertisers with no minimum, alongside a pixel and a Conversions API. Ads serve to Free and Go users in the US, Canada, Australia and New Zealand; Plus, Pro and Business users see none[4] | Small businesses can now buy, and can now measure conversions |
| 13 May | GA4 adds an **AI Assistant** default channel[14] | Organic ChatGPT clicks get their own GA4 bucket, and untagged ad clicks can fall into it |
| 16 June | Conversion-optimised bidding added to the Ads API[19] | OpenAI can now optimise toward the events your pixel sends |

**Minimum spend to advertise in ChatGPT, 2026**

| Category | Value |
|---|---|
| Pilot launch (9 Feb) | $250K |
| Mid-April | $50K |
| Self-serve Ads Manager (5 May) | $0K |

*Source: Digiday, 17 April 2026 ($250,000 at the 9 February pilot launch, $50,000 by mid-April); PPC Land, 5 May 2026 (self-serve Ads Manager beta for US advertisers with no minimum spend).*

The drop to zero is the reason this question now reaches small companies. Similarweb counted 5,171 distinct advertisers between 30 March and mid-June, with 3,770 active in a single week in early June[5]. Most of them are paying prices that make careless measurement expensive.

**CPM: ChatGPT ads vs other ad platforms**

| Category | Value |
|---|---|
| ChatGPT — at launch (Feb) | $60 |
| LinkedIn | $39.19 |
| ChatGPT — low end (Apr) | $25 |
| Google Display | $10.33 |
| Instagram | $7.63 |
| Facebook | $4.82 |
| TikTok | $3.02 |

*Source: Digiday, "Everything is coming down: ChatGPT ads are getting cheaper" (17 April 2026). ChatGPT figures are the $60 launch CPM and the low end buyers reported nine weeks later; other platforms are the averages Digiday quoted for comparison.*

Even at the April low of $25, ChatGPT impressions cost more than twice what Google Display charged and five times Facebook's figure in the same comparison[2]. Convert that to clicks and the stakes become clear. At a $25 CPM and June's 0.50% average click-through rate, each click costs $5.00. At the $60 launch CPM it cost $12.00. Numbers like that need to be checked against payments, not against a platform's own conversion count.

## The problem nobody warns you about: organic ChatGPT is already tagged

ChatGPT adds `utm_source=chatgpt.com` to the links it cites in its answers, and OpenAI documents this for publishers[12]. When we [traced 287 ChatGPT answers back to their sources](/blog/where-does-chatgpt-get-its-information) in September, every one of the 894 cited links carried that parameter. Organic ChatGPT traffic, in other words, arrives pre-labelled.

Now add paid clicks from the same interface. OpenAI appends its own click reference, `oppref`, to the landing URL of an ad click, and its pixel reads it[9]. Your analytics does not. Unless you add your own tags, that opaque ID is the only thing marking a click as paid.

GA4's newest feature does not help here. Since May it assigns the medium `ai-assistant` when a visit's referrer matches its list of AI assistants, and groups those sessions into the new AI Assistant channel[13][14]. An untagged ad click that carries a chatgpt.com referrer looks exactly like an organic citation click under that rule. Clicks from the ChatGPT mobile apps often arrive with no referrer at all and land in Direct, which we covered in [why ChatGPT referrals go missing](/blog/chatgpt-referral-traffic-not-showing-in-analytics).

Here is what each tagging choice turns into.

| How the ad is tagged | What your analytics sees | Paid and organic kept apart? |
|---|---|---|
| Not tagged | A chatgpt.com referral, or no referrer at all from the apps. Referrer rules, including GA4's AI Assistant channel[13], file it with organic ChatGPT | **No** |
| `utm_source=chatgpt.com` or `chatgpt`, no medium | The exact tag ChatGPT puts on organic citations[12] | **No** |
| OpenAI's documentation example: `utm_source=openai&utm_medium=paid`[8] | GA4's paid-medium regex matches `paid`, so GA4 files it as paid[13]. Tools that recognise a fixed list such as `cpc` and `ppc` may not, and some read `utm_source=openai` as an AI-assistant signal | **Depends on the tool** |
| `utm_source=chatgpt-ads&utm_medium=cpc` plus campaign and ad IDs | Paid under GA4's rules and under any tool that knows what `cpc` means. The source name cannot collide with an organic tag | **Yes** |

The last row is the one to use. `cpc` is the medium that every analytics tool I know of reads as paid, including ours: in Attrifast the medium is checked before any AI detection runs, so a `cpc`-tagged ChatGPT ad click is filed as paid and never inflates the ChatGPT revenue line.

## Layer 1: tag every ad with your own UTM template

OpenAI's tracking-parameter template, `query_string_template`, can be set at the account, campaign, ad group or ad level, and it supports macros for the campaign ID, the ad ID and the click reference[8]. Set it once at the account level so no campaign can launch untagged:

```text
utm_source=chatgpt-ads&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}
```

Three details decide whether this works.

1. **Parameters already in the destination URL win.** OpenAI's precedence order is the destination URL first, then the ad, ad group, campaign and account[8]. A landing page URL you copied from an old newsletter, still carrying `utm_source=newsletter`, will override your template silently. Strip parameters from destination URLs and let the template do the work.
2. **The macros insert IDs, not names.** Your campaign report will show `cmpn_…` strings. Keep a lookup of campaign IDs to names, or type a readable `utm_campaign` at the campaign level instead of the macro.
3. **Test before launch.** Paste the destination URL with the template applied into a browser and confirm the visit appears in your analytics as paid. Our [UTM builder](/tools/utm-builder) produces the URL; the naming rules are in the [UTM setup guide](/blog/utm-parameters-setup-guide).

If campaigns already ran untagged, check whether your analytics keeps full landing-page URLs. Any landing URL containing `oppref` came from a ChatGPT ad click[9].

## Layer 2: the OpenAI pixel and Conversions API

UTMs tell your analytics where a visit came from. They tell OpenAI nothing. For Ads Manager to report conversions, cost per action, attributed sales and ROAS, and for conversion-optimised bidding to work, OpenAI needs its own conversion signal[11].

That comes from the **Measurement Pixel** in the browser, the **Conversions API** from your server, or both. The pixel captures `oppref` from the landing URL and stores it in a first-party `__oppref` cookie for 30 days, restarting that clock each time a landing URL carries an `oppref` value[9]. It supports a consent switch, `oaiq("consent", false)`, for regions where you need permission before measuring[9].

```html
<script>
  /* OpenAI's loader snippet from Ads Manager goes here, then: */
  oaiq("init", { pixelId: "<YOUR-PIXEL-ID>" });
</script>

<script>
  // On the order-confirmation page. Amounts are integers in minor units:
  // 4900 means $49.00. Reuse the same event_id on any server-side copy.
  oaiq(
    "measure",
    "order_created",
    { type: "contents", amount: 4900, currency: "USD" },
    { event_id: "order_12345" }
  );
</script>
```

For software, the standard events that matter are `trial_started`, `subscription_created`, `registration_completed` and `lead_created`[9]. Three rules from the documentation save most of the debugging:

- **Deduplicate.** If the browser and your server both report the same purchase, give both the same `event_id`. OpenAI keeps the first and ignores the rest[9].
- **The server API does not capture the click for you.** You have to read `oppref` from the landing URL, keep it, for example in your Stripe Checkout Session metadata, and send it with the server event[10].
- **Server events must be recent.** An event timestamp has to fall within the last seven days[10]. You cannot backfill last month's orders.

A server-side event fired from your payment webhook is the more trustworthy of the two, because it only fires when money actually moved. The pixel fires when a page loads, so it depends on the buyer reaching your confirmation page, and it cannot know about a payment that later fails or is refunded.

## Why Ads Manager and your analytics will never agree

Set everything up correctly and the two systems will still disagree. That is expected. They answer different questions on different clocks.

| | ChatGPT Ads Manager | Your analytics |
|---|---|---|
| **Click window** | 30 days by default; 7 or 14 selectable in reports[11] | GA4: 90 days for most key events, 30 for first visits[15]. Attrifast: the last non-Direct visit within 7 days |
| **View-throughs** | A separate one-day view window, reported apart from Conversions[9] | None. A view without a click leaves no session |
| **Which date** | The date of the ad click, by default[11] | The date of the conversion |
| **Revenue** | The amount your pixel or server sent with `order_created`[11] | Whatever your analytics records. Only a payment join sees refunds and renewals |
| **Other channels** | Ignored. Every ad platform credits its own click | One winner per conversion, depending on the model |
| **Freshness** | Allow at least a day for conversions to settle[11] | Usually same day |

**Default click lookback window, in days**

| Category | Value |
|---|---|
| GA4 — other key events | 90 days |
| ChatGPT Ads Manager | 30 days |
| Google Ads | 30 days |
| GA4 — first visit / first open | 30 days |
| Meta Ads | 7 days |
| Attrifast (last non-Direct) | 7 days |

*Source: OpenAI Ads reporting docs (30-day click default, plus a separate 1-day view window); Google Ads Help, About conversion windows; Google Analytics Help, attribution settings; Dataslayer on Meta's March 2026 default; Attrifast attribution code (last non-Direct session within 7 days).*

The window row explains most of the gap on its own. Google Ads also defaults to a 30-day click window[16]. Meta's default is seven-day click, with separate one-day engage-through and view windows since March 2026[17]. A buyer who clicks a ChatGPT ad on the 1st, a Google ad on the 10th and buys on the 20th is a conversion in both ad platforms. In a last-click analytics tool, it is one conversion and it belongs to Google.

Here is how that plays out on one campaign. The numbers below are invented and rounded, to show the mechanics rather than any real account.

| Month's view of one campaign | Orders | Revenue | Return on $3,000 spend |
|---|---|---|---|
| Ads Manager, click-through conversions | 60 | $7,200 as sent by the pixel | 2.4x |
| Ads Manager, view-through (reported separately) | 14 | not included above | — |
| Analytics, orders whose last paid click was a `chatgpt-ads` visit | 41 | $4,920 | 1.6x |
| Same 41 orders after 3 refunds, from Stripe | 38 | $4,560 | 1.5x |

None of these rows is wrong. They are four answers to four questions. The one that pays your bills is the last row, which only exists if something joins the click to the payment. That is what [revenue attribution](/features/revenue-attribution) means, and the full mechanics for Stripe are in our [Stripe attribution guide](/blog/stripe-attribution-complete-guide). If you want the vocabulary for the difference between these ratios, see [ROAS vs MER vs RPV](/blog/roas-vs-mer-vs-rpv-comparison).

One more calculation belongs next to that table: the break-even conversion rate. Divide your cost per click by the gross profit on one order. At a $5 click and $60 of gross profit per order, you need 8.3% of clicks to buy. At a $12 click, you need 20%. If your site converts paid traffic at 3%, no amount of attribution tuning will rescue the campaign.

## Benchmarks to sanity-check your own numbers

There is no official benchmark. OpenAI publishes metric definitions, not averages. What exists comes from Similarweb's ad-intelligence panel.

**ChatGPT ad click-through rate vs display ads**

| Category | Value |
|---|---|
| Best brands (May) | 1.57% |
| Top quartile (May) | 1% |
| All advertisers (May) | 0.68% |
| All advertisers (June) | 0.50% |
| Display ads, typical | 0.35% |

*Source: Similarweb ad-intelligence data via Search Engine Roundtable (5 May 2026) for the May figures and the display benchmark; PPC Land summarising Similarweb (22 July 2026) for the June overall rate.*

In May the average ChatGPT ad drew a 0.68% click-through rate, the top quartile 1% and the best brands 1.57%, against roughly 0.35% for display ads[6]. By June the average had fallen to 0.50%[7]. The reason is visible in the next chart. As OpenAI showed ads in more conversations, the average conversation became a weaker match for the ad.

**Share of ChatGPT chats that showed an ad, mid-2026**

| Category | Value |
|---|---|
| US desktop — May 2026 | 14% |
| US desktop — June 2026 | 26% |
| UK — late June 2026 | 30% |
| Japan — June 2026 | 10% |

*Source: Similarweb, Generative AI Landscape report, as reported by PPC Land (22 July 2026). US figures are desktop chats; the UK was reported as "above 30%" by late June and Japan as "approximately 10%".*

Ads appeared in 14% of US desktop chats in May and 26% in June. The UK passed 30% by late June, and Japan was at about 10%[7]. Inventory is still concentrated. In early June, 71.6% of the impressions Similarweb observed were in the US[5].

Two cautions on using these figures. They come from a panel that observes ads, not from advertisers' accounts, so they cannot tell you conversion rates. And they describe an ad product that changed almost monthly. If your CTR sits well below 0.5%, look at your context hints and creative before you blame the channel.

## The question the dashboards cannot answer: would they have bought anyway?

OpenAI says answers are not influenced by advertising, and that ads appear at the bottom of an answer when a sponsored product is relevant to the conversation[1]. That design has a consequence for attribution. The answer above your ad may already recommend you.

When that happens and the reader clicks your ad instead of the organic link, the ad gets the credit. Every tool in the tables above will record a paid conversion. None of them can tell you whether that customer would have arrived through the organic link a second later. This is the same problem as bidding on your own brand name in Google, and it has the same fix: a holdout.

1. **Split your markets.** Ads Manager targets by country, region or market[18]. Pick two groups of regions with similar revenue history. Run the campaign in one and keep the other dark.
2. **Run it for at least four weeks.** Shorter tests mostly measure noise, and many purchases fall outside a short window.
3. **Compare total revenue, not attributed revenue.** The question is whether the test regions grew faster than the control regions, not how many conversions the ads claimed.
4. **Watch your organic ChatGPT line.** If organic ChatGPT revenue in the test regions drops by roughly what the ads claim to have earned, the ads are harvesting demand you already had.

If a regional split is not possible because your volume is too small, alternate two weeks on and two weeks off. It is a weaker test, but far better than trusting a platform's own count. A [post-purchase "how did you hear about us" question](/blog/how-did-you-hear-about-us-survey) with separate "ChatGPT answer" and "ChatGPT ad" options adds a useful second witness.

## Setup checklist

1. Set an account-level template: `utm_source=chatgpt-ads&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}`[8].
2. Remove UTM parameters from every destination URL so the template is not overridden[8].
3. Install the Measurement Pixel on every page, with the consent switch wired to your cookie banner where required[9].
4. Send `order_created`, `subscription_created` or `trial_started` with integer amounts in minor units and an `event_id`[9].
5. If you send server-side events, store `oppref` at checkout and send it with the event within seven days[10].
6. Decide which report you trust for what: Ads Manager for bidding decisions, your payment join for revenue, and a holdout for incrementality.
7. Keep organic ChatGPT as its own line and check that paid clicks never land in it. The [ChatGPT revenue attribution](/chatgpt-revenue-attribution) page shows what that separation looks like.
8. Log your baseline organic ChatGPT revenue for four weeks before the first campaign, so you have something to compare against.

## What this does not tell you

- The market figures come from trade press and one panel provider. They describe the first seven months of a young ad product, and several have already moved.
- The worked example is illustrative. Your gap between Ads Manager and your own analytics could be larger or smaller.
- OpenAI's documentation changes often. Its API changelog recorded new measurement and targeting features in June, July, August and September[19]. Recheck the template syntax and event names before you rely on them.
- Nothing here measures what an ad does for a reader who never clicks it. View-through conversions exist in Ads Manager, but only a holdout tells you whether they would have happened anyway.

## FAQ

### How do I track ChatGPT ads in Google Analytics?

Add your own UTM parameters to every ad through the tracking-parameter template in Ads Manager, using a paid medium such as utm_medium=cpc and a source that cannot be confused with organic ChatGPT, such as utm_source=chatgpt-ads. GA4 then files the clicks in a paid channel. Without tags, an ad click that carries a chatgpt.com referrer lands in GA4's AI Assistant channel alongside organic ChatGPT citations, and clicks from the ChatGPT apps often arrive with no referrer and land in Direct.

### What UTM parameters should I use for ChatGPT ads?

Use utm_source=chatgpt-ads and utm_medium=cpc, and fill utm_campaign and utm_content with OpenAI's campaign ID and ad ID macros. The source must not be chatgpt.com, because ChatGPT already appends utm_source=chatgpt.com to the links it cites organically. The medium should be cpc, because mainstream analytics tools read cpc as paid. OpenAI's own documentation example uses utm_medium=paid, which GA4 recognises but tools with a fixed list of paid mediums may not.

### Why don't ChatGPT Ads Manager conversions match GA4?

They measure different things on different clocks. Ads Manager credits conversions within a 30-day click window by default, reports one-day view-through conversions separately, dates each conversion to the ad click rather than the purchase, and values it at whatever amount your pixel or server sent. GA4 uses its own lookback windows, 90 days for most key events, gives each conversion to one channel, and dates it to when it happened. A large gap between them is normal and does not mean either is broken.

### Do I need the OpenAI pixel if I already use UTMs?

Yes, if you want Ads Manager to report conversions, cost per action and ROAS, or to use conversion-optimised bidding. UTMs only tell your own analytics where a visit came from. The Measurement Pixel, or the server-side Conversions API, is what tells OpenAI which clicks converted. Use both: UTMs for your reporting, the pixel for OpenAI's.

### What is oppref in ChatGPT ads?

oppref is the click reference OpenAI adds to the landing-page URL when someone clicks a ChatGPT ad. The Measurement Pixel reads it and stores it in a first-party __oppref cookie for 30 days so that later conversions can be matched to the click. If you send conversions server-side through the Conversions API, you have to capture oppref yourself and pass it with the event, because the API does not collect it for you.

### How much do ChatGPT ads cost in 2026?

Ads launched on 9 February 2026 at a $60 CPM with a $250,000 minimum commitment. By mid-April, Digiday reported CPMs as low as $25 and a $50,000 minimum. Cost-per-click bidding arrived in April with recommended bids of $3 to $5, and the self-serve Ads Manager that opened to US advertisers on 5 May removed the minimum entirely.

### What is a good click-through rate for ChatGPT ads?

Similarweb measured an average of 0.68% in May 2026, 1% for the top quartile of advertisers and 1.57% for the best brands. By June the average had fallen to 0.50% as ads appeared in more conversations. OpenAI has not published an official benchmark, so treat these as an early third-party panel view rather than a target.

### Can ChatGPT ads take credit for customers ChatGPT was already sending me?

Yes. ChatGPT shows ads at the bottom of an answer that may already recommend your brand. If the reader clicks your ad instead of the organic link, the ad gets the credit for a customer the answer had already won. The only way to know is a holdout test: run the ads in some regions and not others for several weeks, then compare total revenue and your organic ChatGPT revenue between the two groups.

## Continue the research path

- [Where does ChatGPT get its information?](/blog/where-does-chatgpt-get-its-information) — the 287-answer study behind the `utm_source=chatgpt.com` figure
- [ChatGPT traffic not showing in analytics](/blog/chatgpt-referral-traffic-not-showing-in-analytics) — why organic ChatGPT clicks lose their referrer
- [How to track ChatGPT traffic in GA4](/blog/how-to-track-chatgpt-traffic-in-google-analytics) — the organic side of the same setup
- [AI-influenced conversions, explained](/blog/ai-influenced-conversions-explained) — measuring AI's role when it is not the last click
- [First-touch vs last-touch attribution](/blog/first-touch-vs-last-touch-attribution) — which model to use when two platforms claim one order
- [ChatGPT revenue attribution](/chatgpt-revenue-attribution) — organic ChatGPT visits joined to Stripe payments

## Sources

1. [Our approach to advertising and expanding access to ChatGPT](https://openai.com/index/our-approach-to-advertising-and-expanding-access/) — OpenAI, 2026
2. ['Everything is coming down': ChatGPT ads are getting cheaper](https://digiday.com/marketing/everything-is-coming-down-chatgpt-ads-are-getting-cheaper/) — Digiday, 2026
3. [OpenAI turns on cost-per-click ads inside ChatGPT](https://digiday.com/marketing/openai-turns-on-cost-per-click-ads-inside-chatgpt/) — Digiday, 2026
4. [OpenAI opens ChatGPT Ads Manager to all US businesses with CPC bidding](https://ppc.land/openai-opens-chatgpt-ads-manager-to-all-us-businesses-with-cpc-bidding/) — PPC Land, 2026
5. [ChatGPT Ad Stats in 2026](https://www.similarweb.com/blog/marketing/advertising/chatgpt-ad-stats/) — Similarweb, 2026
6. [Similarweb Data: ChatGPT Ads Click-Through Rates](https://www.seroundtable.com/chatgpt-ads-click-through-rates-41267.html) — Search Engine Roundtable, 2026
7. [ChatGPT loses web share to Gemini and Claude as ad penetration hits 26%](https://ppc.land/chatgpt-loses-web-share-to-gemini-and-claude-as-ad-penetration-hits-26/) — PPC Land, 2026
8. [Campaign Management](https://developers.openai.com/ads/campaign-management) — OpenAI Developers, 2026
9. [Measurement Pixel](https://developers.openai.com/ads/measurement-pixel) — OpenAI Developers, 2026
10. [Conversions API](https://developers.openai.com/ads/conversions-api) — OpenAI Developers, 2026
11. [Reporting](https://developers.openai.com/ads/reporting) — OpenAI Developers, 2026
12. [Publishers and Developers - FAQ](https://help.openai.com/en/articles/12627856-publishers-and-developers-faq) — OpenAI Help Center, 2026
13. [[GA4] Default channel group](https://support.google.com/analytics/answer/9756891) — Google Analytics Help, 2026
14. [Google Analytics Adds AI Assistant As Default Channel Group](https://www.searchenginejournal.com/google-analytics-adds-ai-assistant-as-default-channel-group/574974/) — Search Engine Journal, 2026
15. [[GA4] Select attribution settings](https://support.google.com/analytics/answer/10597962) — Google Analytics Help, 2026
16. [About conversion windows](https://support.google.com/google-ads/answer/3123169) — Google Ads Help, 2026
17. [Meta Attribution Change 2026: What Engage-Through Attribution Is](https://www.dataslayer.ai/blog/meta-attribution-change-2026-what-engage-through-attribution-is-and-why-your-numbers-look-different) — Dataslayer, 2026
18. [Location Targeting](https://developers.openai.com/ads/location-targeting) — OpenAI Developers, 2026
19. [Ads API Overview and changelog](https://developers.openai.com/ads/api-overview) — OpenAI Developers, 2026
