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.
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 :</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).
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 (
respondentExternalId↔transactionId) 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é.
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é commej***@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 :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.
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, commeLeadSource, how_did_you_find_us, q3_howDid ou des réponses Typeform imbriquées. Finseo peut mapper ces champs dans les workflows d’attribution.
- Ouvre Attribution.
- Va dans Workflows.
- Envoie un webhook de test depuis ton système source.
- Ouvre le workflow créé.
- 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.
- Enregistre le mapping.
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,AmountetCurrencyIsoCode. - Jotform : multipart/form-data avec
rawRequestou des champs commeq3_howDid,formIDetsubmissionID. - 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,amountTotalet l’email client. - JSON brut : payloads directs avec des champs comme
channelId,respondentEmail,dealValueetmetadata.
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.
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.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.
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
respondentExternalIdstable 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.