6 min leestijdIntegraties

Salesforce-linktracking: kliks op het Contact-record

Salesforce registreert kliks in de e-mails die het zelf verstuurde, en verder niets. Drie manieren om kliks op korte links op een record te krijgen, en de manier die ook buiten e-mail werkt.

Marius Voß
DevRel · edge infra
Een klik op een korte link die als webhook binnenkomt en een click-record wordt, gekoppeld aan een Salesforce-contact en een Campaign Member

Salesforce registreert een klik wanneer Salesforce de link zelf heeft verstuurd. Account Engagement herschrijft de URLs in zijn eigen e-mails en koppelt de klik aan een prospect, en custom redirects breiden dat uit naar links die je elders plakt. Dat is het complete ingebouwde verhaal.

Alles wat je bedrijf verder verstuurt, levert geen klik op in de CRM. De follow-up van een rep vanuit zijn eigen mailbox, een SMS-reeks, een QR-code op een stand tijdens een conferentie, een betaalde advertentie, een nieuwsbrief van een partner: allemaal onzichtbaar. Om die kloof te dichten heb je een getrackte link nodig die je zelf beheert, en een webhook die naar Salesforce schrijft, en de interessante beslissingen gaan over wat je vastlegt, niet over hoe je verstuurt. Voor hetzelfde probleem in een andere CRM behandelt Kliks op HubSpot-links op de contacttijdlijn de vorm van de integratie.

Wat de ingebouwde tools dekken

Twee mechanismen, allebei beperkt tot berichten die Salesforce zelf heeft verstuurd.

E-mail-linktracking in Account Engagement herschrijft elke link via een trackersubdomein, zodat de klik wordt geregistreerd op naam van de prospect die de e-mail ontving. Het werkt goed, en het werkt alleen daar.

Custom redirects gaan een stap verder: je genereert een getrackte URL en gebruikt die in een banner, een social post of een document, en kliks verschijnen als prospect-activiteit. Twee beperkingen bepalen hoe bruikbaar dat is. Herhaalde kliks van dezelfde prospect worden binnen een tijdvenster afgeremd, dus het aantal is bewust geen ruwe telling. En toeschrijving aan een met naam genoemde prospect hangt ervan af of de bezoeker al herkend is, wat voor koud verkeer betekent dat de klik wordt geregistreerd zonder dat er een persoon aan gekoppeld is.

Marketing Cloud heeft zijn eigen model voor getrackte links, met hetzelfde principe: het meet wat het zelf heeft verstuurd.

Niets hiervan is kritiek. Het is een afbakening, en die afbakening kennen vertelt je precies waar de derde route voor dient.

De kloof, en hoe je die dicht

Het patroon is kort. Je shortener vuurt bij elke klik een webhook af. Een endpoint ontvangt die, verifieert hem, en zet hem om in een record.

Drie implementatiekeuzes bepalen of dit een weekendklusje is of een terugkerend incident.

Publiceer een Platform Event in plaats van direct te schrijven. Een Platform Event ontkoppelt het binnenhalen van de data van de beslissing over wat een klik betekent. De integratie publiceert Link_Click__e; abonnees bepalen of dat een Campaign Member bijwerkt, een taak aanmaakt, of voor deze campagne niets doet. Wanneer marketing van gedachten verandert over wat een klik moet triggeren, pas je een Flow aan in plaats van een webhook-consument.

Verifieer de signature voordat je de payload vertrouwt. Het endpoint is per definitie publiek. Controleer de HMAC tegen het gedeelde secret, wijs af bij een mismatch, en haal de contact-identifier nooit uit de request body zonder die te valideren tegen iets wat je zelf hebt uitgegeven.

Dedupliceer op de click-identifier. Webhook-aflevering probeert het na een timeout opnieuw, wat betekent dat dezelfde klik twee keer kan binnenkomen. Sla de identifier op en maak de schrijfactie idempotent; het alternatief is een contact met vier identieke click-records van één tik. Rate limits en idempotency op een link-API behandelt dezelfde discipline aan de uitgaande kant.

