Third-party scripts: hoe GTM, chat widgets en tracking pixels je shop vertragen
Terug naar blog

Third-party scripts: hoe GTM, chat widgets en tracking pixels je shop vertragen

AuthorRuthger Idema
11 mei 202611 min leestijd

Gemiddeld laadt een e-commerce pagina 25 third-party scripts. Die scripts zijn verantwoordelijk voor 40-60% van de totale laadtijd. Hoe je meet wat het kost, en wat je eraan doet.

Third-party scripts: hoe GTM, chat widgets en tracking pixels je shop vertragen

25 scripts. Dat is het gemiddeld aantal third-party scripts dat laadt op een e-commerce pagina, gemeten door de HTTP Archive in 2024.

Die scripts zijn verantwoordelijk voor 40 tot 60% van de totale pagina-laadtijd op mobiel. Elke marketing-tool, chat-widget, A/B-test-framework en tracking pixel die je toevoegt, vertraagt je shop. Niet theoretisch — meetbaar, in milliseconden, met directe impact op conversie.

Dit artikel legt uit hoe je meet wat het kost, welke strategieën de schade beperken, en wanneer server-side tagging de definitieve oplossing is.

Wat je leert in dit artikel

  • Hoe third-party scripts de Critical Rendering Path blokkeren
  • Welke scripts de meeste schade aanrichten en waarom
  • defer, async en type="module" correct toepassen
  • GTM server-side tagging: wat het oplost en wat het kost
  • Checklist voor third-party script-management

Hoe third-party scripts je pagina vertragen

De browser bouwt een pagina op via een sequentieel proces: HTML laden, parsen, DOM bouwen, CSS laden, render tree bouwen, renderen. Een script dat in die keten zit zonder correcte attributen, blokkeert alles wat erna komt.

Render-blokkerende scripts

Een script zonder defer of async blokkeert de HTML-parser. De browser stopt, downloadt het script, voert het uit, en gaat dan pas verder met de rest van de pagina.

html
<!-- Render-blokkerend — NIET doen -->
<script src="https://cdn.third-party.com/widget.js"></script>

<!-- Niet-blokkerend met defer — uitvoering na HTML-parse -->
<script src="https://cdn.third-party.com/widget.js" defer></script>

<!-- Niet-blokkerend met async — uitvoering zodra geladen -->
<script src="https://cdn.third-party.com/widget.js" async></script>

Het verschil tussen defer en async: defer bewaart de volgorde van uitvoering en wacht tot de HTML volledig is geparsed. async voert direct uit zodra het script is gedownload, ongeacht de HTML-staat. Voor scripts die DOM-elementen nodig hebben, gebruik je defer.

Het network waterfall-probleem

Third-party scripts laden vaak nog meer scripts. GTM laadt je tags. Je tags laden pixels. Die pixels laden SDKs. Eén GTM-container kan resulteren in 8-15 extra netwerkverzoeken.

Via Chrome DevTools (Network tab, filter op Third-party) of WebPageTest zie je de volledige keten. Typisch beeld van een gemiddelde webshop:

ScriptGrootteLaadtijdAanleiding
gtm.js85KB120msHandmatig geplaatst
analytics.js (GA4)45KB95msGTM-tag
fbevents.js (Meta Pixel)78KB180msGTM-tag
klaviyo.js62KB145msGTM-tag
intercom-widget.js180KB340msHandmatig geplaatst
livechat.js95KB210msGTM-tag
hotjar.js120KB260msGTM-tag
Totaal665KB~1,35s

665KB en 1,35 seconden extra laadtijd, bovenop je eigen JavaScript. Op een mobiele verbinding verdubbelt dit makkelijk.

Meer over de relatie met Core Web Vitals lees je in ons artikel over Core Web Vitals 2026 voor e-commerce.

Meten: welke scripts veroorzaken de meeste schade

Chrome DevTools: Performance-tab

  1. Open DevTools > Performance
  2. Klik op het opnamepictogram en laad de pagina opnieuw
  3. Zoek in de Flame Chart naar lange taken (rode hoekjes)
  4. Controleer of die taken veroorzaakt worden door third-party scripts

WebPageTest Waterfall

WebPageTest (webpagetest.org) toont een gedetailleerd watervaldiagram. Activeer de optie "Block Ads" om te vergelijken hoe de pagina zonder advertentie-scripts laadt. Het verschil in laadtijd is de kostprijs van die scripts.

Lighthouse third-party audit

Lighthouse rapporteert automatisch over third-party scripts. Kijk bij "Reduce the impact of third-party code". Het toont welke scripts het langst blokkeren en hoeveel milliseconden je bespaart als je ze uitstelt.

INP-impact meten

