Guide · Shopify

Tracker les ventes Shopify sans pixel ni thème

Votre boutique sait ce qu'elle a vendu. Elle ne sait pas quelle story, quel mail ou quelle publication l'a vendu. Une commande payée, une requête, et la réponse est dans le rapport.

Tout le guide tient là-dedans

Shopify

Flow → Order paid → Send HTTP request

subtraq.co/api/v1/sales

Subtraq

Installation → Clés d'API → events:write

L'adresse est celle de Subtraq : vous la collez dans l'action Send HTTP request de Flow, avec la clé serveur en en-tête. À partir de là, chaque commande payée devient une vente rattachée au lien qui l'a amenée — sans pixel, sans ligne ajoutée au thème.

Les six étapes, une par une

À lire avant de chercher dans les réglages

Les webhooks natifs de Shopify ne conviennent pas, et voici pourquoi

Subtraq exige une clé serveur dans un en-tête Authorization. Sans elle, n'importe qui pourrait écrire du chiffre d'affaires dans le rapport d'un client : la clé n'est pas une formalité, c'est ce qui rend le chiffre défendable.

Conclusion, et elle n'est pas contournable : le chemin Paramètres → Notifications → Webhooks → Créer un webhook ne peut pas joindre Subtraq. Il faut une action capable de poser un en-tête. Flow en est une. Zapier, Make et n8n en sont d'autres.

Source : les champs acceptés à la création d'un webhook et la structure de livraison, documentation Shopify.

Ce que l'API attend exactement

Relevé le 12 septembre 2026

Ce qu'un webhook Shopify sait faire, et ne sait pas faire

La création d'un abonnement de webhook accepte une adresse, un filtre et une liste de champs à inclure. Elle n'accepte aucun en-tête. Shopify signe ses envois avec l'en-tête X-Shopify-Hmac-Sha256, et c'est la seule preuve d'expéditeur qu'il pose.

Dans Shopify Flow, 6 étapes

De la clé serveur à la première commande enregistrée

Shopify Flow est disponible sur les plans Shopify Plus, Advanced et Grow, d'après sa page de référence. Sur un plan inférieur, sautez au dernier bloc de cette page : Zapier, Make et n8n font le même travail depuis l'extérieur.

1

Dans Subtraq, créez une clé serveur

Installation → Clés d'API. La clé commence par stq_sk_ et doit porter le droit events:write. Elle s'affiche une seule fois. Notez aussi le slug de l'espace client : c'est celui qui apparaît dans l'adresse de son tableau de bord.

2

Dans Shopify, ouvrez Flow et créez un workflow

Le déclencheur à choisir est « Order paid ». C'est l'équivalent, côté Flow, du sujet de webhook orders/paid : la commande est payée, donc il y a un chiffre à enregistrer.

3

Rangez la clé dans un secret

Flow permet de stocker une valeur sensible et de l'appeler ensuite en Liquid par {{secrets.handle}}. La clé serveur ne doit jamais être recopiée en clair dans un champ que d'autres administrateurs de la boutique peuvent lire.

4

Ajoutez l'action « Send HTTP request »

Méthode POST, URL https://subtraq.co/api/v1/sales. Dans le champ Headers, ajoutez Authorization avec pour valeur Bearer suivi du secret, puis Content-Type avec application/json.

5

Écrivez le corps de la requête

Cinq champs suffisent : space, amount en centimes, currency, invoiceId, email. Le montant de Shopify s'écrit en unité principale (« 43.00 ») : Flow doit le multiplier par cent, parce que Subtraq refuse les nombres à virgule sur de l'argent.

6

Déclenchez une commande de test et lisez la réponse

Subtraq répond 201 pour une vente nouvelle, 200 si le même invoiceId est déjà passé. La réponse porte attributed : true si la vente a retrouvé son lien d'origine, false si Subtraq n'a rien trouvé — et il le dit plutôt que d'inventer.

Chemins relevés dans la documentation Shopify le 12 septembre 2026 — l'action Send HTTP request et la liste des sujets de webhook. Une interface change : si ce que vous voyez ne correspond plus, la source fait foi.

Le corps de la requête

Cinq champs, et deux pièges qui coûtent cher

Premier piège, le montant. Subtraq travaille en centimes et refuse les nombres à virgule : 43 € s'écrit 4300. Shopify, lui, expose le total en unité principale. Un oubli de multiplication divise le chiffre d'affaires du client par cent, et personne ne le voit tout de suite.

Second piège, l'identifiant de facture. C'est lui qui empêche de compter deux fois. Shopify rejoue ses envois, et Flow peut se déclencher deux fois sur une même commande : mettez le numéro de commande dans invoiceId et le second passage répond 200 sans rien ajouter.

Comment la vente remonte, du clic au rapport

Ce que la route accepte

Les champs, tels que le code les lit

space (le slug de l'espace) · amount (un entier, en centimes) · currency (trois lettres) · invoiceId (la clé d'idempotence) · et au moins un moyen de retrouver la personne : email, externalId ou clickId. Facultatifs : name, eventName, metadata.