Een klik op een korte link die via een gesigneerde webhook en een Platform Event terechtkomt in een Salesforce click-record en een update van het Campaign Member

Een klik eerlijk aan een persoon koppelen

Dit is waar integraties stilletjes liegen, dus het is de moeite waard om het ronduit te zeggen.

Een klik draagt mee wat de link meedroeg. Als je per ontvanger een aparte korte link hebt gegenereerd, identificeert de payload de ontvanger en kun je met vertrouwen naar diens record schrijven. Als vierhonderd mensen dezelfde link hebben ontvangen, heb je vierhonderd kliks en geen namen, en geen slimme join herstelt die.

Beslis dus per use case. Uitgaande sequences en één-op-één follow-ups rechtvaardigen een link per ontvanger, gegenereerd via de API op het moment dat het bericht in de wachtrij komt. Brede campagnes rechtvaardigen dat niet, en tellingen op campagneniveau zijn de eerlijke uitkomst: kliks per campagne, per medium, per link, gekoppeld aan het Campaign-object in plaats van aan individuen. URL-shorteners voor B2B-salesteams behandelt wanneer de versie per ontvanger zichzelf terugverdient.

Het enige wat je niet moet doen, is identiteit afleiden uit een IP-adres of een toevallige timing. Het is vaak genoeg fout om een pipelinerapport te vergiftigen, en in Europa is het een verwerkingsbeslissing die je liever niet hoeft te verdedigen.

Ga je dit nu opzetten? Elido's webhooks signeren elke aflevering en proberen het opnieuw met backoff, en de webhook-referentie in de docs somt de click-payloadvelden op die je gaat mappen.

Wat je vastlegt, en waar

Vier doelen, in oplopende volgorde van hoeveel nadenken ze vergen.

  • Een custom click-object. Click__c met lookups naar Contact en Campaign, plus link, campagneparameters, land, apparaat en tijdstempel. Dit is de duurzame keuze; rapportage blijft snel en de activiteitenfeed blijft leesbaar.
  • Campaign Member-status. Een lid bij de eerste klik verplaatsen van Sent naar Responded is hier de nuttigste automatisering, omdat die elk campagnerapport voedt dat je al hebt.
  • Een taak, met mate. Nuttig voor waardevolle links waarbij een rep het contactmoment in zijn feed moet zien. Vreselijk als standaard, want een paar duizend taken per week begraaft al het andere.
  • Een rollup-veld op het contact. Datum laatst geklikt en een lopende telling zijn goedkoop te onderhouden en beantwoorden de meeste vragen van een rep zonder een related list te openen.

Map de campagneparameters naar velden in plaats van ze later te parsen. utm_campaign op het click-record is wat een sales-opsrapport in staat stelt te groeperen op campagne zonder ergens aan te hoeven joinen.

Vier setupstappen voor Salesforce-klikregistratie, van het aanmaken van het Platform Event via signatureverificatie tot Campaign Member-automatisering

Volume is de beperking waar niemand op rekent

Kliks komen in golven binnen. Een nieuwsbrief naar vijftigduizend mensen produceert in de eerste tien minuten duizenden kliks, en een naïeve integratie maakt van elke klik een API-aanroep.

Salesforce-orgs hebben een dagelijkse API-limiet, en het publiceren van Platform Events heeft zijn eigen quota. Het is de moeite waard om die rekensom voor de lancering te maken in plaats van erna: piekaantal kliks per minuut tegenover je limiet, met als antwoord meestal dat schrijven per klik niet past.

Drie uitwegen, in volgorde van voorkeur. Publiceer alleen drempelevents, zodat de CRM hoort over de derde klik in plaats van elke klik. Aggregeer aan jouw kant en schrijf uursamenvattingen voor rapportage op campagneniveau. Of batch: houd events kort vast en voeg ze in bulk in. Webhooks versus polling voor click tracking behandelt de afweging wanneer het volume juist voor de andere richting pleit.

Ik heb dit precies één keer zien mislukken, om 9 uur 's ochtends op een lanceringsdag, en de fix onder druk is altijd rommeliger dan de fix die van tevoren is ontworpen.