Interactie-vertragende scripts zijn moeilijker te isoleren. Gebruik het Chrome-extensie Web Vitals om real-user INP te meten. Scripts die de main thread blokkeren tijdens gebruikersinteractie — klikken, typen, scrollen — verhogen de INP direct.

Meer over INP voor webshops staat in ons artikel over Interaction to Next Paint voor e-commerce.

Strategieën om de impact te beperken

1. Facade pattern voor chat-widgets

Chat-widgets zijn de zwaarste third-party scripts. Intercom, Drift, LiveChat, Zendesk Chat — allemaal 100-200KB aan JavaScript dat laadt bij pageload, ook als de gebruiker de chat nooit opent.

De oplossing: laad een statische afbeelding als chat-knop. Laad het echte script pas wanneer de gebruiker op die knop klikt.

javascript
// Chat-widget facade
const chatButton = document.getElementById('chat-trigger');

chatButton.addEventListener('click', async () => {
  // Laad het echte chat-script pas bij klik
  const script = document.createElement('script');
  script.src = 'https://widget.intercom.io/widget/YOUR_ID';
  script.async = true;
  document.head.appendChild(script);

  // Verwijder de facade, toon echte widget
  chatButton.remove();
});

Resultaat: 0KB bij pageload in plaats van 180KB. De chat-functionaliteit is er nog steeds — maar wordt pas geladen als iemand er gebruik van wil maken.

2. Scripts uitstellen tot na de first user interaction

Sommige scripts hoeven niet te laden vóór de eerste gebruikersinteractie. Tracking pixels en marketing-scripts vallen hier vaak onder.

javascript
// Laad niet-essentiële scripts na de eerste interactie
function loadDeferredScripts() {
  // Google Ads remarketing
  const script1 = document.createElement('script');
  script1.src = 'https://www.googletagmanager.com/gtag/js?id=AW-XXXXX';
  script1.async = true;
  document.head.appendChild(script1);

  // Hotjar
  const script2 = document.createElement('script');
  script2.src = 'https://static.hotjar.com/c/hotjar-XXXXX.js';
  script2.async = true;
  document.head.appendChild(script2);
}

// Trigger na eerste scroll, klik of toetsaanslag
['scroll', 'click', 'keydown'].forEach(event => {
  window.addEventListener(event, loadDeferredScripts, { once: true });
});

3. Resource hints voor snellere third-party verbindingen

Gebruik dns-prefetch en preconnect om de DNS-lookup en TCP-handshake voor third-party domeinen te vervroegen.

html
<!-- DNS-lookup al doen terwijl de pagina laadt -->
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
<link rel="dns-prefetch" href="https://static.klaviyo.com">

<!-- Volledige verbinding opzetten voor kritische third-party scripts -->
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>

Besparing: 100-300ms per third-party domein op de eerste verbinding.

4. GTM-configuratie opschonen

GTM-containers groeien organisch. Tags die ooit zijn toegevoegd, worden zelden verwijderd. Een audit van een doorsnee GTM-container onthult gemiddeld 30-40% tags die niet meer actief worden gebruikt.

Stappenplan voor GTM-audit:

  1. Exporteer je GTM-container als JSON
  2. Controleer per tag: wanneer voor het laatst getriggerd? Wie heeft hem aangemaakt?
  3. Pauzeer tags die al 90 dagen niet zijn getriggerd
  4. Verwijder tags die al 180 dagen zijn gepauzeerd zonder bezwaar
  5. Consolideer triggers — meerdere tags op dezelfde trigger samenvoegen

GTM server-side tagging: de structurele oplossing

Client-side tagging heeft een fundamenteel probleem: de code draait in de browser van de gebruiker. Adblockers blokkeren het. ITP (Intelligent Tracking Prevention) in Safari beperkt cookies. En de performance-impact is direct.

GTM server-side tagging verschuift de tracking-logica naar een server die jij beheert. De browser stuurt één verzoek naar jouw server. Die server stuurt de data door naar Google Analytics, Meta, Klaviyo — zonder dat de browser de SDK's van die platforms laadt.

Architectuur van server-side GTM

Browser → Jouw GTM Server Container (bijv. op Google Cloud Run)
              ↓           ↓           ↓
         GA4 API    Meta CAPI    Klaviyo API

In plaats van drie SDK's in de browser, stuurt de browser één klein script naar jouw server.

Voordelen van server-side GTM

AspectClient-side GTMServer-side GTM
Browser JavaScript-impactHoog (80-120KB per vendor)Minimaal (< 5KB totaal)
Adblocker-gevoeligheidHoogLaag (eigen domein)
Cookielevensduur (Safari ITP)7 dagen (third-party)Volledig beheerd
DatavalidatieGeenMogelijk op server
Hosting-kostenGeen€30-100/maand (Cloud Run)
ImplementatiekostenLaagMiddel (20-40 uur)

