Tracking Validatie met n8n - Troubleshooting Guide

Bewerkt

Introductie

Met de AdPage n8n template kun je als agency zelfstandig tracking validaties uitvoeren op je klantcontainers. Deze handleiding legt stap voor stap uit hoe je de template importeert, configureert en uitbreidt met eigen queries.


Wat heb je nodig?

Voordat je begint, zorg dat je het volgende bij de hand hebt:

  • n8n account (Cloud of Self-hosted, versie 1.120.0 of hoger)

  • AdPage MCP URL (verkrijgbaar via trytagging.com)

  • Container ID van de klant die je wilt valideren


Stap 1: MCP URL ophalen

De MCP (Model Context Protocol) URL geeft je toegang tot de AdPage tracking database.

  1. Ga naar trytagging.com en log in

  2. Klik op "Data Assistent" in het menu of ga naar trytagging.com/mcp

  3. Klik op "Start now"

  4. Kopieer de MCP URL die wordt getoond

⚠️ Belangrijk: Houd je MCP URL geheim. Deze geeft toegang tot alle tracking data van jouw klanten.


Stap 2: Template importeren in n8n

Starter template URL

https://adpage.b-cdn.net/n8n-templates/starter-template-n8n.json

Importeren in n8n

  1. Open n8n en ga naar Workflows

  2. Klik op "Add Workflow" β†’ "Import from URL"

  3. Plak de bovenstaande URL

  4. Klik op "Import"

πŸ’‘ Tip: Je kunt de URL ook direct openen in je browser om het JSON bestand te downloaden.

De template bevat de volgende nodes:

Node

Type

Functie

▢️ Start Here

Manual Trigger

Start de workflow

βš™οΈ Configure Variables

Set

Configureer container_id en parameters

πŸ”§ Build Query

Code

Bouwt de SQL query

πŸš€ MCP Client

MCP Client

Voert query uit op AdPage database

πŸ” Analyze

Code

Analyseert resultaten

πŸ“‹ Format Report

Code

Formatteert het rapport


Stap 3: MCP Client configureren

  1. Klik op de πŸš€ MCP Client node

  2. Klik op "Create New Credential"

  3. Selecteer "MCP Client API"

  4. Plak je MCP URL in het URL veld

  5. Klik op "Save"

De credential wordt nu veilig opgeslagen en kan hergebruikt worden in andere workflows.


Stap 4: Container ID instellen

  1. Klik op de βš™οΈ Configure Variables node

  2. Pas de volgende waarden aan:

Variabele

Waarde

Voorbeeld

container_id

UUID van de klantcontainer

e7c7f173-02f9-49dc-84bd-8e074235822e

validation_days

Aantal dagen om te analyseren

7

client_name

Naam van de klant

Mijn Klant B.V.

Container ID vinden

Je vindt de Container ID in het AdPage dashboard:

  1. Ga naar app.trytagging.com

  2. Selecteer de klant

  3. Kopieer de Container ID uit de URL of instellingen


Stap 5: Workflow uitvoeren

  1. Klik op "Test Workflow" of druk op Ctrl/Cmd + Enter

  2. De workflow doorloopt alle nodes

  3. Bekijk het rapport in de πŸ“‹ Format Report node

Wat wordt er geanalyseerd?

De standaard template analyseert de outgoing_requests tabel:

  • Platform delivery: Hoeveel events naar elk platform (Meta, Google, TikTok, etc.)

  • Success rate: Percentage succesvolle requests (HTTP 2xx)

  • Error rate: Percentage mislukte requests

  • Event types: Welke events worden verstuurd


Beschikbare tabellen

Je hebt toegang tot vier hoofdtabellen:

Tabel

Beschrijving

Tijdstempel kolom

incoming_requests

Client-side events (TryTagging)

timestamp

outgoing_requests

Server-side forwarding naar platforms

created_at

ga4_request_logs

GA4 native events

timestamp

webhook_request_logs

Webhook conversies

timestamp


Eigen queries schrijven

Basis query structuur

Elke query moet een PREWHERE clause hebben voor de container_id:

SELECT 
  kolom1,
  kolom2,
  COUNT(*) as aantal
FROM tabelnaam
PREWHERE container_id = 'jouw-container-id'
WHERE timestamp >= now() - INTERVAL 7 DAY
GROUP BY kolom1, kolom2
ORDER BY aantal DESC
LIMIT 100

πŸ’‘ Tip: Gebruik altijd PREWHERE voor container_id - dit is veel sneller dan WHERE.

Voorbeeldqueries

E-commerce funnel analyse

SELECT 
  multiIf(
    event_name LIKE '%view_item%', '1. Product View',
    event_name LIKE '%add_to_cart%', '2. Add to Cart',
    event_name LIKE '%begin_checkout%', '3. Checkout',
    event_name LIKE '%purchase%', '4. Purchase',
    'Other'
  ) as funnel_step,
  COUNT(*) as events,
  uniqExact(client_id) as unique_users
