Conversietracking. Ken elke euro toe aan de click die hem heeft opgeleverd.
Stripe- en Shopify-webhookontvangers verifiëren signatures en koppelen omzet terug aan de link waar de click vandaan kwam. Campagne-attributie wordt automatisch afgeleid.
- Server-side Stripe- en Shopify-attributie
- click_id-passthrough - geen client-JS nodig
- Omzet per link, campagne, dag, platform
- Automatische HMAC-signatureverificatie
Hoe het werkt
De click_id doorloopt de hele funnel
Een UUID wordt bij de click gestempeld en meegegeven bij elke stap - URL-parameter, sessiecookie, Stripe-sessie, Shopify-order - totdat de webhook afvuurt en de attributielus server-side sluit. Er is geen client-JavaScript nodig voor de attributie zelf.
- Stap 01
Klik op short link
elido.me/saleEdge stempelt UUID v4
cid: a3f9c1… - Stap 02
click_id toegevoegd
?elido_cid=a3f9c1…URL-parameter + first-party cookie
cid: a3f9c1… - Stap 03
Gebruiker converteert
client_reference_id=a3f9c1…Stripe-sessie draagt click_id
cid: a3f9c1… - Stap 04
Webhook vuurt af
checkout.session.completedOmzet toegewezen aan oorspronkelijke link
cid: a3f9c1…
Integraties
Plug-and-play webhookontvangers voor Stripe en Shopify
Registreer het endpoint in je dashboard, plak het signing secret, en de attributie begint te stromen. HMAC-signatureverificatie gebeurt vóórdat een payload wordt verwerkt - vervalste webhooks worden geweigerd voordat ze je data raken.
Omzetdashboard
Omzet per link, per campagne, per dag
Elke short link krijgt een live omzettotaal - de som van alle toewijsbare conversiewaarden via die link. Filter op campagnetag, datumbereik of platform. Exporteer als CSV of stream naar BigQuery via geplande exports.
- Omzet per linkOpgetelde conversiewaarden, elke valuta, in de originele denominatie
- CVR over tijdTijdreeks van conversieratio naast clickvolume
- Forwarding naar GA4 / Meta CAPIAsynchroon doorgestuurd nadat de conversie is geregistreerd
- DeduplicatieIdempotent op click_id + event_name - dubbele webhooks tellen niet dubbel
| Link | Clicks | Conv. | Omzet | CVR |
|---|---|---|---|---|
| elido.me/bfcm | 18,420 | 847 | €76,280 | 4.6% |
| elido.me/sale | 11,034 | 512 | €41,430 | 4.6% |
| elido.me/nl/shop | 8,901 | 398 | €29,104 | 4.5% |
| elido.me/email-q2 | 6,201 | 201 | €14,872 | 3.2% |
| elido.me/ig-bio | 5,032 | 88 | €6,104 | 1.7% |
Wat je kunt doen
- Stripe checkout.session.completed
- Stripe payment_intent.succeeded
- Shopify orders/paid
- Campagne-attributie afgeleid uit de link
- Omzetoverzicht in het dashboard
Hoe server-side conversieattributie end-to-end werkt
Client-side pixels verliezen 20–40% van de conversies door adblockers, iOS-privacybeperkingen en checkout-redirectketens. Server-side attributie dicht dat gat.
Elke click krijgt een UUID die wordt meegegeven aan de bestemming - het attributieankerpunt voor conversiematching
Wanneer een gebruiker op een Elido short link klikt, genereert de edge een click_id (UUID v4) en voegt deze toe als queryparameter (elido_cid) aan de bestemmings-URL. Je checkout-flow moet deze parameter behouden op elke pagina in de funnel - de meeste SPA-routers en server-rendered checkout-stacks geven onbekende queryparameters standaard door, maar meerstaps-checkouts met redirectketens kunnen ze verwijderen. De click_id wordt ook opgeslagen in een sessiecookie op het bestemmingsdomein als je Elido's optionele attributiesnippet van 2KB embed. Test de volledige checkoutflow voordat je live gaat: klik op een short link, doorloop een testaankoop, controleer of elido_cid verschijnt in de conversie-POST. Zo niet, voeg dan doorgeven van queryparameters toe in je checkout-middleware. Dit is de meest voorkomende oorzaak van mislukte attributie - niet de webhook, maar verlies van de queryparameter in de checkout.
Stripe-webhookontvanger verifieert signatures en attribueert checkout.session.completed- en payment_intent.succeeded-events
Registreer Elido's Stripe-webhookendpoint in je Stripe-dashboard (Settings → Webhooks → Add endpoint). Elido luistert naar checkout.session.completed- en payment_intent.succeeded-events. Bij elk event verifieert Elido de Stripe-Signature-header met je webhook signing secret, haalt het betaalbedrag en de valuta op, zoekt de click_id op die is opgeslagen bij de client_reference_id van de Checkout Session (die jouw checkout moet invullen - zie de gids), en registreert de conversie tegen die click. De omzet en click_id zijn vervolgens beschikbaar in de analytics-weergave van de link en in het campagne-omzetoverzicht. Het client_reference_id-veld van de Checkout Session is de aanbevolen doorgeefmethode; gebruik anders het metadata-veld van Stripe met key elido_cid als je rechtstreeks PaymentIntents gebruikt. De volledige setup duurt ongeveer 30 minuten als je Stripe-integratie al webhooks afhandelt.
Shopify orders/paid-webhook koppelt orderomzet aan de short-link-click waar deze vandaan kwam
Registreer Elido's Shopify-webhookendpoint in je Shopify-admin (Settings → Notifications → Webhooks → Create webhook → Topic: orders/paid). Elido verifieert de X-Shopify-Hmac-Sha256-header, haalt het ordertotaal en de valuta op, en zoekt de elido_cid op in de note_attributes van de order (je vult dit vanuit de winkelwagen in via Shopify's cart note_attributes API, waarbij je de click_id doorgeeft vanuit de sessiecookie of URL-parameter). Voor Shopify-winkels met Online Store 2.0-thema's injecteert Elido's attributiesnippet de click_id automatisch in de winkelwagen bij het klikken. Toegewezen orders worden gededupliceerd op order-ID, zodat terugbetaalde en vervangen orders niet dubbel worden geteld. Shopify Plus-winkels met aangepaste checkout-extensies kunnen de click_id via een betrouwbaarder kanaal doorgeven - de setupgids behandelt de Plus-specifieke flow.
POST naar het conversie-endpoint van Elido vanaf elke backend - niet alleen Stripe en Shopify
POST /v1/conversions met een JSON-body: { click_id: "...", event_name: "purchase", value: 99.00, currency: "EUR", metadata: {} }. De click_id is de elido_cid van de click. Elido authenticeert het verzoek met je workspace API-key (HMAC-SHA256 over de payload-body wordt aanbevolen voor extra beveiliging). Dit endpoint dekt elke conversie die niet door de native Stripe- of Shopify-integraties wordt afgehandeld: WooCommerce, aangepaste SaaS-trialactivaties, leadformulier-inzendingen, telefoongesprekken die door je telefonieplatform worden getrackt. Het event_name-veld is vrije tekst; gebruik elke naamconventie die jouw team prefereert - deze wordt zo weergegeven in de analytics-weergave. Idempotentie: post je dezelfde combinatie van click_id + event_name twee keer, dan wordt alleen de eerste geregistreerd. De waarde en metadata van het event zijn alleen bij de eerste schrijfactie aanpasbaar.
Stuur conversies gelijktijdig door naar GA4 Measurement Protocol, Meta CAPI en Mixpanel server-track
Nadat Elido een conversie tegen een click heeft geregistreerd, stuurt het het event door naar de server-side forwarding-bestemmingen die je hebt ingeschakeld: GA4 Measurement Protocol (het event verschijnt in GA4 als een server-side purchase-event met de originele UTM-parameters van de click), Meta Conversions API (het event dedupliceert tegen de client-side pixel als beide afvuren, met behulp van het event_id van de click_id), en Mixpanel server-track (het event wordt verzonden met het distinct_id van Mixpanel's $identify-call als je cross-identity hebt geconfigureerd). Forwarding gebeurt asynchroon na registratie van de conversie - het blokkeert het webhookantwoord aan Stripe of Shopify niet. Mislukte forwarding-events worden 24 uur lang opnieuw geprobeerd met exponentiële backoff, en daarna verwijderd met een logregel. Je kunt de forwarding-status per conversie bekijken in het dashboard.
Omzetteams die Elido-conversietracking gebruiken
Namen zijn placeholders - echte klantcasestudy's komen hier zodra ze gepubliceerd zijn.
“iOS 14.5 maakte onze Meta Pixel-attributie op 30% van de mobiele aankopen kapot. Server-side Stripe-webhook via Elido herstelde het grootste deel - de click_id-passthrough naar Stripe's client_reference_id was de sleutel. De setup duurde één middag.”
“We posten trialactivaties naar het aangepaste conversie-endpoint van Elido. De keten click → trial → betaald is nu end-to-end traceerbaar zonder een volledig CDP. Dankzij de GA4 Measurement Protocol-forwarding zijn onze dashboards voor betaalde kanalen weer accuraat.”
“De Shopify orders/paid-webhook plus de attributiesnippet in het thema was een integratie van één dag. Omzet per campagne is nu een live cijfer in onze ochtendstand-up, niet een spreadsheetformule die iemand moet bijhouden.”
Elido-conversietracking vs Bitly vs Short.io
Bitly heeft geen server-side conversietracking. Short.io heeft basale conversiepixels. Elido's conversietracking is server-side en stuurt door naar meerdere advertentieplatforms.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Server-side conversieattributie | Ja - webhookgebaseerd, signature-verified | Niet beschikbaar | Niet beschikbaar |
| Stripe-webhookintegratie | checkout.session.completed + payment_intent.succeeded | Niet beschikbaar | Niet beschikbaar |
| Shopify-webhookintegratie | orders/paid - signature-verified, orderdeduplicatie | Niet beschikbaar | Niet beschikbaar |
| Aangepast conversie-endpoint | POST /v1/conversions - elke backend, elk event | Niet beschikbaar | Niet beschikbaar |
| GA4 / Meta CAPI-forwarding | Ja - doorgestuurd nadat de conversie is geregistreerd | Niet beschikbaar | Gedeeltelijk - alleen client-side pixel |
| Omzet in analytics | Omzetoverzicht per link en per campagne, met valuta | Niet beschikbaar | Alleen conversieaantal, geen omzet |
| Conversiededuplicatie | Ja - idempotentie op click_id + event_name | Niet van toepassing | Niet beschikbaar |
Vragen over conversietracking
Wat als de click_id wordt verwijderd vóór de conversie?
Als de queryparameter elido_cid verloren gaat vóórdat het conversie-event afvuurt - door een redirectketen, een SPA-router die queryparameters niet doorgeeft, of een third-party checkout die onbekende parameters verwijdert - kan de conversie niet worden toegewezen. Test de volledige funnel: klik op een short link, volg elido_cid op elke pagina tot de checkoutbevestiging, en controleer of deze verschijnt in de conversie-POST. Het attributiesnippet van Elido (een klein JavaScript-blok) stelt de click_id ook als fallback in een first-party cookie in - als de URL-parameter verloren gaat maar de gebruiker nog in dezelfde browsersessie is, kan de attributie zich herstellen vanuit de cookie.
Hoe worden terugbetalingen verwerkt in conversieattributie?
Elido verwerkt terugbetalingsevents niet automatisch. Als een charge.refunded-event van Stripe of een refunds/create-event van Shopify afvuurt, boekt Elido de toegewezen omzet niet automatisch af. Je kunt een conversie-event met een negatieve waarde posten naar het aangepaste endpoint om de attributie handmatig terug te draaien. Een webhooklistener voor terugbetalingen staat op de roadmap. Tot die tijd, als je een accurate netto-omzet in Elido nodig hebt, trek dan de terugbetalingstotalen af met behulp van de exportdata en je ordermanagementsysteem.
Werkt conversietracking als de gebruiker de checkout op een ander apparaat afrondt?
Nee - als de gebruiker op mobiel op de short link klikt maar de checkout op desktop afrondt, wordt de click_id niet overgedragen tussen apparaten. De conversie blijft ongeattribueerd, tenzij de sessie van de gebruiker elido_cid heeft bewaard over de apparaatwissel heen (bijvoorbeeld via een ingelogd account dat het heeft opgeslagen). Cross-device-attributie vereist een server-side identiteitsgraaf, die Elido niet biedt. Gebruik voor nauwkeurige cross-device-attributie je MMP of CDP naast Elido's server-side conversies.
Welke valuta's worden ondersteund voor omzetattributie?
Alle ISO 4217-valutacodes worden geaccepteerd in het value-veld van een conversie-event. Omzet wordt opgeslagen in de originele valuta; het analyticsdashboard toont omzet in de valuta van elk conversie-event. Als je een samengevoegd overzicht in één valuta nodig hebt, exporteer dan de conversie-events en reken om in je eigen data warehouse - Elido past geen wisselkoersen toe.
Hoe stel ik de client_reference_id-passthrough van Stripe in?
Stel bij het aanmaken van een Stripe Checkout Session client_reference_id in op de waarde van de elido_cid-URL-parameter van de verwijzende click. In JavaScript: const session = await stripe.checkout.sessions.create({ ..., client_reference_id: searchParams.get('elido_cid') }). De webhookhandler van Elido leest dit veld uit checkout.session.completed. Gebruik je rechtstreeks PaymentIntents, gebruik dan in plaats daarvan het metadata-veld met key elido_cid. De setupgids op /docs/guides/conversion-tracking heeft copy-paste-code voor Node, Python en Go.
Zijn conversiegegevens opgenomen in analytics-exports?
Ja. Conversie-events worden opgeslagen in een aparte tabel (conversions) naast de click-eventtabel (clicks). Geplande exports naar S3, BigQuery of Snowflake bevatten beide tabellen. De JOIN-key is click_id. Een referentie-SQL-query die clicks aan conversions koppelt en omzet per campagne-UTM-source berekent, staat in de exportgids.
Kan ik niet-omzetgerelateerde conversies zoals formulierinvullingen of trialactivaties tracken?
Ja - het aangepaste conversie-endpoint accepteert elke event_name en een optionele value (zet deze op 0 voor niet-omzetgerelateerde events). Gebruik eventnamen zoals 'trial_started', 'demo_booked', 'form_submitted'. Deze verschijnen in de analytics-weergave van de link onder 'Conversies' met de eventnaam als label. Als je ook doorstuurt naar GA4, worden deze gemapt naar aangepaste GA4-events. Conversietellingen (niet alleen omzet) zijn zichtbaar per link en per campagne, ongeacht de eventwaarde.
Wat is de latentie van conversie-eventontvangst tot zichtbaarheid in analytics?
Van webhookontvangst tot de analytics-opslag: doorgaans minder dan 5 seconden, via dezelfde event-streampipeline als click-events. Attributie (het matchen van de conversie aan de oorspronkelijke click) gebeurt synchroon bij webhookontvangst - als de click_id oplost, is de attributie direct. Downstream forwarding naar GA4 / Meta CAPI / Mixpanel is asynchroon en voegt 2–10 seconden toe. Het omzetcijfer in de dashboard-analyticsweergave wordt binnen 30 seconden na ontvangst van het conversie-event bijgewerkt.
Verder lezen
Click-analytics - waar conversieomzet naast clickaantallen verschijnt.
Vuur Meta CAPI- en Google Ads-pixels af tijdens de redirect - de acquisitiekant van de conversielus.
Omzetattributie op campagneniveau - zie welke campagnevariant de meeste omzet opleverde.
HMAC-getekende uitgaande webhooks van Elido - ontvang conversie-toegewezen click-events in je eigen systemen.
Klaar om het te proberen?
Begin met het gratis plan, upgrade wanneer je een custom domain nodig hebt.