Wanneer is server-side GTM de moeite waard?

Server-side GTM is zinvol als:

  • Je maandelijks 50.000+ sessies hebt (dan loont het tracking-kwaliteitsvoordeel)
  • Je zwaar leunt op remarketing (Meta, Google Ads) en last hebt van ITP/adblockers
  • Je duidelijke performance-problemen hebt door tracking-scripts
  • Je GDPR-compliance strak wil houden (alle data via jouw server)

Bij kleinere volumes: focus eerst op defer/async en facade-pattern. Dat levert 80% van de performance-winst voor 20% van de moeite.

Checklist: third-party script management

Meting:
  • [ ] Baseline gemeten via WebPageTest of Lighthouse
  • [ ] Alle third-party scripts geïnventariseerd (naam, domein, grootte, laadtijd)
  • [ ] INP gemeten via Web Vitals Chrome-extensie
Quick wins:
  • [ ] Alle scripts hebben defer of async
  • [ ] preconnect toegevoegd voor kritische third-party domeinen
  • [ ] GTM-container geauditeerd en opgeschoond
  • [ ] Chat-widget vervangen door facade pattern
Structurele aanpak:
  • [ ] Niet-essentiële scripts uitgesteld tot na eerste user interaction
  • [ ] Server-side GTM geëvalueerd op basis van volume en tracking-kwaliteit
  • [ ] Monitoring ingesteld: Core Web Vitals in Search Console, INP via RUM
Governance:
  • [ ] Proces voor het toevoegen van nieuwe third-party scripts (goedkeuringsproces)
  • [ ] Maandelijkse GTM-audit ingepland
  • [ ] Performance budget gedefinieerd en bewaakt

Conclusie: elk script heeft een prijs

Elke third-party tool die je toevoegt heeft een performance-prijs. Die prijs is meetbaar in milliseconden, en die milliseconden hebben een meetbare impact op conversie.

De aanpak is niet "gebruik geen third-party scripts". Het is: gebruik ze bewust, laad ze correct, en meet wat ze kosten. Dat begint bij het weten wat je hebt.

Lees ook: JavaScript bundel verkleinen voor aanvullende optimalisatietechnieken, en image optimalisatie voor webshops voor een ander groot deel van het paginagewicht.

Wij optimaliseren third-party script loading voor Magento- en Shopify-webshops. Wil je een overzicht van de impact van jouw scripts? Neem contact op voor een technische performance-analyse.

Veelgestelde vragen

Hoeveel third-party scripts is normaal voor een webshop?

De HTTP Archive meet gemiddeld 20-25 third-party requests per e-commerce pagina. Dat is het gemiddelde — niet het ideaal. Webshops die performance serieus nemen mikken op maximaal 8-12 third-party requests, waarvan de meeste worden uitgesteld tot na de eerste gebruikersinteractie.

Wat is het verschil tussen defer en async voor third-party scripts?

defer wacht met uitvoering tot de HTML is geparsed en bewaart de laadvolgorde. async laadt en voert uit zodra het script beschikbaar is, ongeacht de HTML-status. Voor third-party scripts die geen DOM-afhankelijkheden hebben (analytics, pixels) is async voldoende. Voor scripts die DOM-elementen manipuleren is defer veiliger.

Blokkeert GTM de pagina-rendering?

GTM zelf (het container-script) blokkeert niet als je het met async laadt. De tags die GTM laadt kunnen dat wél als ze synchrone scripts inladen. Controleer per tag in GTM of hij scripts laadt met async, en of die scripts zelf geen verdere synchrone requests veroorzaken.

Wanneer is server-side GTM de moeite waard?

Server-side GTM levert de meeste waarde bij webshops met meer dan 50.000 sessies per maand die zwaar leunen op remarketing-tracking (Meta, Google Ads) en last hebben van adblockers of Safari ITP. De implementatiekosten zijn 20-40 uur development. De hostingkosten zijn €30-100 per maand. Die investering verdient zich terug als je tracking-kwaliteit en de bijbehorende advertentie-efficiëntie verbeteren.

Mag ik third-party scripts gewoon verwijderen als ze te traag zijn?

Dat hangt af van de business-waarde van het script. Een chat-widget die gemiddeld vijf gesprekken per maand genereert rechtvaardigt 180KB extra JavaScript niet. Een retargeting-pixel die aantoonbaar bijdraagt aan 15% van de omzet wel. Maak de beslissing op basis van data, niet op basis van technische voorkeur.

Ruthger Idema

Geschreven door Ruthger Idema

15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.

Meer over ons team →
Deel dit artikel:

Wil je jouw e-commerce naar het volgende niveau?

Plan een vrijblijvend gesprek met onze experts over Magento, Shopify of Laravel maatwerk.

Plan een Tech Check