Suivi et conversions
Ce qu'un lien mesure vraiment, où trouver ces chiffres, et comment il se ferme.
Deux questions différentes se posent à propos d'un lien, et leurs réponses se trouvent à deux endroits différents.
Est-il toujours ouvert ? C'est l'objet lien, et l'API y répond. Fonctionne-t-il ? Ce sont les statistiques, et seul le Dashboard y répond. Savoir distinguer les deux vous évite de chercher des chiffres là où il n'y en a pas.
L'API n'a pas de compteurs
Les vues de la page d'un lien sont comptées, mais rien de tout cela n'atteint l'API.
GET /links/{id} renvoie ce que le lien est, jamais ses performances : pas de views, pas de
conversions, pas de revenue, ni même de view_count, alors que cette colonne est incrémentée à
chaque visite.
https://api.wajub.com/links/{id}curl https://api.wajub.com/links/8kD2xQpLm \
-H "Authorization: sk.kZ3qP8mWvL2xR7tB5nY4hC6dF9jS1aG0eU3i…"La réponse est l'état du lien, et c'est ce que vous interrogez pour savoir s'il encaisse toujours.
La liste fonctionne de la même façon, et accepte per_page, search, archived pour voir les
liens archivés plutôt que les liens actifs, only_public, et un cursor pour les exports.
https://api.wajub.com/linksCe qui est réellement mesuré
Chaque visite qui passe les verrous d'accès est enregistrée, avec plus de détails que l'objet lien ne le laisse penser.
| Enregistré à chaque vue | Sert à |
|---|---|
| Une empreinte quotidienne du visiteur | Distinguer les visiteurs uniques des visites répétées |
Le referrer HTTP | Savoir d'où vient la visite |
| Le pays, déduit de l'IP | La répartition géographique |
| Le type d'appareil, déduit du user agent | Mobile contre ordinateur |
L'empreinte est calculée à partir de l'IP et du user agent du visiteur et de la date : la même personne qui visite deux jours différents compte donc pour deux visiteurs uniques. Lisez le nombre de visiteurs uniques comme « uniques par jour », pas comme un nombre de personnes.
Une visite bloquée n'est pas une vue
Quand un lien est protégé par mot de passe, une tentative dont le mot de passe échoue n'est pas
comptée. Une visite sur un lien non publié, expiré ou dont le plafond de vues est atteint ne l'est
pas non plus. Le compteur n'avance que pour les visites qui ont réellement atteint la page, et c'est
ce qui fait de max_views un plafond fiable.
Les chiffres, et où les lire
Links → un lien → Analytics est le seul endroit où ils apparaissent. Vous y trouvez les vues et les visiteurs uniques dans le temps, les transactions et le chiffre d'affaires générés par le lien, la transaction moyenne, les principaux pays et types d'appareils, et un export CSV de l'ensemble.
Le taux de conversion se calcule par visiteur, pas par vue
Le chiffre vaut transactions ÷ unique visitors, et non transactions ÷ views. Une page ouverte
quatre fois avant le paiement compte pour un visiteur et une conversion : le taux paraît donc plus
élevé qu'avec un calcul par vue. Comparez-le à lui-même dans le temps plutôt qu'à un chiffre venant
d'un autre outil.
Attribuer un canal
Aucun paramètre d'URL ne marque une visite. Un ?src=whatsapp sur l'URL partagée n'est transmis
nulle part : il n'atteint pas le paiement, il n'est pas enregistré sur la vue, et il n'apparaîtra
dans aucun rapport.
Vous disposez à la place de deux choses qui fonctionnent.
Le referrer est capturé automatiquement : le trafic qui en porte un, depuis un lien dans une publication ou une page, affiche déjà son origine dans les statistiques. Le trafic venant de WhatsApp, d'un SMS ou d'un QR code n'a pas de referrer, et c'est en pratique l'essentiel du trafic.
Donc, pour tout ce que vous devez vraiment attribuer, créez un lien par canal. Même produit, même
prix, custom_url différente : wajub.link/cafe-whatsapp, wajub.link/cafe-instagram. Chacun garde
ses propres vues, son propre taux de conversion et son propre chiffre d'affaires, et la comparaison
est exacte plutôt que déduite.
Un paiement n'indique pas de quel lien il vient
La base de données enregistre le lien à l'origine d'un paiement, mais l'API n'en expose rien :
GET /payments n'a pas de filtre par lien, et un objet paiement ne porte aucun champ lien.
L'attribution via l'API est impossible aujourd'hui. Links → un lien → Transactions dans le
Dashboard est le seul endroit où les deux sont reliés, ce qui est une deuxième raison de séparer
les liens par canal.
Comment un lien se ferme
Trois réglages mettent fin à la vie d'un lien, et ils ne le ferment pas de la même façon.
| Réglage | Ferme | Le payeur obtient |
|---|---|---|
expiry_date | La page, au moment que vous choisissez | 410, avant tout affichage |
is_archived | La page, immédiatement | 410, avant tout affichage |
sales_limit | Le paiement, pas la page | 422 au moment de payer, This payment link has reached its sales limit. |
La différence compte. Un lien expiré ou archivé ne s'ouvre jamais : le payeur voit une page fermée et tout s'arrête là. Un lien qui a atteint son plafond de ventes s'ouvre toujours normalement, affiche le produit et le bouton, et ne refuse qu'au moment du paiement. Si vous vendez une quantité fixe, attendez-vous à ce que des payeurs tombent sur ce message plutôt que sur une page fermée.
L'archivage est l'option réversible : remettez is_archived à false via PUT /links/{id} et le
lien encaisse de nouveau, en conservant tout ce qu'il a déjà collecté. expiry_date est une
condition plutôt qu'un état : la repousser rouvre un lien qui s'était fermé à cause d'elle.
single_use_link ne fait rien
Le champ est accepté à la création, enregistré et renvoyé en lecture, mais rien ne l'applique :
aucun code ne refuse un deuxième paiement parce qu'un lien est marqué à usage unique. Un lien avec
single_use_link: true continue d'encaisser indéfiniment. Pour un lien qui doit se fermer après
une vente, définissez sales_limit: 1, qui est bien appliqué.
La dépublication avec is_public: false ferme aussi un lien, mais répond 404 au lieu de 410,
car un lien non publié doit donner l'impression de n'avoir jamais existé. Les verrous d'accès sont
décrits dans Personnalisation.
Le rapprochement des fonds
Les paiements d'un lien sont des paiements ordinaires. Ils arrivent dans votre liste Payments,
déclenchent payment.succeeded, sont réglés sur votre solde et se remboursent comme les autres : il
n'y a donc rien de propre aux liens à rapprocher.
Le webhook transporte ce que le payeur a saisi dans vos extra_fields, imbriqué sous
metadata.extra_fields. Si vous devez savoir depuis votre propre code quel lien a produit un
paiement, aujourd'hui cela veut dire le demander au payeur, via un champ, ou séparer par lien comme
ci-dessus.
Pages associées
- Liens de paiementCe qu'est le produit, et quand un lien vaut mieux qu'une intégration.
- Démarrage rapideCréez un lien, publiez-le, partagez-le.
- PersonnalisationImages, langues, devises, et qui peut entrer.
- WebhooksÉcoutez payment.succeeded et livrez la commande automatiquement.
- Référence API des liens de paiementChaque champ de la ressource, et les cinq endpoints.