> 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/website-integraties/aangepast.md).

# Aangepast

Hoe je server-side tagging instelt voor een aangepaste CMS-webshop

***

## Server-side tagging instellen voor Custom

Dit artikel neemt je mee door de volledige setup van server-side tagging op een Custom-winkel: het genereren van je Google Tag Manager-templates, het importeren ervan, het invullen van je ID's, het testen ervan en uiteindelijk het verwijderen van de oude trackingkoppelingen die custom cms voor je heeft gemaakt.

### Voordat je begint

Dit artikel gaat verder waar **Aan de slag** ophoudt. Zorg ervoor dat alle stappen in het artikel [AdPage-container instellen](/documentation/documentation-nl/aan-de-slag/adpage-container-instellen.md) zijn gevolgd. Dat betekent dat:

* [ ] Jouw **AdPage-container** is aangemaakt.
* [ ] Jouw AdPage-container is **verbonden met je GTM servercontainer**.
* [ ] De **CNAME-record** is toegevoegd in je DNS-instellingen, zodat tagging draait op je eigen (sub)domein.
* [ ] De custom [user Date-scripts ](https://docs.adpage.io/integrations-websites/custom/add-the-custom-user-data-script-to-your-website) setup staat correct op je site.
* [ ] De [eCommerce dataLayer- en backend-webhooks-setup](https://docs.adpage.io/integrations-websites/custom/custom-ecommerce-datalayer-and-backend-webhooks-setup) staan correct op je site.

{% hint style="warning" %}
Als een van deze stappen nog openstaat, werk die dan eerst af. Alles hieronder gaat ervan uit dat je servercontainer bereikbaar is op je eigen domein en dat de User data-script, datalayer-events en optionele webhooks data doorsturen.
{% endhint %}

{% hint style="info" %}
We raden aan om de setup eerst op een staging-omgeving in te richten en vervolgens alle onderstaande stappen te volgen op basis van de frontend van de staging-omgeving.
{% endhint %}

***

### Stap 1: Genereer je templates in de Template Library

Je hoeft je tags, triggers en variabelen niet handmatig te bouwen. AdPage's Template Library genereert voor jou een complete, geteste Google Tag Manager-setup voor custom cms.

1. Ga naar [data.adpage.io/template-library](https://data.adpage.io/template-library).
2. Selecteer de marketingplatformen waar je data naartoe wilt sturen, bijvoorbeeld Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads of Pinterest Ads.
3. Selecteer het Consent Management Platform dat je gebruikt op je custom webshop.
4. Genereer de templates. Je krijgt **twee JSON-bestanden**: één voor je GTM **web** container en één voor je GTM **server** container.
5. Download beide bestanden en houd ze bij de hand.

<figure><img src="https://2136026570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA65KwL1NwewlJbtCXsXd%2Fuploads%2Fo4nPmZrjh5NFMGAYOnPp%2Fimage.png?alt=media&amp;token=a8b98f2d-df97-4c6a-9a20-c91350247029" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Selecteer alleen de platformen die je daadwerkelijk gebruikt. Elk platform dat je toevoegt, maakt extra tags en constante variabelen aan die je later nog moet invullen.
{% endhint %}

***

### Stap 2: Importeer de webcontainertemplate

1. Open je **GTM-webcontainer**.
2. Ga naar **Beheer** en klik op **Container importeren**.
3. Selecteer het **web** JSON-bestand dat je hebt gedownload.
4. Kies een werkruimte.&#x20;
   * Als je niet-gepubliceerde wijzigingen hebt in je standaardwerkruimte, raden we aan te importeren in een **nieuwe werkruimte** zodat je import los blijft van ander werk dat nog in uitvoering is.
5. Kies de importoptie:
   * **Samenvoegen en conflicterende tags, triggers en variabelen hernoemen** voor een container die al een setup bevat. Er wordt niets bestaands verwijderd.
   * **Overschrijven** alleen voor een gloednieuwe, lege container.
6. Controleer de voorbeeldweergave van de wijzigingen die GTM je laat zien en klik vervolgens op **Bevestigen**.

<figure><img src="https://2136026570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA65KwL1NwewlJbtCXsXd%2Fuploads%2F3CKvxX1mSb1O2JBpcE4Q%2Fimage.png?alt=media&amp;token=ee12042d-41d9-4406-95f9-9e2eaf8d3bc1" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Publiceer je GTM-webcontainer nog niet. De tags in de import missen nog steeds je ID's, die je in stap 4 invult.
{% endhint %}

***

### Stap 3: Importeer de servercontainertemplate

Herhaal dezelfde stappen in je **GTM-servercontainer** met het **server** JSON-bestand.

1. Open je **GTM-servercontainer**.
2. Ga naar **Beheer** en klik op **Container importeren**.
3. Selecteer het **server** JSON-bestand.
4. Importeer in een nieuwe werkruimte en kies **Samenvoegen en conflicterende tags, triggers en variabelen hernoemen**.
5. Controleer de voorbeeldweergave en klik op **Bevestigen**.
6. Ga naar **Clients** en controleer of er een extra GA4-client is ingesteld. Zo ja, verwijder dan de geïmporteerde GA4-client.

<figure><img src="https://2136026570-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA65KwL1NwewlJbtCXsXd%2Fuploads%2FyhuHijhZUYGKSi2cG86j%2Fimage.png?alt=media&amp;token=fbe37ee9-0cec-4291-8c7d-b9f5569cb1d6" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Publiceer je GTM-servercontainer nog niet. De tags in de import missen nog steeds je ID's en tokens, die je in stap 4 invult.
{% endhint %}

***

### Stap 4: Vul de constante variabelen in

Beide templates zijn opgebouwd rond **constante variabelen**. Alle ID's, tokens en instellingen staan op één plek, zodat je nooit individuele tags hoeft te openen om iets aan te passen.

1. Ga in je GTM-webcontainer naar **Variabelen**.
2. Open elke constante variabele, die je herkent aan de "@" in de naam. Vul per variabele de juiste waarde in. Bekijk de tabel hieronder om te zien welk ID of Token je moet invullen.
3. Sla elke variabele op.
4. Ga in je GTM-servercontainer naar **Variabelen**.
5. Open elke constante variabele, die je herkent aan de "@" in de naam. Vul per variabele de juiste waarde in. Bekijk de tabel hieronder om te zien welk ID of Token je moet invullen.
6. Sla elke variabele op.

Afhankelijk van de platformen die je hebt geselecteerd, vul je doorgaans het volgende in:

<table><thead><tr><th width="118">Container</th><th width="240">Variabele</th><th>Waarde</th></tr></thead><tbody><tr><td>Web</td><td>Servercontainer-URL</td><td>Het taggingdomein uit je CNAME-record, bijvoorbeeld: <code>https://tagging.domain.com</code></td></tr><tr><td>Web</td><td>GA4-metings-ID</td><td>De metings-ID van je GA4-property: <br><code>G-XXXXXXXXXX</code></td></tr><tr><td>Web</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/meta-ads/waar-je-de-meta-pixel-id-en-de-meta-api-token-vindt.md">Meta Pixel-ID</a></td><td>Je Pixel-ID uit Meta Events Manager</td></tr><tr><td>Web</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/tiktok-ads/waar-je-de-tiktok-pixel-id-en-de-tiktok-api-token-vindt.md">TikTok Pixel-ID</a></td><td>Je Pixel-ID uit TikTok Events Manager</td></tr><tr><td>Web</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/pinterest-ads/waar-je-de-pinterest-tag-id-advertiser-id-en-api-token-vindt.md">Pinterest Tag-ID</a></td><td>Je Pinterest Tag-ID, te vinden in de Tag Manager van je Pinterest Ads-account</td></tr><tr><td>Web</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/linkedin-ads/waar-je-de-linkedin-partner-id-conversion-ids-en-api-token-vindt.md">LinkedIn Partner-ID</a></td><td>Je LinkedIn Partner-ID, te vinden in de Signals Manager van je LinkedIn Ads-account</td></tr><tr><td>Web</td><td>Cookiebot Domeingroep-ID</td><td>De Domeingroep-ID uit je Cookiebot-account</td></tr><tr><td>Server</td><td>GA4-metings-ID</td><td>De metings-ID van je GA4-property: <br><code>G-XXXXXXXXXX</code></td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/meta-ads/waar-je-de-meta-pixel-id-en-de-meta-api-token-vindt.md">Meta Pixel-ID</a></td><td>Je Pixel-ID uit Meta Events Manager</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/meta-ads/waar-je-de-meta-pixel-id-en-de-meta-api-token-vindt.md">Meta API-token</a></td><td>De API-token van je Pixel uit Meta Events Manager</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/tiktok-ads/waar-je-de-tiktok-pixel-id-en-de-tiktok-api-token-vindt.md">TikTok Pixel-ID</a></td><td>Je Pixel-ID uit TikTok Events Manager</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/tiktok-ads/waar-je-de-tiktok-pixel-id-en-de-tiktok-api-token-vindt.md">TikTok API-token</a></td><td>De API-token van je Pixel uit TikTok Events Manager</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/google-ads/waar-je-de-google-ads-conversion-id-en-conversielabels-vindt.md">Google Ads Conversie-ID</a></td><td>Je Google Ads Conversie-ID: <br><code>AW-XXXXXXXXXX</code> minus de <code>AW-</code> deel</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/google-ads/waar-je-de-google-ads-conversion-id-en-conversielabels-vindt.md">Google Ads-conversielabels</a></td><td>Maak nieuwe <code>purchase</code>, <code>add_to_cart</code>en <code>begin_checkout</code> conversies in Google Ads. Zodra het is ingesteld, kun je hun conversielabels vinden.</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/pinterest-ads/waar-je-de-pinterest-tag-id-advertiser-id-en-api-token-vindt.md">Pinterest Adverteerders-ID</a></td><td>De Adverteerders-ID uit je advertentieaccount. Deze ID begint meestal met 549.</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/pinterest-ads/waar-je-de-pinterest-tag-id-advertiser-id-en-api-token-vindt.md">Pinterest API-token</a></td><td>De API-token die je vindt in je Conversions API-instellingen van je Pinterest Business-account.</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/linkedin-ads/waar-je-de-linkedin-partner-id-conversion-ids-en-api-token-vindt.md">LinkedIn API-token</a></td><td>De API-token die je kunt genereren in je LinkedIn Campaign Manager bij de Sources.</td></tr><tr><td>Server</td><td><a href="/documentation/documentation-nl/integraties-marketingtools/linkedin-ads/waar-je-de-linkedin-partner-id-conversion-ids-en-api-token-vindt.md">LinkedIn-conversie-ID's</a></td><td>Maak nieuwe <code>purchase</code>, <code>add_to_cart</code>en <code>begin_checkout</code> conversies in LinkedIn Ads. Zodra het is ingesteld, kun je hun conversie-ID's vinden in de URL van de conversie.</td></tr></tbody></table>

{% hint style="info" %}
Laat een constante variabele nooit leeg. Een lege ID betekent dat tags afgaan zonder bestemming, wat later zichtbaar wordt als ontbrekende conversies of mislukte uitgaande verzoeken.
{% endhint %}

***

### Stap 5: Test in voorbeeldmodus

Je hebt zojuist containertemplates geïmporteerd met volledige tracking voor GA4 en de marketingplatformen die je hebt geselecteerd. Dat betekent dat alles wat je nodig hebt nu aanwezig is in je GTM-containers, en alles wat al bestond voor hetzelfde doel is een duplicaat.

#### **Schakel eerst je oude tags uit**

Loop door de tags in je webcontainer en pauzeer of verwijder elke tag die iets meet wat je nieuwe setup nu afhandelt. In de praktijk is dit je oude GA4-configuratietag, alle GA4-eventtags voor e-commerce-stappen zoals `add_to_cart` en `purchase`je Meta Pixel-tags, je Google Ads remarketingtags en alle aangepaste HTML-tags die data rechtstreeks naar een platform sturen.&#x20;

Als je niet zeker weet of je een oude tag later nog nodig hebt, pauzeer hem dan in plaats van hem te verwijderen. Je kunt hem later altijd verwijderen in een volgende versie, zodra de nieuwe setup zich heeft bewezen. Oude triggers en variabelen mogen blijven staan; ze doen op zichzelf niets.

Sla je dit over, dan laat de voorbeeldmodus twee keer alles zien en worden je conversies na publicatie dubbel geteld.

#### Test beide containers

1. Open de **Voorbeeldmodus** in je GTM-webcontainer en vul de URL van je webshop in.
2. Open de **Voorbeeldmodus** ook in je GTM-servercontainer, zodat je dezelfde hits server-side kunt volgen terwijl ze binnenkomen.
3. Doorloop de volledige customer journey en controleer of elke stap één keer afgaat, met de juiste e-commerceparameters:
   * `page_view`
   * `view_item_list`
   * `view_item`
   * `add_to_cart`
   * `view_cart`
   * `remove_from_cart`
   * `begin_checkout`
   * `add_shipping_info`
   * `add_payment_info`
   * `purchase`
4. Controleer voor elke gebeurtenis in de **server** container of het GA4-eventverzoek binnenkomt en of je platformtags afgaan en een succesvolle reactie teruggeven.

***

### Stap 6: Opruimen, uitrollen en publiceren

Alles tot nu toe is uitgevoerd in je staging-omgeving. Live gaan betekent dat de custom cms-deploy en de GTM-publicatie in de juiste volgorde moeten gebeuren, en er moet eerst nog één ronde opruimwerk worden gedaan.

#### **Tracking-scripts verwijderen die nu server-side worden afgehandeld**

Elk platform dat je naar je servercontainer hebt verplaatst, mag niet langer rechtstreeks in je Custom-frontend worden geladen. Als je Meta Ads via server-side tagging hebt ingesteld, moet de basiscode van Meta Pixel uit je theme weg. Hetzelfde geldt voor een hardcoded gtag.js-fragment voor GA4 of Google Ads, een TikTok-pixel, een Pinterest-tag of elke andere pixel die nu vanuit de servercontainer wordt afgevuurd. Als je theme een GTM-snippet bevat die daar handmatig is geplaatst, verwijder die dan ook, omdat de AdPage-module zelf de koppeling met de GTM-webcontainer laadt.

Loop deze lijst samen met je developer door voordat er iets wordt gepusht, zodat de verwijderingen en de module in dezelfde release naar productie gaan.

#### **Naar productie uitrollen**

Vraag je custom cms-developer om de module en de wijzigingen in het theme naar productie te pushen. Wacht tot de deploy is bevestigd en je de wijzigingen in scripts en dataLayer op je live site kunt zien.

#### **Beide GTM-containers publiceren**

Test opnieuw in de voorbeeldmodi op de live site. Als alles nog steeds werkt zoals bedoeld, kun je je web- en servercontainer publiceren. Gebruik een versienaam en beschrijving die je later herkent, bijvoorbeeld "AdPage server-side tagging", zodat je kunt teruggaan naar de vorige versie als er toch iets niet blijkt te kloppen.

Voer na publicatie een testaankoop uit op je live site en controleer in de AdPage-interface en je GA4-realtime rapport of de gebeurtenissen binnenkomen en de conversies één keer worden geregistreerd. Elke koppeling die custom cms nog rechtstreeks met een advertentieplatform onderhoudt, stuurt dezelfde gebeurtenis een tweede keer, wat leidt tot dubbele conversies en opgeblazen omzet in je rapporten.

***

### Hulp nodig?

Zie je nog steeds ontbrekende gebeurtenissen, dubbele conversies of niet-toegewezen verkeer na het volgen van deze stappen? Neem contact op met ons supportteam en we kijken er samen met je naar.


---

# 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/website-integraties/aangepast.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.
