> 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/voeg-het-aangepaste-user-data-script-toe-aan-je-website.md).

# Voeg het aangepaste User Data Script toe aan je website

Dit artikel legt uit hoe je het AdPage User Data Script toevoegt aan een aangepaste website of CMS. Dit script verzamelt marketing- en apparaatgegevens. Het pusht ook het trytagging\_user\_data-event naar de dataLayer.

{% hint style="info" %}
**Opmerking:** Gebruik dit script alleen wanneer de AdPage-plugin of app NIET **NIET** geïnstalleerd is. De AdPage-plugin of app regelt dit automatisch voor Shopify, WooCommerce, WordPress, Magento en Lightspeed.
{% endhint %}

### Wanneer moet je dit script gebruiken?

| Situatie                              | Script vereist? |
| ------------------------------------- | --------------- |
| Aangepast CMS zonder de AdPage-plugin | ✅ Ja            |
| Maatwerkwebsite                       | ✅ Ja            |
| Platform zonder AdPage-koppeling      | ✅ Ja            |
| Shopify met de AdPage-app             | ❌ Nee           |
| WooCommerce met de AdPage-plugin      | ❌ Nee           |
| WordPress met de AdPage-plugin        | ❌ Nee           |
| Magento met de AdPage-extensie        | ❌ Nee           |
| Lightspeed met de AdPage Pixel        | ❌ Nee           |

***

### Wat doet dit script?

Het User Data Script verzamelt automatisch:

* **Apparaatinformatie:** Browser, besturingssysteem en schermresolutie.
* **Marketinggegevens:** UTM-parameters, verwijzers, campagnedata en sessie-ID's.
* **Gebruikersidentificatie:** Client-ID, sessie-ID en sessietelling voor nauwkeurige attributie.

Deze gegevens worden beschikbaar in de dataLayer via `trytagging_user_data`. Dit event start alle andere tracking. Zonder dit wordt trackingdata niet correct verwerkt.

#### Waarom is de laadvolgorde belangrijk?

De `trytagging_user_data` event bevat belangrijke identificatiegegevens. Deze omvatten `client_id`, `session_id`en `session_count`. Alle volgende events gebruiken ze. Er ontstaan problemen als andere dataLayer-events, zoals `view_item` of `add_to_cart`, worden gepusht **vóór** dit script laadt:

* Google Tag mist vereiste configuratieparameters.
* Sessies kunnen niet correct worden toegewezen.
* Webhooks werken niet correct omdat marketinggegevens ontbreken.
* GA4 en advertentieplatforms ontvangen onvolledige gegevens of geen gegevens.

***

### Stap 1: Zoek je gekoppelde domein

Voordat je het script installeert, heb je je **gekoppelde domein**. Je kunt het op twee manieren vinden.

#### Optie A: Gebruik de installatiekoppeling

Als je van AdPage een installatiekoppeling hebt ontvangen, staan het domein in de instructies.

#### Optie B: Gebruik het Trytagging-dashboard

