Skip to main content

Attribution

L’attribution relie tes données de visibilité IA à de vrais leads et de vrais revenus. Au lieu de seulement voir si ta marque apparaît dans les réponses IA, tu vois si tes clients déclarent réellement t’avoir trouvé via ChatGPT, Perplexity, Claude, Google, la publicité, une recommandation ou d’autres canaux — et combien de chiffre d’affaires chaque canal génère. L’attribution Finseo repose sur deux types de données, fusionnées automatiquement :
  • Réponses — la réponse d’un client à « Comment avez-vous entendu parler de nous ? », via la popup de sondage Finseo, tes propres formulaires, un outil de sondage ou ton CRM.
  • Conversions — achats et leads avec un ID de transaction et un montant, issus de ton tracking existant (Google/Meta), de Stripe, de ton système de boutique ou d’un webhook.
Quand une réponse et une conversion partagent le même ID de commande ou le même email, elles fusionnent en un seul point de données attribué : « cette commande de 1 234 € vient de ChatGPT ».

Configuration guidée

Le moyen le plus rapide de configurer l’attribution est l’assistant intégré : ouvre Attribution dans ton dashboard et clique sur Set up attribution. Il te demande ce que tu veux suivre (achats, leads ou les deux), quel système tu utilises et si tu as déjà un tracking ou un sondage post-achat — puis il recommande exactement un chemin d’installation avec des snippets à copier-coller et vérifie en direct que le premier événement arrive. Les chemins recommandés, selon ta configuration :

Snippet Finseo

Une seule balise script. Popup de sondage plus capture automatique des achats depuis ton tracking Google/Meta existant.

Stripe

Un seul événement webhook Stripe. Montants, essais et renouvellements sont classés automatiquement.

Shopify

Un Custom Pixel qui signale chaque checkout finalisé — les scripts de thème ne s’exécutent pas sur le checkout Shopify, le pixel oui.

WooCommerce

Un webhook de commande natif, y compris l’origine issue de l’Order Attribution intégrée à WooCommerce.

Shopware

Un webhook Flow Builder sur « Order placed ».

Webhook / CRM

HubSpot, Pipedrive, Calendly, outils de formulaires ou ton propre backend.

Le snippet Finseo

Le snippet est une simple balise script servie par projet :
Colle-la avant </head> sur chaque page (ou ajoute-la via Google Tag Manager comme balise Custom HTML). Elle fait trois choses :

1. Capture les réponses de tes formulaires existants

Si tes formulaires posent déjà la question « Comment avez-vous entendu parler de nous ? » (aussi détectée en allemand : « Wie bist du auf uns aufmerksam geworden? »), le snippet capture la réponse à l’envoi du formulaire — la popup ne s’affiche alors jamais. Les emails et noms du même formulaire sont joints comme clés de fusion, pour relier plus tard la réponse à un deal ou à une commande.

2. Affiche la popup de sondage

Si aucun formulaire de la page ne pose la question, le snippet affiche une petite popup avec ta question et tes options de réponse. Tu contrôles tout dans Attribution → Survey settings :
  • Question et canaux — les canaux par défaut incluent AI Search, Google/Bing, Social Media, Online Ads, Referral, Content et Other (avec texte libre). Tu peux aussi utiliser des canaux IA détaillés (ChatGPT, Perplexity, Claude, Gemini, Copilot).
  • Déclencheur — au chargement de la page, après l’envoi d’un formulaire, après un achat détecté, ou manuellement via JavaScript.
  • Style — couleur d’accent, position, arrondi des coins, police (système ou héritée de ton site) et mélange optionnel des réponses pour éviter le biais de position (« Other » reste toujours en dernier).
Chaque visiteur n’est interrogé qu’une seule fois (stocké dans localStorage).

3. S’appuie sur ton tracking de conversion existant

Si Google Analytics / Google Ads (dataLayer / gtag) ou le Pixel Meta (fbq) est installé, le snippet écoute passivement les événements de conversion et les signale à Finseo — aucun tracking en double à configurer : Le snippet lit l’ID de transaction, le montant, la devise et les articles depuis l’événement, déduplique par ID de transaction (les rechargements de la page de remerciement ne sont pas comptés deux fois) et analyse aussi les événements déclenchés avant son chargement. Le comportement côté visiteur n’est jamais modifié.

API JavaScript

Pour un contrôle manuel, le snippet expose une petite API :

Comment réponses et conversions fusionnent

Les conversions et les réponses au sondage arrivent généralement séparément — un client répond à la popup en naviguant, et la commande arrive plus tard via Stripe ou le webhook de ta boutique. Finseo les fusionne automatiquement :
  • Clés de fusion : ID de transaction (respondentExternalIdtransactionId) ou email. Une correspondance par ID de transaction l’emporte toujours sur une correspondance par email.
  • Fenêtres : une nouvelle conversion cherche une réponse au sondage jusqu’à 90 jours en arrière (les essais SaaS convertissent souvent des semaines après l’inscription). Une nouvelle réponse au sondage ne cherche une conversion non associée que sur les 48 dernières heures, pour qu’une réponse fraîche ne soit jamais liée à une vieille commande sans rapport.
  • Montants : si la réponse n’a pas de valeur de deal, le montant de la conversion fusionnée la complète — le chiffre d’affaires n’est jamais compté deux fois.
  • Types de conversion : les checkouts Stripe à 0 € sont stockés comme essais, les factures récurrentes comme renouvellements. Seuls les achats classiques comptent comme nouveaux clients en attente d’attribution.
  • Revenus non attribués : les conversions restées sans réponse au sondage sont affichées comme KPI à part entière, pour que tu voies toujours combien de chiffre d’affaires reste inexpliqué.