Le point délicat

Relier une commande au lien cliqué

1

Par l'email, et c'est la voie sans développeur

Subtraq cherche la personne par son adresse dans la fenêtre d'attribution de l'espace — trente jours par défaut. Si elle a cliqué un lien suivi et laissé la même adresse à la commande, la vente retrouve son lien. C'est exactement la voie que suit déjà l'intégration Stripe.

2

Par l'identifiant de clic, et là il faut un développeur

Un lien Subtraq transmet à la destination un paramètre st_id de la forme clk_ suivi de vingt-quatre caractères. Le faire voyager jusqu'à la commande suppose de l'écrire dans un attribut de panier, ce que la documentation Shopify décrit par une mutation de son API Storefront : c'est du développement, pas un réglage.

3

Ce qui n'est pas vérifié, on ne l'écrit pas

Aucune page officielle consultée le 12/09 n'affirme que Shopify conserve les paramètres d'URL d'arrivée jusqu'à la commande. Nous ne le promettons donc pas. Une intégration qui reposerait là-dessus marcherait par accident, et cesserait un jour sans prévenir.

4

attributed : false n'est pas une panne

La réponse le dit franchement. Une commande dont l'adresse ne correspond à aucun clic connu est enregistrée, comptée dans le chiffre d'affaires, et signalée comme non attribuée. C'est la règle du moteur : on n'invente jamais une origine.

Ce qu'on appelle l'attribution

Les cas pénibles, traités franchement

Une boutique ne vend pas en ligne droite. Voici ce que Subtraq fait, et ce qu'il ne fait pas.

Une commande est remboursée. Le chiffre se corrige-t-il tout seul ?

Non, et il faut le savoir avant de brancher. Shopify publie bien un sujet refunds/create, mais la route des ventes de Subtraq n'accepte que des montants positifs ou nuls : un remboursement ne peut pas être envoyé comme un montant négatif, et il n'existe pas d'appel qui annule une vente déjà écrite. La voie praticable : envoyer un événement distinct, montant à zéro, avec un eventName parlant, pour garder la trace — puis corriger le chiffre à la main dans le rapport.

Le même client commande deux fois dans la semaine. Deux ventes ?

Oui, deux ventes, et c'est voulu : deux numéros de commande, donc deux invoiceId différents. Elles rejoignent le même contact et le même lien d'origine si l'adresse est la même. Ce qui ne compte jamais deux fois, c'est un même numéro de commande renvoyé par un nouvel essai.

Un paiement différé, ou une commande payée trois jours plus tard ?

Le déclencheur est Order paid : la requête part au paiement, pas à la création de la commande. Ce qui compte alors, c'est la fenêtre d'attribution de l'espace — trente jours par défaut. Un clic plus ancien que la fenêtre ne rattache plus, et le cookie de clic est plafonné à trente jours lui aussi : une seule règle pour la même question.

Et sans Shopify Flow, sur un plan Basic ?

Un webhook orders/paid vers Zapier, Make ou n8n, et l'intermédiaire pose l'en-tête que Shopify ne sait pas poser. C'est un maillon de plus, donc un endroit de plus où ça peut casser — mais c'est honnête et ça marche.

Questions fréquentes

Faut-il installer une application Shopify ?

Non. Aucune application à installer, aucune ligne ajoutée au thème, aucun pixel. Shopify Flow fait partie de l'administration de la boutique sur les plans qui y ont droit.

Faut-il modifier le thème de la boutique ?

Non pour la voie décrite ici, qui rattache la vente par l'adresse email. Oui si vous voulez faire voyager l'identifiant de clic jusqu'à la commande : cela passe par un attribut de panier, c'est-à-dire par du développement.

La clé serveur peut-elle être vue par le client final ?

Elle ne doit jamais atteindre un navigateur. Rangée dans un secret de Flow et appelée en Liquid, elle reste côté serveur. C'est aussi pour cette raison que les montants ne passent jamais par le mouchard de page : un chiffre écrit depuis un navigateur ne vaut rien.

Combien de temps après le clic une vente peut-elle encore être rattachée ?

La fenêtre d'attribution de l'espace client, trente jours par défaut, réglable. Au-delà, la vente est enregistrée mais non attribuée.

Et si Subtraq est indisponible au moment de la commande ?

La commande existe chez Shopify quoi qu'il arrive, et Flow consigne l'échec de l'action. Rien n'est perdu côté boutique ; c'est l'enregistrement de la vente qui manque, et il peut être renvoyé avec le même invoiceId sans risque de doublon.

Sur un plan sans Flow, passez par un intermédiaire

Un webhook orders/paid vers Zapier, Make ou n8n, et c'est l'intermédiaire qui pose l'en-tête Authorization. Les trois guides donnent le chemin dans leur interface.

Le guide n8n

La prochaine commande payée peut déjà savoir d'où elle vient

Créez le compte, prenez une clé serveur, collez l'adresse dans Flow. Le reste, c'est votre boutique qui le fait.

Créer un compte gratuit