> For the complete documentation index, see [llms.txt](https://docs.adpage.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adpage.io/documentation/documentation-nl/integraties-marketingtools/chatgpt-ads/utm-parameters-and-dynamische-tracking-voor-chatgpt-ads.md).

# UTM-parameters & dynamische tracking voor ChatGPT Ads

Hoe je UTM-parameters en de dynamische advertentietokens van OpenAI structureert voor attributie van ChatGPT Ads

De hoofdgids voor ChatGPT Ads behandelt het terugsturen van conversies naar OpenAI via de Conversions API. Deze pagina behandelt de andere kant: schone, koppelbare attributiedata uit ChatGPT Ads-kliks halen en in GA4, het CRM van de klant en hun datawarehouse krijgen, door de URL-parameters correct te structureren.

{% hint style="warning" %}
**Dit is bèta, gedrag achter accounttoegang.** Het publieke Helpcentrum van OpenAI vermeldt nog steeds dat dynamische macro's in landings-URL's niet worden ondersteund. Toch tonen sommige Ads Manager-accounts een veld "Landing page query parameters" met dynamische tokens zoals hieronder beschreven. Controleer altijd in het specifieke account van de klant of dit veld zichtbaar is voordat je erop bouwt, en houd een statische UTM-fallback klaar voor het geval dat niet zo is (of het niet meer wordt opgelost).
{% endhint %}

### Het tweelaagse model

Zet OpenAI's object-ID's niet in `utm_source` of `utm_medium` — daarmee versnippert GA4's kanaalgroepering tot één rij per campagne. Gebruik in plaats daarvan twee afzonderlijke lagen:

* **Marketingtaxonomie** (`utm_source`, `utm_medium`, `utm_campaign`, ...) — stabiele, voor mensen leesbare waarden die je één keer per campagne instelt. Hierop groepeert GA4 zijn kanaalrapportage.
* **Technische koppelingssleutels** (`oai_*` parameters, opgebouwd uit OpenAI's dynamische tokens) — de eigen object-ID's van het platform, gebruikt om spend-/klikdata weer te koppelen aan sessies, leads en orders in het CRM of datawarehouse. Namen zijn na livegang bewerkbaar in Ads Manager, ID's niet, dus gebruik ID's waar mogelijk als historische koppelingssleutel.

### OpenAI's dynamische tokens

Wanneer het veld "Landing page query parameters" beschikbaar is voor een campagne, kunnen deze vier tokens eraan worden toegevoegd en worden ze bij het klikken ingevuld in de bestemmings-URL:

| Token             | Stelt voor                          | Voorbeeldwaarde | Aanbevolen doelparameter                |
| ----------------- | ----------------------------------- | --------------- | --------------------------------------- |
| `{campaign_id}`   | Campagneobject op topniveau         | `cmpn_101`      | `utm_id` (en/of `oai_campaign_id`)      |
| `{ad_group_id}`   | Advertentiegroep binnen de campagne | `adgrp_301`     | `oai_ad_group_id` — **niet** `utm_term` |
| `{ad_id}`         | Individuele advertentie             | `ad_501`        | `utm_content` (en/of `oai_ad_id`)       |
| `{ad_account_id}` | OpenAI Ads-account                  | `adacct_123`    | `oai_account_id`                        |

{% hint style="info" %}
Er is geen `{product_id}` token voor productfeedcampagnes. Voeg in plaats daarvan de SKU of item-ID toe als statische parameter aan de landings-URL van elk product, en bevestig tijdens QA dat die behouden blijft wanneer dezelfde URL opnieuw wordt gebruikt voor verschillende producten.
{% endhint %}

### Aanbevolen parameterstring

Voor een standaardcampagne waarbij het query-parameter-veld beschikbaar is, voeg je dit toe aan de querysjabloon van de landingspagina in Ads Manager:

```
utm_source=chatgpt&utm_medium=paid_ai&utm_campaign=<static-campaign-slug>&utm_id={campaign_id}&utm_content={ad_id}&utm_source_platform=openai_ads&oai_account_id={ad_account_id}&oai_campaign_id={campaign_id}&oai_ad_group_id={ad_group_id}&oai_ad_id={ad_id}
```

Dat komt, zodra OpenAI de tokens bij een geschikte klik invult, op de landingspagina aan als bijvoorbeeld:

```
https://www.client-site.com/landing?utm_source=chatgpt&utm_medium=paid_ai&utm_campaign=q3-demo-push-emea&utm_id=cmpn_101&utm_content=ad_501&utm_source_platform=openai_ads&oai_account_id=adacct_123&oai_campaign_id=cmpn_101&oai_ad_group_id=adgrp_301&oai_ad_id=ad_501&oppref=gAAAAAb123
```

Houd `utm_source`, `utm_medium`, `utm_campaign` en `utm_source_platform` **statisch** — typ ze per campagne uit, gebruik er geen sjabloon voor. Alleen de object-ID's gaan via de dynamische tokens; die zijn lastig handmatig correct in te typen en juist daar moet een koppelingssleutel exact zijn.

{% hint style="info" %}
Gebruik overal één kleine-letterconventie (`chatgpt`, niet `ChatGPT` of `Chatgpt`). Gemengde hoofd-/kleine letters zijn de meest voorkomende oorzaak dat een campagne als meerdere rijen verschijnt in het kanaalrapport van GA4.
{% endhint %}

### `oppref`: laat het met rust

Je ziet een `oppref` parameter die automatisch aan geschikte landings-URL's wordt toegevoegd, bovenop alle UTMs die je hebt ingesteld. Dit is OpenAI's eigen klikreferentie, gebruikt voor de attributiematching van de Conversions API — het staat los van UTMs en is dezelfde klik-ID die is opgeslagen in de first-party `__oppref` cookie die in stap 3 van de hoofdinstellingsgids wordt beschreven. Stel \_\_oppref nooit handmatig in, overschrijf het niet en verwijder het niet `oppref` in een omleiding — dat breekt de attributie aan OpenAI-zijde, ook als je eigen GA4-/CRM-tracking niet wordt beïnvloed.

### Ondersteuning verschilt per manier waarop de campagne is opgebouwd

| Campagnetype                                  | Vertrouwen dat de dynamische tokens worden ingevuld                                            | Wat te doen                                                                                                                                                                               |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Standaard Ads Manager-campagne (CPM/CPC/oCPC) | Gemiddeld — werkt wanneer het veld "Landing page query parameters" zichtbaar is in dat account | Gebruik de dynamische tokens; verifieer dit met een gecontroleerde testklik                                                                                                               |
| Productfeedcampagnes                          | Laag — er bestaat geen producttoken                                                            | Voeg per product-URL statisch de SKU/item-ID toe                                                                                                                                          |
| Bulk-CSV-creatie                              | Laag — geen gedocumenteerde kolom voor querysjablonen                                          | Gebruik volledig statische UTMs in de landings-URL, of stel het query-parameter-veld handmatig in na upload                                                                               |
| Openbare Advertiser API                       | Laag — het schema heeft geen veld voor een landing-query-suffix                                | Bouw statische querystrings op basis van de object-ID's die al in de API-respons staan                                                                                                    |
| MMP-links (AppsFlyer, Adjust, ...)            | Hangt af van de MMP                                                                            | Vervang een MMP-link nooit door een gewone URL — gebruik alleen de door die partner ondersteunde aangepaste parameters, en bevestig dat de ingevulde waarden de omleidingsketen overleven |

### De parameters vastleggen in GTM en GA4

In de webcontainer van de klant:

1. Zorg ervoor dat de GA4-configuratietag (of je GA4-eventtags) oppikt `utm_id`, `utm_content` en de andere standaard-UTM's op dezelfde manier als bij andere betaalde kanalen — daar is geen extra werk voor nodig.
2. Voor de `oai_*` parameters vullen ze GA4's ingebouwde verkeersbron-dimensies niet automatisch. Lees ze uit de URL met een Data Layer- of URL-variabele, stuur ze als eventparameter mee op je belangrijkste events, en registreer overeenkomende aangepaste GA4-dimensies als de klant erover wil rapporteren (bijv. voor analyse op creatief niveau per `oai_ad_id`).
3. Als de klant leadformulieren heeft, parse dan de landings-URL bij de eerste paginalaad en schrijf de waarden naar verborgen formuliervelden zodat ze in het CRM terechtkomen: oorspronkelijke bron/medium, de statische campagneslug, `oai_campaign_id`/`utm_id`, `oai_ad_group_id`, `oai_ad_id`/`utm_content`, `oai_account_id`, `oppref`, en de volledige ruwe landings-URL plus een tijdstempel (handig voor forensische QA later).

{% hint style="warning" %}
Zet geen persoonsgegevens (e-mail, telefoon, naam) in querystrings voor deze of welke vastlegstap dan ook — die komen terecht in browsergeschiedenis, serverlogs en tools van derden.
{% endhint %}

Stel voor GA4-kanaalrapportage één keer per klant een aangepaste kanaalgroep in:

```
Aangepast kanaal: Betaalde AI
Bron komt exact overeen met: chatgpt
EN
Medium komt exact overeen met: paid_ai
```

### Probleemoplossing

| Symptoom                                                         | Waarschijnlijke oorzaak                                                                                                                         | Oplossing                                                                                                                                                    |
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Landings-URL bevat de letterlijke tekst `{campaign_id}`          | Dit account-/campagnetype ondersteunt het invullen van tokens niet                                                                              | Bevestig dat de tokenkiezer in precies dat account beschikbaar is; val terug op statische waarden                                                            |
| Alleen de statische UTMs verschijnen, de `oai_*`/dynamische niet | Het veld is niet opgeslagen, of het campagnetype ondersteunt het niet                                                                           | Controleer de opgeslagen veldwaarde opnieuw; test met een nieuwe geschikte klik                                                                              |
| Dubbele querysleutels in de uiteindelijke URL                    | Dezelfde sleutel is zowel ingesteld in de bestemmings-URL van de advertentie als in het query-parameter-veld van de campagne                    | Geef elke parameter één eigenaar — óf de advertentie-URL óf het campagnesuffix, nooit beide                                                                  |
| Eén ChatGPT Ads-campagne verschijnt als meerdere rijen in GA4    | Inconsistente hoofd-/kleine letters of een wijziging in de campagnenaam (veranderlijk) gebruikt als koppelingssleutel                           | Normaliseer de hoofd-/kleine letters van bron/medium; gebruik een stabiele statische slug in plaats van de live campagnenaam                                 |
| Klikken in Ads Manager liggen merkbaar boven GA4-sessies         | Verwacht verschil — mislukte paginaladingen, toestemming, omleidingen, adblockers en attributievensters verschillen allemaal van een GA4-sessie | Vergelijk gelijksoortige datums/tijdzones voordat je het als een trackingbug ziet                                                                            |
| Conversies aan OpenAI-zijde ontbreken, ondanks dat GA4 ze toont  | `oppref` is ergens verwijderd, of de event-ID's van Pixel/Conversions API komen niet overeen                                                    | Bevestig `oppref` dat het elke omleiding overleeft; controleer dat client-side en server-side events dezelfde event-ID delen (zie de gids voor deduplicatie) |

### QA-checklist vóór livegang

* [ ] Veld "Landing page query parameters" is bevestigd zichtbaar in precies dit klantaccount en de campagne-editor
* [ ] Tokenwaarden gekopieerd uit de UI van OpenAI, niet handmatig overgetypt
* [ ] Geen begin- `?` in het campagne-queryveld
* [ ] Overal één conventie met kleine letters gebruikt
* [ ] Elke parameter wordt beheerd door precies één laag (advertentie-URL **of** campagnesuffix, niet beide)
* [ ] Getest tegen een bestemmings-URL zonder bestaande querystring
* [ ] Getest tegen een bestemmings-URL die al niet-gerelateerde queryparameters heeft
* [ ] Getest tegen een bestemmings-URL met een fragment (bijv. `#pricing`)
* [ ] Elke omleiding gevolgd en de uiteindelijke browser-URL gecontroleerd — geen letterlijke `{...}` accolades ergens achtergebleven
* [ ] `oppref` aanwezig bij een geschikte testklik en bevestigd dat het omleidingen overleeft
* [ ] Bron, medium, campagne, `utm_id` en `utm_content` geverifieerd in GA4 DebugView of Realtime
* [ ] `oai_*` waarden bevestigd dat ze de website-/CRM-/serverlogs bereiken bij een testlead of -aankoop
* [ ] Herhaal de test na elke campagnewijziging, URL-wijziging, bulkupdate, feedvernieuwing of wijziging in MMP-link — dit is een bètafunctie en kan zonder kennisgeving veranderen


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.adpage.io/documentation/documentation-nl/integraties-marketingtools/chatgpt-ads/utm-parameters-and-dynamische-tracking-voor-chatgpt-ads.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