Quel que soit l’émetteur de la conversion (Stripe, Pixel Shopify, webhook), inclus toujours l’email du client quand il est disponible — c’est la clé de fusion la plus fiable pour les leads qui répondent au sondage avant d’acheter.

Confidentialité par défaut

Les emails clients sont hachés en SHA-256 dès l’ingestion. Finseo ne stocke jamais d’adresses en clair — uniquement le hash (utilisé pour fusionner commandes et réponses au sondage) et un aperçu masqué comme j***@company.com pour le dashboard.

Importer les réponses d’outils de sondage

Tu utilises déjà un sondage post-achat ? Garde-le — Finseo importe ses réponses au lieu d’afficher une seconde popup :

Fairing

Via Shopify Flow

KnoCommerce

Via webhook natif

Zigpoll

Via webhook natif

SurveyMonkey

Via Zapier/Make

Typeform

Support natif

Tally

Support natif

Envoyer un webhook

L’endpoint webhook de ton projet a cette forme :
Tu trouves (et régénères) le token webhook dans les réglages Attribution du projet. Traite l’URL comme un secret — le token authentifie chaque requête. Envoie des requêtes POST avec Content-Type: application/json. Les envois form-encoded et multipart sont aussi acceptés, pour les outils de formulaires qui ne peuvent pas envoyer de JSON brut.
Une réponse webhook réussie ressemble à ceci :

Les payloads « commande seule » deviennent des conversions

Si un payload contient des données de commande (ID de transaction + montant) mais aucune réponse d’attribution — un événement Stripe, une commande WooCommerce ou un webhook de commande personnalisé — Finseo le stocke comme conversion au lieu de le rejeter. La réponse ressemble alors à ceci :
matched: true signifie que la conversion a immédiatement été fusionnée avec une réponse au sondage antérieure.

Référence des champs

Finseo normalise le texte des canaux en catégories. Par exemple, les réponses contenant chatgpt, openai, claude, perplexity, gemini, copilot ou ai search sont catégorisées en ai_search.

Mapper les champs entrants

Beaucoup d’outils envoient des payloads avec leurs propres noms de champs, comme LeadSource, how_did_you_find_us, q3_howDid ou des réponses Typeform imbriquées. Finseo peut mapper ces champs dans les workflows d’attribution.
  1. Ouvre Attribution.
  2. Va dans Workflows.
  3. Envoie un webhook de test depuis ton système source.
  4. Ouvre le workflow créé.
  5. Mappe les champs entrants vers l’attribution, l’email, le nom, la valeur du deal, la devise, l’ID de formulaire ou des règles.
  6. Enregistre le mapping.
Après le mapping, les futurs webhooks avec la même structure sont analysés automatiquement. Quand un payload ne peut pas du tout être analysé, Finseo crée le workflow pour toi et suggère un mapping de champs par IA — tu n’as plus qu’à le confirmer.
Tu peux aussi utiliser des règles quand un champ source doit être traduit. Par exemple, si utm_source contient chatgpt, mappe-le vers AI Search.

Formats sources pris en charge

Finseo détecte automatiquement plusieurs sources courantes :
  • HubSpot : payloads de webhook contact legacy avec properties, ou corps JSON personnalisés depuis Operations Hub.
  • Typeform : form_response.answers, y compris les champs choice, choices, text et email.
  • Tally : payloads data.fields.
  • Salesforce : JSON depuis Flow HTTP Callout, par exemple LeadSource, Email, Name, Amount et CurrencyIsoCode.
  • Jotform : multipart/form-data avec rawRequest ou des champs comme q3_howDid, formID et submissionID.
  • Stripe : payloads d’événements (checkout.session.completed, invoice.paid, …) — stockés comme conversions avec conversion automatique des centimes et classification essai/renouvellement.
  • WooCommerce : webhooks de commande, y compris les métadonnées Order Attribution comme origine marketing.
  • Shopware : payloads de commande Flow Builder avec orderNumber, amountTotal et l’email client.
  • JSON brut : payloads directs avec des champs comme channelId, respondentEmail, dealValue et metadata.

Exemples

Import quotidien par lots

Si tu préfères un job quotidien, envoie jusqu’à 1000 réponses d’un coup avec l’API bulk.
Consulte l’API Bulk Create Attributions pour la référence complète.

Recevoir les événements d’attribution

Tu peux configurer une URL de webhook sortant dans les réglages Attribution. Finseo envoie un événement à ton URL chaque fois qu’une nouvelle réponse est enregistrée.
Si tu ajoutes un secret de webhook sortant, Finseo signe le corps JSON avec un header X-FinSEO-Signature en HMAC-SHA256.

Limites de débit

  • Endpoint webhook : 120 requêtes par minute par projet.
  • Endpoint collect du snippet : 60 requêtes par minute par IP visiteur.
Les requêtes au-delà de la limite reçoivent un 429 et peuvent être relancées sans risque après une minute.

Dépannage

Chaque requête webhook entrante est journalisée avec son résultat d’analyse dans Attribution → Webhook logs — y compris les requêtes rejetées. Les statuts :

Bonnes pratiques

  • Pose la question d’attribution au plus près de la conversion : inscription, demande de démo, checkout ou qualification de lead.
  • Garde des options de réponse stables entre les pays. Traduis les libellés pour les utilisateurs si besoin, mais garde des valeurs webhook cohérentes.
  • Envoie la devise de paiement d’origine dans dealCurrency ; Finseo sait quand même agréger et convertir les valeurs.
  • Inclus un respondentExternalId stable comme un ID de commande, de lead CRM, de contact ou de deal.
  • Mets produit, SKU, marché, campagne et autre contexte métier dans metadata.
  • Envoie un événement par lead, commande ou deal. Évite d’envoyer chaque page vue comme attribution.