FROM incoming_requests
PREWHERE container_id = 'jouw-container-id'
WHERE timestamp >= now() - INTERVAL 7 DAY
GROUP BY funnel_step
ORDER BY funnel_step

UTM source/medium overzicht

SELECT 
  source,
  medium,
  COUNT(*) as events,
  uniqExact(session_id) as sessions
FROM incoming_requests
PREWHERE container_id = 'jouw-container-id'
WHERE timestamp >= now() - INTERVAL 7 DAY
  AND source != ''
GROUP BY source, medium
ORDER BY sessions DESC
LIMIT 20

Platform delivery per dag

SELECT 
  toDate(created_at) as datum,
  platform,
  COUNT(*) as events,
  countIf(status_code >= 200 AND status_code < 300) as success,
  countIf(status_code < 200 OR status_code >= 300) as errors
FROM outgoing_requests
PREWHERE container_id = 'jouw-container-id'
WHERE created_at >= now() - INTERVAL 7 DAY
GROUP BY datum, platform
ORDER BY datum DESC, events DESC

Client ID coverage check

SELECT 
  toDate(timestamp) as datum,
  COUNT(*) as totaal,
  countIf(client_id != '') as met_client_id,
  round(countIf(client_id != '') / COUNT(*) * 100, 1) as coverage_pct
FROM incoming_requests
PREWHERE container_id = 'jouw-container-id'
WHERE timestamp >= now() - INTERVAL 7 DAY
GROUP BY datum
ORDER BY datum

Meta/Facebook events controleren

SELECT 
  event_name,
  COUNT(*) as events,
  countIf(status_code = 200) as success,
  countIf(status_code != 200) as failed,
  round(countIf(status_code = 200) / COUNT(*) * 100, 1) as success_pct
FROM outgoing_requests
PREWHERE container_id = 'jouw-container-id'
WHERE created_at >= now() - INTERVAL 7 DAY
  AND platform = 'meta'
GROUP BY event_name
ORDER BY events DESC

Workflow uitbreiden

Slack notificatie toevoegen

  1. Voeg een Slack node toe na de Format Report node

  2. Configureer je Slack workspace

  3. Selecteer het kanaal voor notificaties

  4. Map het formatted_report veld naar het bericht

Automatische scheduling

  1. Vervang de Manual Trigger door een Schedule Trigger

  2. Stel de frequentie in (bijv. dagelijks om 09:00)

  3. Activeer de workflow

Google Sheets logging

  1. Voeg een Google Sheets node toe

  2. Configureer je Google account

  3. Map de resultaten naar kolommen in je spreadsheet


Veelvoorkomende problemen

"Invalid container_id format"

Oorzaak: De container_id is geen geldige UUID.

Oplossing: Controleer of de container_id het juiste formaat heeft: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

"No data found"

Oorzaak: Geen tracking data in de opgegeven periode.

Mogelijke oplossingen:

  • Controleer of de container actief is

  • Vergroot de validation_days waarde

  • Controleer of je de juiste tabel opvraagt

Query timeout

Oorzaak: Te veel data om te verwerken.

Oplossingen:

  • Voeg een LIMIT clause toe

  • Verklein de tijdsperiode

  • Gebruik PREWHERE in plaats van WHERE voor container_id

MCP connectie mislukt

Oorzaak: Ongeldige of verlopen MCP URL.

Oplossing: Haal een nieuwe MCP URL op via trytagging.com β†’ Data Assistent


Tips voor gevorderden

Query optimalisatie

  • Gebruik PREWHERE voor filters op container_id (verplicht) en andere indexed kolommen

  • Gebruik countIf() in plaats van aparte queries met WHERE

  • Beperk GROUP BY tot essentiΓ«le kolommen

  • Voeg altijd een LIMIT toe bij grote datasets

Nuttige ClickHouse functies

Functie

Beschrijving

Voorbeeld

uniqExact()

Unieke waarden tellen

uniqExact(client_id)

countIf()

Conditioneel tellen

countIf(status_code = 200)

toDate()

Timestamp naar datum

toDate(timestamp)

multiIf()

Meerdere condities

Zie funnel voorbeeld

JSONExtractString()

JSON veld extracten

JSONExtractString(raw_request, 'data', 'event', 'ecommerce', 'transaction_id')

AI-assisted query schrijven

Je kunt AI tools gebruiken om queries te schrijven. Geef context mee zoals:

"Schrijf een ClickHouse query voor de incoming_requests tabel om duplicate transaction IDs te vinden. Gebruik PREWHERE voor container_id."


Was dit artikel nuttig?

Onze excuses! Zou je ons meer willen vertellen?

Bedankt voor de feedback!

Er is een probleem opgetreden bij het verzenden van uw feedback
Controleer uw verbinding en probeer het opnieuw.