Dit testen voordat je het vertrouwt

Vijf controles. Stuur een gesigneerde testklik en bevestig dat die een record wordt met de campagne gekoppeld. Stuur dezelfde klik twee keer en bevestig dat er één record is. Stuur een klik voor een onbekend contact en bevestig dat die landt als een niet-toegeschreven rij in plaats van een fout te geven. Speel een payload met een verkeerde signature opnieuw af en bevestig een afwijzing. Draai daarna een echte campagne met laag volume en verzoen het aantal van de shortener met het aantal records over hetzelfde venster; een verschil van een paar procent is aflevering die zich na retries settelt, een verschil van dertig procent is een bug.

Lees de cornerstone-serie

Dit artikel valt onder de integrations-cluster. URL-shorteners voor marketeers is de cornerstone voor de rapportagekant, en webhooks voor linkevents behandelt de payloadvormen in detail.

Gerelateerd op de blog

Veelgestelde vragen

Registreert Salesforce linkkliks native?

Het registreert kliks op links die het zelf heeft verstuurd. Account Engagement herschrijft links in zijn e-mails via een trackersubdomein en legt de klik vast op de prospect, en custom redirects breiden dat uit naar links die je elders plaatst. Alles wat buiten die tools wordt verstuurd, inclusief de eigen mailbox van een rep, een SMS-campagne of een gedrukte code, levert helemaal geen klik op in Salesforce.

Wat is een custom redirect in Account Engagement?

Een getrackte link die binnen Account Engagement wordt gegenereerd en een klik vastlegt als activiteit op het prospect-record. Hij is geschikt voor bannerads, social posts en elders gehoste bestanden. In de praktijk zijn twee beperkingen van belang: herhaalde kliks door dezelfde prospect worden binnen een kort tijdvenster afgeremd, en de link identificeert alleen een persoon wanneer de bezoeker al een cookie heeft.

Hoe krijg ik kliks op korte links in Salesforce?

Stuur een webhook van de shortener naar Salesforce en schrijf een record. Het schone patroon is om een Platform Event te publiceren en een abonnee te laten beslissen wat ermee gebeurt, zodat de klik landt als een rij in een custom object, een taak, of een wijziging van de Campaign Member-status, zonder dat je integratie weet welke van de drie het wordt. Verifieer de signature, dedupliceer op de click-identifier, en batch bij hoge belasting.

Kan een klik worden toegeschreven aan een specifiek contact?

Alleen als de link uniek was voor dat contact. Eén campagnelink waarop vierhonderd mensen klikken levert vierhonderd anonieme kliks op, en niets in de payload verandert daaraan iets. Genereer een link per ontvanger wanneer attributie op persoonsniveau ertoe doet, en accepteer rapportage op campagneniveau wanneer dat niet zo is.

Moeten kliks taken zijn of een custom object?

Een custom object, zodra het volume echt wordt. Taken zijn handig omdat ze op de activity timeline verschijnen, en ze worden ruis bij een paar duizend rijen per week en blazen de opslag op. Een custom click-object met een lookup naar contact en campagne houdt rapportage snel en laat je aantallen optellen zonder de activiteitenfeed aan te raken.

Kan het klikvolume tegen Salesforce API-limieten aanlopen?

Dat kan, snel zelfs. Een drukke campagne produceert meer kliks per uur dan de dagelijkse API-limiet van een kleine org, dus één API-aanroep per klik schrijven is de fout die je moet vermijden. Aggregeer voordat je verstuurt, publiceer drempelevents in plaats van elke klik, of batch op een schema.

Probeer Elido

Plak een URL, krijg een werkende korte link

Geen aanmelding nodig. Link blijft 30 dagen actief. Meld je aan om hem voor altijd te bewaren.

Gratis, geen aanmelding nodig · 2 per dag

Probeer Elido

In de EU gehoste URL-shortener met aangepaste domeinen, uitgebreide analyses en een open API. Gratis abonnement - geen creditcard nodig.

Tags
salesforce link tracking
click tracking crm
platform events
custom redirects
webhooks
campaign member

Verder lezen