1. Ga naar de [adpage-platform](https://data.adpage.io/) en meld je aan.
2. Selecteer de juiste container.
3. Ga naar **Implementatie** → **Domeinnaam**.
4. Kopieer je gekoppelde domein, bijvoorbeeld `tagging.yourwebsite.com`.

{% hint style="info" %}
**Voorbeeld:** Als je gekoppelde domein is `tagging.webshop.nl`, gebruik `https://tagging.webshop.nl/user-data-minified.js` als de script-URL.
{% endhint %}

***

### Stap 2: Installeer het script

{% hint style="warning" %}
**Belangrijk: De laadvolgorde is cruciaal.**

Dit script **MOET** laden en uitvoeren **VOORDAT** andere dataLayer-events worden gepusht. Het `trytagging_user_data` event start je trackingconfiguratie. Zonder dit kan Google Tag Manager events zoals `view_item`, `add_to_cart`en `purchase` niet correct verwerken.

**Plaats dit script:**

* Zo vroeg mogelijk in de `<head>` sectie.
* Vóór het Google Tag Manager-script.
* Vóór alle andere tracking-scripts.
  {% endhint %}

Kopieer het volgende script. **Vervang** `[YOUR_LINKED_DOMAIN]` met het gekoppelde domein uit stap 1.

```html
<script>
(function() {
  // Functie om extern script met defer te laden
  function loadScript(url) {
    return new Promise(function(resolve, reject) {
      var script = document.createElement('script');
      script.defer = true;
      script.src = url;
      script.onload = resolve;
      script.onerror = reject;
      document.head.appendChild(script);
    });
  }
  
  // Functie om te controleren of taggingHelpers beschikbaar is
  function checkTaggingHelpers(timeout) {
    timeout = timeout || 10000;
    var startTime = Date.now();
    return new Promise(function(resolve, reject) {
      function check() {
        if (window.taggingHelpers && 
            typeof window.taggingHelpers.getMarketingObject === 'function' && 
            typeof window.taggingHelpers.getDeviceInfo === 'function') {
          resolve();
        } else if (Date.now() - startTime > timeout) {
          reject(new Error('Time-out bij het wachten op taggingHelpers'));
        } else {
          setTimeout(check, 50);
        }
      }
      check();
    });
  }
  
  // Functie om gegevens uit taggingHelpers te verzamelen
  function collectData() {
    try {
      return {
        event: 'trytagging_user_data',
        device: window.taggingHelpers.getDeviceInfo() || {},
        marketing: window.taggingHelpers.getMarketingObject() || {}
      };
    } catch (error) {
      console.error('Fout bij het verzamelen van tagginggegevens:', error);
      return null;
    }
  }
  
  // Functie om naar dataLayer te pushen
  function pushToDataLayer(data) {
    if (!data) return;
    
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push(data);
  }
  
  // Hoofduitvoering
  function init() {
    loadScript('https://[YOUR_LINKED_DOMAIN]/user-data-minified.js')
      .then(function() {
        return checkTaggingHelpers();
      })
      .then(function() {
        var data = collectData();
        pushToDataLayer(data);
      })
      .catch(function(error) {
        console.error('Fout in tagging-initialisatie:', error);
      });
  }
  
  // Start de initialisatie wanneer de DOM gereed is
  if (document.readyState !== 'loading') {
    init();
  } else {
    document.addEventListener('DOMContentLoaded', init);
  }
})();
</script>
```

#### Voorbeeld met een gekoppeld domein

Als je gekoppelde domein is `tagging.webshop.nl`, vervang regel 42:

```javascript
// Van:
loadScript('https://[YOUR_LINKED_DOMAIN]/user-data-minified.js')

// Naar:
loadScript('https://tagging.webshop.nl/user-data-minified.js')
```

***

### Stap 3: Controleer de installatie

Controleer na het toevoegen van het script of het correct werkt.

#### Controle 1: Browserconsole

1. Open je website in Chrome of Firefox.
2. Open Ontwikkelaarstools met `F12` of `Cmd` + `Optie` + `I`.
3. Selecteer het **Console** tabblad.
4. Controleer dat er geen rode fouten zijn met betrekking tot `tagging` of `user-data`.

#### Controle 2: Controleer de dataLayer

1. Voer `dataLayer` in de console.
2. Druk op Enter.
3. Zoek een object met `event: "trytagging_user_data"`.
4. Controleer de `marketing` en `device` objecten gegevens bevatten.

**Voorbeeld van juiste uitvoer:**

```javascript
{
  event: "trytagging_user_data",
  device: {
    browser: "Chrome",
    os: "Windows",
    // ... meer apparaatinformatie
  },
  marketing: {
    user_id: "abc123...",
    session_id: "xyz789...",
    // ... meer marketinginformatie
  }
}
```

#### Controle 3: Netwerktabblad

1. Selecteer het **Netwerk** tabblad in Ontwikkelaarstools.
2. Vernieuw de pagina.
3. Filter op `user-data`.
4. Bevestigen `user-data-minified.js` succesvol geladen met status `200`.

***

### Stap 4: Configureer Google Tag Manager (optioneel)

Om het script via Google Tag Manager te beheren in plaats van via je broncode:

1. Maak een **Custom HTML-tag** in GTM.
2. Plak het volledige script, inclusief de `<script>` tags.
3. Stel de trigger in op **Alle pagina's** of **DOM Ready**.
4. Zorg ervoor dat deze tag wordt geactiveerd **als eerste**. Gebruik Tag Sequencing indien nodig.

{% hint style="info" %}
**Belangrijk:** Push `trytagging_user_data` vóór alle andere e-commerce-events. Configureer andere tags om te triggeren **na** op dit event.
{% endhint %}

***

### Probleemoplossing

#### Het script wordt niet geladen

**Mogelijke oorzaken:**

* De domeinnaam is onjuist.
* Het gekoppelde domein is niet actief in Trytagging.
* De URL bevat een typfout.

**Oplossing:**

1. Controleer of je het juiste domein uit Trytagging hebt gekopieerd.
2. Test `https://[your-domain]/user-data-minified.js` rechtstreeks in je browser.
3. Neem contact op met de AdPage-ondersteuning als je een `404` foutmelding krijgt.

#### Geen gegevens in de dataLayer

**Mogelijke oorzaken:**

* Het script verschijnt na andere tracking-scripts.
* Er treedt een JavaScript-fout op op de pagina.
* Een adblocker blokkeert het script.

**Oplossing:**

1. Plaats het script aan het begin van de `<head>` sectie.
2. Controleer de console op JavaScript-fouten.
3. Test in een incognitovenster zonder extensies.

#### `taggingHelpers` is niet gedefinieerd

**Mogelijke oorzaken:**

* Het externe script is nog niet geladen.
* Er is een netwerkprobleem opgetreden.

**Oplossing:** Het script wacht maximaal 10 seconden op het laden. Controleer als het probleem aanhoudt:

1. Of de URL correct is.
2. Of de console CORS-fouten toont.
3. Of een firewall het script blokkeert.

#### Consolefout: `Time-out bij het wachten op taggingHelpers`

Dit betekent dat het script na 10 seconden nog steeds niet beschikbaar was.

**Oplossing:**

1. Controleer je internetverbinding.
2. Controleer of de script-URL bereikbaar is.
3. Verhoog de time-outwaarde indien nodig: `timeout = timeout || 10000;` op regel 11.

***

### Veelgestelde vragen

#### Kan ik dit combineren met de volledige custom dataLayer?

Ja. Dit script biedt alleen de `trytagging_user_data` gebeurtenis.

#### Moet ik het script aan elke pagina toevoegen?

Ja. Het script moet op **elke pagina** van je website verschijnen. Push `trytagging_user_data` op elke pagina voordat andere tracking-events plaatsvinden.

#### Werkt dit script met Consent Mode?

Ja. Het script ondersteunt Google Consent Mode. Wanneer je een CMP gebruikt, worden gegevens alleen verzameld nadat de bezoeker toestemming heeft gegeven.

#### Heb ik dit script nodig voor Data Assistant?

Ja. De Data Assistant-tag vereist `trytagging_user_data` als start-event. Zonder dit script werkt Data Assistant niet correct.

#### Wat als ik meerdere domeinen heb?

Elk domein heeft een afzonderlijk gekoppeld domein in Trytagging nodig. Werk het script voor elk domein bij met de juiste URL.


---

# 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/voeg-het-aangepaste-user-data-script-toe-aan-je-website.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.
