Suivi des conversions. Attribute every dollar to the click that earned it.
Les récepteurs de webhooks Stripe et Shopify vérifient les signatures et relient les revenus au lien court d'origine. L'attribution de campagne est dérivée automatiquement.
- Server-side Stripe & Shopify attribution
- click_id passthrough — no client JS needed
- Revenue by link, campaign, day, platform
- Automatic HMAC signature verification
How it works
The click_id travels the entire funnel
A UUID is stamped at click time and passed through every step — URL parameter, session cookie, Stripe session, Shopify order — until the webhook fires and closes the attribution loop server-side. No client JavaScript is required for the attribution itself.
- Step 01
Click short link
elido.me/saleEdge stamps UUID v4
cid: a3f9c1… - Step 02
click_id attached
?elido_cid=a3f9c1…URL param + first-party cookie
cid: a3f9c1… - Step 03
User converts
client_reference_id=a3f9c1…Stripe session carries click_id
cid: a3f9c1… - Step 04
Webhook fires
checkout.session.completedRevenue attributed to originating link
cid: a3f9c1…
Integrations
Drop-in webhook receivers for Stripe and Shopify
Register the endpoint in your dashboard, paste the signing secret, and attribution starts flowing. HMAC signature verification happens before any payload is processed — spoofed webhooks are rejected before they touch your data.
Revenue dashboard
Revenue per link, per campaign, per day
Every short link gets a live revenue total — sum of all attributable conversion values through that link. Filter by campaign tag, date range, or platform. Export as CSV or stream to BigQuery via scheduled exports.
- Revenue per linkSummed conversion values, any currency, in the original denomination
- CVR over timeConversion rate time-series alongside click volume
- Forwarding to GA4 / Meta CAPIFanned out asynchronously after conversion is recorded
- DeduplicationIdempotent on click_id + event_name — double webhooks don't double-count
| Link | Clicks | Conv. | Revenue | 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% |
What you can do
- Stripe checkout.session.completed
- Stripe payment_intent.succeeded
- Shopify orders/paid
- Attribution de campagne dérivée du lien
- Résumé des revenus dans le tableau de bord
Fonctionnement de l'attribution des conversions côté serveur de bout en bout
Les pixels côté client perdent 20 à 40 % des conversions en raison des bloqueurs de publicité, des restrictions de confidentialité iOS et des chaînes de redirection de paiement. L'attribution côté serveur comble cet écart.
Chaque clic reçoit un UUID transmis à la destination — le point d'ancrage d'attribution pour le suivi des conversions
Lorsqu'un utilisateur clique sur un lien court Elido, le système génère un click_id (UUID v4) et l'ajoute comme paramètre de requête (elido_cid) à l'URL de destination. Votre tunnel de paiement doit conserver ce paramètre à chaque étape — la plupart des routeurs SPA et des piles de paiement avec rendu serveur transfèrent les paramètres de requête inconnus par défaut, mais les paiements en plusieurs étapes avec des chaînes de redirection peuvent les supprimer. Le click_id est également stocké dans un cookie de session sur le domaine de destination si vous intégrez l'extrait d'attribution de 2 Ko d'Elido (facultatif). Testez le tunnel complet avant la mise en ligne : cliquez sur un lien court, effectuez un achat de test, vérifiez que l'elido_cid apparaît dans le POST de conversion. S'il n'apparaît pas, ajoutez le transfert des paramètres de requête dans votre middleware de paiement. C'est l'erreur de configuration d'attribution la plus courante — non pas le webhook, mais la perte du paramètre de requête lors du paiement.
Le récepteur de webhook Stripe vérifie les signatures et attribue les événements checkout.session.completed et payment_intent.succeeded
Enregistrez le point de terminaison du webhook Stripe d'Elido dans votre tableau de bord Stripe (Paramètres → Webhooks → Ajouter un point de terminaison). Elido écoute les événements checkout.session.completed et payment_intent.succeeded. À chaque événement, Elido vérifie l'en-tête Stripe-Signature à l'aide de votre secret de signature de webhook, extrait le montant et la devise du paiement, recherche le click_id enregistré par rapport au client_reference_id de la session de paiement (que votre paiement doit remplir — voir le guide), et enregistre la conversion par rapport à ce clic. Le revenu et le click_id sont ensuite disponibles dans la vue analytique du lien et dans le résumé des revenus de la campagne. Le champ client_reference_id de la Checkout Session est le canal recommandé ; alternativement, utilisez le champ metadata de Stripe avec la clé elido_cid si vous utilisez directement PaymentIntents. La configuration complète prend environ 30 minutes si votre intégration Stripe gère déjà les webhooks.
Le webhook orders/paid de Shopify lie les revenus des commandes au clic sur le lien court d'origine
Enregistrez le point de terminaison du webhook Shopify d'Elido dans votre interface administrateur Shopify (Paramètres → Notifications → Webhooks → Créer un webhook → Sujet : orders/paid). Elido vérifie l'en-tête X-Shopify-Hmac-Sha256, extrait le total et la devise de la commande, et recherche l'elido_cid dans les note_attributes de la commande (que vous remplissez depuis le panier à l'aide de l'API note_attributes du panier de Shopify, en transmettant le click_id du cookie de session ou du paramètre URL). Pour les boutiques Shopify utilisant des thèmes Online Store 2.0, l'extrait d'attribution d'Elido injecte automatiquement le click_id dans le panier lors du clic. Les commandes attribuées sont dédoublonnées par ID de commande afin que les commandes remboursées puis remplacées ne soient pas comptées deux fois. Les boutiques Shopify Plus avec des extensions de paiement personnalisées peuvent transmettre le click_id via un canal plus fiable — le guide de configuration couvre le flux spécifique à Plus.
Envoyez une requête POST au point de terminaison de conversion d'Elido depuis n'importe quel backend — pas seulement Stripe et Shopify
POST /v1/conversions avec un corps JSON : { click_id: "...", event_name: "purchase", value: 99.00, currency: "EUR", metadata: {} }. Le click_id est l'elido_cid issu du clic. Elido authentifie la requête avec la clé API de votre espace de travail (HMAC-SHA256 sur le corps de la charge utile recommandé pour plus de sécurité). Ce point de terminaison couvre toute conversion non gérée par les intégrations natives Stripe ou Shopify : WooCommerce, activations d'essai SaaS personnalisées, soumissions de formulaires de prospects, conversions d'appels téléphoniques suivies par votre plateforme de téléphonie. Le champ event_name est libre ; utilisez n'importe quelle convention de nommage préférée par votre équipe — il est affiché tel quel dans la vue analytique. Idempotence : envoyez deux fois la même combinaison click_id + event_name et seule la première sera enregistrée. La valeur de l'événement et les métadonnées sont mutables uniquement lors de la première écriture.
Diffusez simultanément les conversions vers GA4 Measurement Protocol, Meta CAPI et le suivi serveur Mixpanel
Une fois qu'Elido a enregistré une conversion suite à un clic, il diffuse l'événement vers toutes les destinations de transfert côté serveur que vous avez activées : GA4 Measurement Protocol (l'événement apparaît dans GA4 comme un événement d'achat côté serveur avec les paramètres UTM d'origine du clic), Meta CAPI (l'événement est dédoublonné par rapport au pixel côté client si les deux sont activés, en utilisant l'event_id du click_id) et le suivi serveur Mixpanel (l'événement est envoyé avec le distinct_id de l'appel $identify de Mixpanel si vous avez configuré l'identité croisée). Le transfert se fait de manière asynchrone après l'enregistrement de la conversion — il ne bloque pas la réponse du webhook vers Stripe ou Shopify. Les événements de transfert échoués sont retentés avec un backoff exponentiel pendant 24 heures, puis abandonnés avec une entrée de journal. Vous pouvez voir l'état du transfert par conversion dans le tableau de bord.
Équipes revenus utilisant le suivi de conversion Elido
Les noms sont des espaces réservés — les études de cas réelles de clients apparaîtront ici au fur et à mesure de leur publication.
“iOS 14.5 a tué notre attribution via le Pixel Meta sur 30 % des achats mobiles. Le webhook Stripe côté serveur via Elido a permis de récupérer la majeure partie — le passage du click_id dans le client_reference_id de Stripe a été la clé. La configuration a pris un après-midi.”
“Nous envoyons les activations d'essai via POST au point de terminaison de conversion personnalisé d'Elido. La chaîne clic → essai → payant est désormais traçable de bout en bout sans un CDP complet. Le transfert vers GA4 Measurement Protocol signifie que nos tableaux de bord de canaux payants sont à nouveau précis.”
“Le webhook orders/paid de Shopify plus l'extrait d'attribution dans le thème a été une intégration d'une journée. Le revenu par campagne est désormais un chiffre en direct lors de notre réunion matinale, pas une formule de feuille de calcul que quelqu'un doit mettre à jour.”
Suivi de conversion Elido vs Bitly vs Short.io
Bitly n'a pas de suivi de conversion côté serveur. Short.io a des pixels de conversion basiques. Le suivi de conversion d'Elido est côté serveur et transfère vers plusieurs plateformes publicitaires.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Attribution des conversions côté serveur | Oui — basé sur les webhooks, signature vérifiée | Non disponible | Non disponible |
| Intégration du webhook Stripe | checkout.session.completed + payment_intent.succeeded | Non disponible | Non disponible |
| Intégration du webhook Shopify | orders/paid — signature vérifiée, dédoublonnage des commandes | Non disponible | Non disponible |
| Point de terminaison de conversion personnalisé | POST /v1/conversions — tout backend, tout événement | Non disponible | Non disponible |
| Transfert GA4 / Meta CAPI | Oui — diffusé après l'enregistrement de la conversion | Non disponible | Partiel — pixel côté client uniquement |
| Revenus dans les analyses | Résumé des revenus par lien et par campagne avec devise | Non disponible | Nombre de conversions uniquement, pas de revenus |
| Dédoublonnage des conversions | Oui — idempotence sur click_id + event_name | Non applicable | Non disponible |
Questions sur le suivi des conversions
Que se passe-t-il si le click_id est supprimé avant la conversion ?
Si le paramètre de requête elido_cid est perdu avant que l'événement de conversion ne se déclenche — en raison d'une chaîne de redirection, d'un routeur SPA ne transférant pas les paramètres de requête, ou d'un paiement tiers supprimant les paramètres inconnus — la conversion ne peut pas être attribuée. Testez le tunnel complet : cliquez sur un lien court, suivez l'elido_cid à travers chaque page jusqu'à la confirmation de paiement, vérifiez qu'il apparaît dans le POST de conversion. L'extrait d'attribution d'Elido (un petit bloc JavaScript) définit également le click_id dans un cookie tiers comme solution de secours — si le paramètre URL est perdu mais que l'utilisateur est toujours dans la même session de navigation, l'attribution peut être récupérée à partir du cookie.
Comment les remboursements sont-ils gérés dans l'attribution des conversions ?
Elido ne traite pas automatiquement les événements de remboursement. Si un événement Stripe charge.refunded ou Shopify refunds/create se déclenche, Elido ne déduit pas le revenu attribué. Vous pouvez envoyer un événement de conversion à valeur négative via POST au point de terminaison personnalisé pour inverser l'attribution manuellement. Un écouteur de webhook de remboursement est sur la feuille de route. En attendant, si vous avez besoin de revenus nets précis dans Elido, soustrayez les totaux de remboursement à l'aide des données d'exportation et de votre système de gestion des commandes.
Le suivi de conversion fonctionne-t-il si l'utilisateur finalise son achat sur un autre appareil ?
Non — si l'utilisateur clique sur le lien court sur mobile mais finalise son achat sur ordinateur, le click_id n'est pas transféré entre les appareils. La conversion ne sera pas attribuée à moins que la session de l'utilisateur n'ait conservé l'elido_cid à travers le changement d'appareil (par exemple, via un compte connecté qui l'a stocké). L'attribution multi-appareils nécessite un graphe d'identité côté serveur, qu'Elido ne fournit pas. Pour la précision de l'attribution multi-appareils, utilisez votre MMP ou CDP aux côtés des conversions côté serveur d'Elido.
Quelles devises sont prises en charge pour l'attribution des revenus ?
Tous les codes de devise ISO 4217 sont acceptés dans le champ value d'un événement de conversion. Les revenus sont stockés dans la devise d'origine ; le tableau de bord analytique affiche les revenus dans la devise de chaque événement de conversion. Si vous avez besoin d'une vue consolidée dans une seule devise, exportez les événements de conversion et convertissez-les dans votre entrepôt de données — Elido n'applique pas de taux de change.
Comment configurer le transfert du client_reference_id de Stripe ?
Lors de la création d'une session de paiement Stripe, définissez client_reference_id sur la valeur du paramètre URL elido_cid du clic de référence. En JavaScript : const session = await stripe.checkout.sessions.create({ ..., client_reference_id: searchParams.get('elido_cid') }). Le gestionnaire de webhook d'Elido lit ce champ depuis checkout.session.completed. Si vous utilisez directement PaymentIntents, utilisez plutôt le champ metadata avec la clé elido_cid. Le guide de configuration sur /docs/guides/conversion-tracking contient du code prêt à l'emploi pour Node, Python et Go.
Les données de conversion sont-elles incluses dans les exportations ClickHouse ?
Oui. Les événements de conversion sont stockés dans une table ClickHouse distincte (conversions) aux côtés de la table des événements de clic (clicks). Les exportations planifiées vers S3, BigQuery ou Snowflake incluent les deux tables. La clé de JOIN est click_id. Une requête SQL de référence qui joint les clics aux conversions et calcule les revenus par source UTM de campagne se trouve dans le guide d'exportation.
Puis-je suivre des conversions sans revenu comme les formulaires ou les activations d'essai ?
Oui — le point de terminaison de conversion personnalisé accepte n'importe quel event_name et une valeur optionnelle (définie sur 0 pour les événements sans revenu). Utilisez des noms d'événements tels que 'trial_started', 'demo_booked', 'form_submitted'. Ceux-ci apparaissent dans la vue analytique du lien sous 'Conversions' avec le nom de l'événement comme libellé. Si vous effectuez également un transfert vers GA4, ceux-ci correspondent à des événements GA4 personnalisés. Les nombres de conversions (pas seulement les revenus) sont visibles par lien et par campagne, quelle que soit la valeur de l'événement.
Quel est le délai entre la réception de l'événement de conversion et sa visibilité dans les analyses ?
Réception du webhook vers ClickHouse : généralement moins de 5 secondes via le même pipeline Redpanda que les événements de clic. L'attribution (correspondance de la conversion au clic d'origine) se fait de manière synchrone lors de la réception du webhook — si le click_id est résolu, l'attribution est immédiate. Le transfert en aval vers GA4 / Meta CAPI / Mixpanel est asynchrone et ajoute 2 à 10 secondes. Le chiffre des revenus dans la vue analytique du tableau de bord est mis à jour dans les 30 secondes suivant la réception de l'événement de conversion.
Keep reading
Analyses de clics ClickHouse — là où les revenus de conversion apparaissent aux côtés du nombre de clics.
Déclenchez les pixels Meta CAPI et Google Ads lors de la redirection — le côté acquisition de la boucle de conversion.
Attribution des revenus au niveau de la campagne — voyez quelle variante de campagne a généré le plus de revenus.
Webhooks sortants signés par HMAC depuis Elido — recevez les événements de clics attribués aux conversions dans vos propres systèmes.
Prêt à essayer ?
Commencez avec le forfait gratuit, passez à la version supérieure lorsque vous avez besoin d'un domaine personnalisé.