Aller au contenu

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.

GEThttps://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.

Réponse · 200 OK
{
"code": 200,
"status": "OK",
"message": "Payment link retrieved",
"link": {
"id": "8kD2xQpLm",
"type": "product",
"title": "Café Amina, 250 g",
"url": "https://wajub.link/cafe-amina",
"currency": "XAF",
"price": 3500,
"is_public": true,
"is_archived": false,
"expiry_date": null,
"sales_limit": null,
"created_at": "2026-09-11T14:00:00Z"
}
}

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.

GEThttps://api.wajub.com/links

Ce 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 vueSert à
Une empreinte quotidienne du visiteurDistinguer les visiteurs uniques des visites répétées
Le referrer HTTPSavoir d'où vient la visite
Le pays, déduit de l'IPLa répartition géographique
Le type d'appareil, déduit du user agentMobile 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.

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.

Trois réglages mettent fin à la vie d'un lien, et ils ne le ferment pas de la même façon.

RéglageFermeLe payeur obtient
expiry_dateLa page, au moment que vous choisissez410, avant tout affichage
is_archivedLa page, immédiatement410, avant tout affichage
sales_limitLe paiement, pas la page422 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.

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.

Que pensez-vous de ce contenu ?