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 Your AI Connector 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.youraiconnector.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.
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 Your AI Connector 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 Your AI Connector 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.youraiconnector.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 Your AI Connector wanneer het bezoek binnenkomt
Wanneer een bezoek wordt gekoppeld, berekent Your AI Connector op basis van die gegevens ook ongeveer waar de bezoeker zich bevond (stad en land, bij benadering, op basis van het IP-adres) en welk apparaat ze gebruikten (telefoon, tablet of computer, het besturingssysteem en de browser, bijvoorbeeld de Instagram in-app browser). Locatie blijft leeg wanneer dit niet kan worden bepaald, wat vaak voorkomt op mobiele netwerken.
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 Your AI Connector 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.
Wanneer een contactpersoon die al een match heeft terugkomt via een andere advertentie en een bericht stuurt met een nieuwer aanvraagnummer, wordt die klik bewaard als de meest recente klik van de contactpersoon. De eerste match blijft ongewijzigd.
- Eerste klik, voor uw rapportage: de contactpersoon blijft aangeven waar de lead oorspronkelijk vandaan kwam. Dat verandert nooit.
- Meest recente klik, voor Meta: gebeurtenissen die naar Meta worden verzonden, gebruiken de nieuwste klik, omdat Meta de advertentie crediteert die de persoon heeft teruggebracht en dit alleen binnen het attributievenster doet. Het rapporteren van een oude klik zou de verkeerde advertentie crediteren, of helemaal geen.
- De meest recente klik wordt alleen overgenomen van een aanvraagnummer, nooit op basis van alleen overeenkomende tekst, en een ouder bezoek vervangt nooit een nieuwer bezoek.
Beperkingen:
- De eerste match wordt nooit overschreven. Nieuwere klikken worden opgeslagen in de meest recente klik.
- Alleen WhatsApp: de WhatsApp Business API en WhatsApp Web-kanalen.
- 15 minuten: een bezoeker die op de knop tikt maar het bericht pas veel later verstuurt, wordt niet gematcht.
- Alleen voor de toekomst: contactpersonen van vóór de installatie van het script hebben geen match.
Waar je het ziet
- Contactpaneel: Kwam via een advertentieklik met de campagne of bron en de datum van de eerste klik. Beweeg de muis over de details voor: de campagne, de Advertentie (
utm_content) en Advertentieset (utm_term), de geschatte Locatie en het Apparaat, elk alleen wanneer dit bekend is, plus hetzelfde voor de laatste klik wanneer die er is. Campagnetags die nooit zijn ingevuld (een tik op een advertentievoorbeeld verstuurt het tagsjabloon in plaats van de namen) worden weggelaten. Een bezoek telt alleen als een advertentieklik wanneer de pagina werd geopend via een advertentielink (een Meta- of Google-klik-id, of campagnetags). Iedereen die de pagina op een andere manier heeft bereikt, bijvoorbeeld via Google-zoekopdrachten, door uw adres in te typen of door door te klikken op uw site, toont Kwam via uw website met de herkomst, zoals Google-zoekopdracht, of Websitebezoek, geen referrer geregistreerd wanneer de browser dit niet heeft doorgegeven. - Contactpagina: dezelfde regel staat onder de naam van de contactpersoon in Contacten, zodat u het direct ziet, ook op uw telefoon. Beweeg de muis erover of tik erop voor de details.
- Activiteit: de tijdlijn van de contactpersoon begint met Tik op uw WhatsApp-knop na een advertentie (of op uw website) op het moment van de klik, vóór hun eerste bericht. Het contactpaneel van de chat toont dezelfde regel onder Activiteit.
- Webhooks:
contact.ad_attributionin agent tag webhooks en in elke webhook-abonnementgebeurtenis die een contactpersoon bevat. - API:
ad_attributionop de contactenlijst enadAttributionop een enkele contactpersoon, in de sectie Contacten van de API-referentie. - MCP-tools: hetzelfde object op elke contactpersoon die ze retourneren.
De waarde is null wanneer de contactpersoon geen match heeft. De onderstaande velden beschrijven de eerste klik. Wanneer een latere klik is gematcht, bevat latest deze met dezelfde velden; daarvoor is het veld afwezig.
| Veld | Wat het is |
|---|---|
visit_at |
Wanneer de bezoeker op de WhatsApp-knop tikte. |
matched_at |
Wanneer het bezoek werd gekoppeld aan de contactpersoon. |
match_method |
reference (gekoppeld op aanvraagnummer) of text (gekoppeld op identieke berichttekst). |
reference |
Het aanvraagnummer, of null wanneer dit uitgeschakeld was. |
fbc / fbp |
De Meta-klik en browsercookies van uw 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. |
geo_country / geo_region / geo_city / geo_timezone |
Geschatte locatie op basis van het IP-adres: landcode van twee letters, regiocode, stad en tijdzone. Afwezig wanneer onbekend. |
device_type / device_os / device_browser |
Het apparaat uit de browser: mobile, tablet of desktop, het besturingssysteem met de versie (zoals iOS 18.3) en de browser (zoals Safari of Instagram in-app). Afwezig wanneer onbekend. |
site_key |
De site-sleutel van het script dat het bezoek heeft geregistreerd. |
visit_id |
De id van het bezoekrecord. |
latest |
De nieuwste klik gekoppeld na de eerste, met dezelfde velden. Gebruikt voor gebeurtenissen die naar Meta worden verzonden. Afwezig wanneer er geen is. |
Resultaten naar Meta sturen (optioneel)
Je kunt Your AI Connector 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 uw pixel- (ook wel dataset genoemd) ID onder Gegevensbronnen en maak een toegangstoken aan onder Instellingen, Conversions API, Toegangstoken genereren.
- Voer in Instellingen → Ad click tracking, onder Resultaten naar Meta sturen (optioneel), het Pixel / dataset ID en het Toegangstoken in. Klik op Meta-gegevens opslaan.
- Optioneel: controleer de verbinding. Open in Meta Events Manager uw pixel en ga naar het tabblad Testgebeurtenissen, kopieer de daar getoonde testcode, plak deze onder Een testgebeurtenis verzenden en klik op Testgebeurtenis verzenden. De regel onder de knop geeft aan “Meta heeft 1 testgebeurtenis ontvangen” (kijk hiervoor onder Testgebeurtenissen in Meta), of toont de reden van Meta als deze is geweigerd, bijvoorbeeld een verkeerd token. De code wordt alleen voor die ene test gebruikt en wordt nooit opgeslagen.
- Open de agent-editor, ga naar het tabblad Tags en open een tag. Kies onder Verzenden naar Meta de gebeurtenis: Lead, Contact, Schedule, Purchase of een aangepaste naam. Voeg optioneel een waarde en een valuta toe.
Vanaf dat moment, telkens wanneer die tag wordt toegepast op een contactpersoon (door de AI, handmatig, via de API of door een automatisering), verstuurt Your AI Connector de gebeurtenis naar Meta met de nieuwste klikgegevens van de contactpersoon (fbc, fbp, IP-adres, browser, landingspagina, van de meest recente klik indien aanwezig, anders de eerste) plus hun telefoonnummer, e-mailadres en naam, gehasht, zodat Meta deze kan koppelen aan de advertentie. Een contactpersoon zonder match verstuurt de gebeurtenis nog steeds, met alleen het gehashte telefoonnummer, e-mailadres en naam.
- Live gebeurtenissen tellen altijd: een testgebeurteniscode wordt nooit opgeslagen bij uw Meta-gegevens, dus de gebeurtenissen die uw tags en automatiseringen verzenden, gaan altijd naar uw echte gegevens in Meta, nooit naar het tabblad Testgebeurtenissen.
- Geen dubbele tellingen: elke gebeurtenis heeft een vast ID dat bestaat uit het contact-ID en de tagnaam. Als uw CRM dezelfde gebeurtenis naar Meta stuurt met hetzelfde ID, behoudt Meta er slechts één.
- Attributievenster van Meta: Meta schrijft een gebeurtenis alleen toe aan een advertentie binnen het attributievenster, dat 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.
Conversies verzenden vanuit automatiseringen
Een tag verstuurt zijn event wanneer de tag wordt toegepast. Wanneer het resultaat ergens anders plaatsvindt, zoals een deal die wordt gesloten in je CRM of een consult dat wordt geboekt, gebruik je de actie Conversie naar Meta verzenden in een automatisering. Hiermee wordt één event naar je Meta-dataset gerapporteerd via de Conversions API, zodat Meta je advertenties optimaliseert op basis van echte resultaten en niet alleen op berichten.
Het gebruikt dezelfde Meta-gegevens als de tags: de Pixel / dataset-ID en Toegangstoken onder Instellingen → Advertentieklik-tracking. Zonder deze gegevens mislukt de stap met de melding “Meta is niet verbonden”.
De velden
| Veld | Wat het doet |
|---|---|
| Gebeurtenisnaam | Verplicht. Purchase, Schedule, Lead of uw eigen naam. Uw eigen naam gebruikt letters, cijfers, spaties en underscores, begint met een letter en is maximaal 40 tekens lang. |
| Waarde en Valuta | Het bedrag van de conversie, zoals het dealbedrag. Valuta is een code van 3 letters en is standaard EUR. De waarde wordt alleen verzonden als u deze invult. |
| Contact | Optioneel. Het contact waartoe de conversie behoort. |
| E-mail, Telefoon, Voornaam, Achternaam | Gegevens van de persoon. Vul deze in wanneer de persoon geen contact is, of om aan te vullen wat het contact al heeft. |
| Uw eigen ID voor de persoon | Een ID voor de persoon uit uw eigen systeem, zoals een CRM-ID. |
| Gebeurtenis-ID | Het ID dat Meta gebruikt om de gebeurtenis één keer te tellen. Zie hieronder. |
| Gebeurtenistijd | Wanneer de conversie plaatsvond, als unix-seconden of een datum. Maximaal 7 dagen geleden. Laat leeg om het moment te gebruiken waarop de stap wordt uitgevoerd. |
| Pagina-URL | De pagina waaraan de conversie is gekoppeld, indien van toepassing. |
| Testgebeurteniscode | Alleen voor een testrun: de code van het tabblad Testgebeurtenissen van Meta. Een gebeurtenis die hiermee wordt verzonden, verschijnt onder Testgebeurtenissen en telt niet mee voor uw advertenties. Laat leeg voor live gebeurtenissen. |
Vul ten minste één van de velden Contact, E-mail of Telefoon in. De persoon hoeft geen contact te zijn: een HubSpot-deal die de status ‘Closed Won’ bereikt, kan een ‘Purchase’ verzenden met het dealbedrag en het e-mailadres van de koper.
Wanneer je een Contact kiest, worden hun telefoonnummer, e-mailadres en naam gebruikt. Als ze afkomstig zijn van een advertentieklik die door het script is herkend, worden de klikgegevens ook meegestuurd, wat Meta helpt om het event aan de advertentie te koppelen. E-mail, telefoonnummer en namen worden gehasht voordat ze worden verzonden. De klik-id, het IP-adres en de browser worden verzonden zoals Meta vereist.
Event-ID en dubbeltellingen
Meta telt events met dezelfde eventnaam en hetzelfde Event-ID slechts één keer. Gebruik een vast id, zoals het deal-id, wanneer een andere tool dezelfde conversie rapporteert, of wanneer de automatisering er mogelijk twee keer voor wordt uitgevoerd. Laat dit leeg en er wordt bij elke uitvoering een nieuw id aangemaakt, zodat elke uitvoering telt.
Hoe het verschilt van tag-events
Een Verzenden naar Meta-event van een tag wordt één keer per contact voor die tag verzonden (maximaal één keer per 30 dagen). Deze actie verzendt telkens wanneer deze wordt uitgevoerd. Het Event-ID voorkomt dat een conversie dubbel wordt geteld.
Voorbeeld: een gesloten deal en een geboekt consult
- Start een automatisering die wordt uitgevoerd wanneer een deal is gewonnen: een App-gebeurtenis-trigger op de deal-gebeurtenis van je CRM, met een Voorwaarde zodat alleen gewonnen deals doorgaan. HubSpot verstuurt alleen dealfase-gebeurtenissen naar ontwikkelaars-apps, dus gebruik voor HubSpot een Schema-trigger met een HubSpot-zoekopdracht naar deals die sinds de laatste uitvoering de status ‘Closed Won’ hebben bereikt, en een Lus daaroverheen.
- Voeg Conversie naar Meta verzenden toe. Stel Gebeurtenisnaam in op Aankoop, Waarde op het dealbedrag (voeg dit in met de +-knop) en Valuta op je valuta. Plaats het e-mailadres van de koper in E-mail en het deal-ID in Gebeurtenis-ID, zodat dezelfde deal nooit dubbel wordt geteld.
- Start voor een geboekt consult een tweede automatisering met de Afspraak geboekt-trigger en voeg Conversie naar Meta verzenden toe met Gebeurtenisnaam ingesteld op Schema en het contact uit de trigger in Contact. Voeg indien gewenst een tweede Conversie naar Meta verzenden-stap toe die een Aankoop verstuurt met een vaste waarde, zoals de prijs van het consult.
Je kunt ook een conversie verzenden via de API met POST https://api.youraiconnector.com/v1/ad-attribution/meta-event. Deze gebruikt dezelfde velden in snake case: event_name, value, currency, contact_id, email, phone, first_name, last_name, external_id, event_id, event_time, event_source_url en test_event_code.
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.