Advertentieklik-attributie voor WhatsApp
Als je Meta- of Google-advertenties naar een pagina op je eigen website leidt en die pagina een WhatsApp-knop heeft, kan DM Champ je vertellen van welke advertentieklik elk WhatsApp-gesprek afkomstig is. Je plakt een klein script op je website. Wanneer een bezoeker op je WhatsApp-knop tikt, wordt de klik onthouden en gekoppeld aan het eerste bericht dat ze naar je sturen. De contactpersoon toont vervolgens de campagne waar deze vandaan komt, en de klikgegevens reizen met de contactpersoon mee naar webhooks, de API en, indien gewenst, terug naar Meta.
Dit werkt voor elke pagina met een WhatsApp-knop: een landingspagina, een boekingspagina, een prijzenpagina of een quiz die eindigt met “Stuur mijn antwoorden via WhatsApp”.
Deze pagina gaat over advertenties die mensen eerst naar je website sturen. Als je advertenties direct WhatsApp openen (Meta’s “Click to WhatsApp”-advertenties), wordt dat automatisch gedekt, zonder script, in Click-to-WhatsApp Ad Attribution.
Instellen
- Ga naar Instellingen → Advertentieklik-tracking (groep Integraties).
- Klik op Inschakelen en mijn script ophalen. Je account krijgt een eigen sitesleutel en een script van één regel.
- Kopieer het script en plak het vlak voor de afsluitende
</body>-tag op elke pagina die een WhatsApp-knop heeft:
<script src="https://api.dmchamp.com/v1/ad-visit/YOUR_SITE_KEY.js" async></script>
- Optioneel: typ bij WhatsApp-nummer het nummer waarnaar je knoppen verwijzen. Alleen links naar dat nummer worden dan getrackt. Laat dit leeg om elke WhatsApp-link op de site te tracken.
- Kies de bewoording van het aanvraagnummer (zie hieronder) en klik op Opslaan. Je hoeft het script op je website niet te wijzigen na een instellingswijziging.
- Test het: open je pagina via een link met een campagnetag, bijvoorbeeld
https://yoursite.com/?utm_source=test&utm_campaign=setup-check, tik op je eigen WhatsApp-knop en verstuur het bericht. Open die contactpersoon in Chats: het contactpaneel toont Afkomstig van een advertentieklik met de campagne.
De sitesleutel zit al in het script. Het is geen wachtwoord, dus het is veilig op een openbare pagina.
Bureaus: elk klantaccount heeft een eigen sitesleutel en script, zodat de website van elke klant rapporteert aan zijn eigen account. Je kunt het gedeelte voor een klant verbergen met menu-zichtbaarheid, net als elk ander instellingengedeelte.
Wat het script doet
- Wanneer de pagina laadt, bewaart het de advertentieklik-id’s en campagnetags (de
utm_-parameters) van het pagina-adres in de sessieopslag van het browsertabblad, zodat ze er nog steeds zijn als de bezoeker eerst een andere pagina bekijkt. Het plaatst geen cookie, laadt niets anders en verstuurt niets. - Wanneer de bezoeker op een WhatsApp-link tikt (
wa.me,api.whatsapp.com/sendofwhatsapp://send), voegt het het aanvraagnummer toe aan het bericht, registreert het bezoek en laat de tik normaal doorgaan naar WhatsApp.
Er wordt niets naar DM Champ verzonden vóór de tik.
Het aanvraagnummer
Een kort nummer, zoals de referentie die een winkel of kliniek je geeft, wordt toegevoegd aan het WhatsApp-bericht van de bezoeker. Zo weet DM Champ precies welke advertentieklik bij welk gesprek hoort. Een bericht ziet er als volgt uit:
Hi, I would like to know more.
Enquiry no. 4827
- Bewoording: “Aanvraagnr.” is de standaard. Je kunt elke regel tekst gebruiken die natuurlijk klinkt voor je bedrijf, zoals “Boekingsref” of “Ref”. Geen cijfers.
- Waar: Op een eigen laatste regel (de standaard) of Aan het einde van de tekst. De instellingenpagina toont een live voorbeeld.
- Lengte: 4 cijfers, of 5 wanneer je site erg druk is.
- Je AI-agent ziet het nooit en herhaalt het nooit. De inbox toont het volledige bericht, inclusief nummer.
Je kunt het aanvraagnummer uitschakelen. Matching werkt dan alleen op basis van de tekst van het bericht, waardoor twee bezoekers die precies dezelfde tekst sturen (bijvoorbeeld dezelfde quizantwoorden) niet van elkaar kunnen worden onderscheiden en sommige klikken niet worden gekoppeld.
Je eigen quiz- of knopcode
Als je pagina zelf het WhatsApp-bericht opbouwt (een quiz die de antwoorden in de tekst plaatst, of je eigen knopcode), voeg dan data-manual toe aan de script-tag:
<script src="https://api.dmchamp.com/v1/ad-visit/YOUR_SITE_KEY.js" data-manual async></script>
Met data-manual wijzigt het script WhatsApp-links niet meer uit zichzelf. Je eigen code roept het aan vlak voordat WhatsApp wordt geopend, zodat elk bezoek één keer wordt geregistreerd:
window.ChatAttribution.text(finalText, number)retourneert je tekst met het toegevoegde aanvraagnummer en registreert het bezoek. Gebruik de geretourneerde tekst in je WhatsApp-link.window.ChatAttribution.link(finalText, number)doet hetzelfde en retourneert een kant-en-klarewa.melink met die tekst. Laat het nummer weg om het nummer te gebruiken dat onder WhatsApp-nummer in de instellingen staat.
<script>
function sendAnswers(answers) {
var text = "Hi, my answers: " + answers.join(", ");
if (window.ChatAttribution) {
window.location.href = window.ChatAttribution.link(text, "+15551234567");
} else {
window.location.href = "https://wa.me/15551234567?text=" + encodeURIComponent(text);
}
}
</script>
De else branch zorgt ervoor dat de knop blijft werken als het script niet is geladen, bijvoorbeeld wanneer een browserextensie het blokkeert. Een tekst die al een door het script uitgegeven nummer bevat, wordt nooit een tweede keer gewijzigd.
Wat wordt er geregistreerd
Bij het tikken bevat het bezoekrecord:
- de advertentieklik-ID’s in het pagina-adres, zoals
fbclid(Meta) engclid(Google) - de
_fbcen_fbpcookies, als je eigen Meta-pixel deze op je site heeft geplaatst (het script leest ze, het plaatst ze nooit) - de campagnetags (
utm_source,utm_medium,utm_campaign,utm_content,utm_term) - de landingspagina, de pagina waar de bezoeker vandaan kwam, de browser en de berichttekst
- het IP-adres en het tijdstip, toegevoegd door DM Champ wanneer het bezoek binnenkomt
Bezoekrecords worden 90 dagen bewaard. Wanneer een bezoek wordt gekoppeld, wordt een kopie van de klikgegevens opgeslagen bij het contact en blijft deze bij het contact totdat je deze verwijdert.
Je privacyverklaring: het script draait op je website, dus de privacyverklaring van je website moet dit vermelden: wat het registreert (de lijst hierboven) en dat dit gebeurt wanneer een bezoeker op een WhatsApp-knop tikt.
Hoe matching werkt
Wanneer het eerste bericht van een contact binnenkomt, zoekt DM Champ naar een bezoek van de 15 minuten daarvoor:
- Eerst op aanvraagnummer. Een bericht met een nummer dat door het script is uitgegeven, wordt aan dat bezoek gekoppeld.
- Anders op identieke tekst. Een bericht met exact dezelfde tekst als een bezoek wordt daaraan gekoppeld. Wanneer twee verschillende bezoekers binnen het tijdsbestek dezelfde tekst sturen, wordt geen van beide gekoppeld, bewust, zodat een contact nooit aan de verkeerde advertentie wordt toegewezen.
Een later bericht dat het aanvraagnummer bevat, wordt ook gekoppeld, zolang het contact nog geen match heeft.
Beperkingen:
- Eerste match wint. Zodra een contact een match heeft, wordt deze nooit overschreven.
- Alleen WhatsApp: de WhatsApp Business API en WhatsApp Web-kanalen.
- 15 minuten: een bezoeker die op de knop tikt maar het bericht veel later verstuurt, wordt niet gematcht.
- Alleen vanaf nu: contacten van vóór de installatie van het script hebben geen match.
Waar je het ziet
- Contactpaneel: Afkomstig van een advertentieklik met de campagne of bron en de datum. Beweeg de muis over het item voor de details.
- Webhooks:
contact.ad_attributionin agent tag webhooks en in elk webhook-abonnementsevenement dat een contact bevat. - API:
ad_attributionin de contactenlijst enadAttributionbij een enkel contact, in de sectie Contacten van de API-referentie. - MCP-tools: hetzelfde object bij elk contact dat ze retourneren.
De waarde is null wanneer het contact geen match heeft.
| Veld | Wat het is |
|---|---|
visit_at |
Wanneer de bezoeker op de WhatsApp-knop tikte. |
matched_at |
Wanneer het bezoek werd gematcht aan het contact. |
match_method |
reference (gematcht op aanvraagnummer) of text (gematcht op identieke berichttekst). |
reference |
Het aanvraagnummer, of null wanneer dit uitgeschakeld was. |
fbc / fbp |
De Meta-klik en browsercookies van je eigen Meta-pixel, indien aanwezig. |
fbclid |
De Meta-advertentieklik-id uit het pagina-adres. |
gclid / gbraid / wbraid |
De Google-advertentieklik-id’s uit het pagina-adres. |
utm_source / utm_medium / utm_campaign / utm_content / utm_term |
De campagnetags uit het pagina-adres. |
landing_url |
De pagina waar de bezoeker op landde. |
referrer |
De pagina waar de bezoeker vandaan kwam. |
client_ip |
Het IP-adres van de bezoeker. |
user_agent |
De browser van de bezoeker. |
site_key |
De sitesleutel van het script dat het bezoek heeft geregistreerd. |
visit_id |
De id van het bezoekrecord. |
Resultaten naar Meta sturen (optioneel)
Je kunt DM Champ resultaten laten terugsturen naar je Meta-advertentieaccount, zodat Meta leert welke advertenties echte leads en verkopen opleveren en hierop kan optimaliseren. Dit gebruikt je eigen Meta Conversions API-gegevens.
- Zoek in Meta Events Manager je pixel- (ook wel dataset-) ID onder Gegevensbronnen en maak een toegangstoken aan onder Instellingen, Conversions API, Toegangstoken genereren.
- Voer bij Instellingen → Advertentieklik-tracking, onder Resultaten naar Meta sturen (optioneel), de Pixel- / dataset-ID en het Toegangstoken in. Tijdens het testen kun je de Testgebeurteniscode van het tabblad Testgebeurtenissen van Meta toevoegen; verwijder deze wanneer je klaar bent. Klik op Meta-gegevens opslaan.
- Open de agent-editor, ga naar het tabblad Tags en open een tag. Kies onder Verzenden naar Meta de gebeurtenis: Lead, Contact, Afspraak, Aankoop of een aangepaste naam. Voeg optioneel een waarde en een valuta toe.
Vanaf dat moment stuurt DM Champ, telkens wanneer die tag aan een contact wordt gekoppeld (door de AI, handmatig, via de API of door een automatisering), de gebeurtenis naar Meta met de opgeslagen klikgegevens van het contact (fbc, fbp, IP-adres, browser, landingspagina) plus hun telefoonnummer, e-mailadres en naam, gehasht, zodat Meta dit aan de advertentie kan koppelen. Een contact zonder match stuurt nog steeds de gebeurtenis, met alleen het gehashte telefoonnummer, e-mailadres en naam.
- Geen dubbeltellingen: elke gebeurtenis heeft een vaste id die bestaat uit de contact-id en de tagnaam. Als je CRM dezelfde gebeurtenis naar Meta stuurt met dezelfde id, behoudt Meta er slechts één.
- Attributievenster van Meta: Meta schrijft een gebeurtenis alleen toe aan een advertentie binnen het attributievenster, wat standaard 7 dagen na de klik is. Een deal die weken later wordt gesloten, telt niet uit zichzelf mee, dus stuur ook een eerdere gebeurtenis, bijvoorbeeld een tag voor het geboekte of betaalde consult.
Veelgestelde vragen
Werkt dit als mijn advertentie WhatsApp direct opent? Die advertenties gaan niet via je website, dus het script wordt nooit uitgevoerd. Meta stuurt de advertentiegegevens in plaats daarvan mee met het eerste bericht, zie Click-to-WhatsApp Ad Attribution.
Vertraagt het script mijn website of plaatst het cookies?
Het laadt op de achtergrond (async), plaatst geen cookies en laadt niets anders. Het verstuurt alleen gegevens wanneer een bezoeker op een WhatsApp-knop tikt.
Kan ik naast Meta-advertenties ook Google Ads tracken?
Ja. Google-klik-id’s (gclid, gbraid, wbraid) en eventuele campagnetags worden geregistreerd en getoond bij het contact. Het terugsturen van resultaten is alleen beschikbaar voor Meta.
Waarom kreeg een contact geen match? De meest voorkomende redenen: het bericht kwam meer dan 15 minuten na de tik aan, het aanvraagnummer werd uit het bericht verwijderd, het aanvraagnummer staat uit en een andere bezoeker stuurde dezelfde tekst, of de pagina bevat het script niet.
Mijn website linkt naar twee WhatsApp-nummers. Kan ik er maar één tracken? Ja. Typ dat nummer onder WhatsApp-nummer in de instellingen. Laat het leeg om elke WhatsApp-link te tracken.
Kan ik de tekst later nog wijzigen? Ja. Wijzigingen worden direct op uw website doorgevoerd; u hoeft het script niet opnieuw te plakken.