Le suivi serveur-à-serveur est la méthode la plus fiable, la plus résistante à la fraude et la plus respectueuse de la vie privée pour suivre les conversions affiliées. Contrairement au suivi par pixel, il ne dépend pas d'un navigateur qui exécute du JavaScript — ce qui signifie qu'il fonctionne lorsque les bloqueurs de publicités sont actifs, qu'ITP bloque les cookies ou que les utilisateurs ont JavaScript désactivé. Ce guide vous guide à travers une implémentation complète.
Comment fonctionne le suivi S2S
Le suivi S2S remplace le navigateur comme intermédiaire dans le reporting des conversions. Au lieu d'un pixel qui se déclenche dans le navigateur de l'utilisateur, le serveur de l'annonceur envoie une requête HTTP directement à l'endpoint de postback d'AffClix lorsqu'une conversion se produit. Le navigateur de l'utilisateur n'est jamais impliqué dans le signal d'attribution.
Flux de suivi S2S
L'utilisateur clique sur le lien affilié → AffClix génère un click_id unique
AffClix redirige l'utilisateur vers la page de destination de l'annonceur avec le click_id dans l'URL
L'annonceur stocke le click_id dans un cookie first-party (côté serveur)
L'utilisateur finalise son achat — le serveur de l'annonceur déclenche le postback vers AffClix
AffClix reçoit le postback, attribue la conversion à l'éditeur — terminé
S2S vs suivi par pixel
| Facteur | Suivi par pixel | Suivi S2S |
|---|---|---|
| Résistance aux bloqueurs de pub | Bloqué par ~42 % des utilisateurs desktop | Jamais affecté — serveur à serveur |
| Compatibilité Safari ITP | Cassé — plafond cookie 1 jour | Entièrement compatible |
| Dépendance JavaScript | Nécessite l'exécution de JS | Zéro dépendance JS |
| Risque de fraude | Les bots peuvent déclencher des pixels | Impossible de falsifier les requêtes serveur |
| Conformité vie privée | Nécessite le consentement aux cookies | Pas de cookie — plus respectueux de la vie privée |
| Complexité de configuration | Déposer un tag — simple | Nécessite une intégration serveur |
Étape 1 — Générer & stocker l'identifiant de clic
Chaque lien affilié traité par AffClix génère un paramètre click_id unique ajouté à l'URL de redirection. Cet identifiant doit être capturé et stocké du côté de l'annonceur immédiatement — la panne S2S la plus courante est la perte du click_id entre la page de destination et la page de conversion.
- Cookie first-party (recommandé) — Défini avec les flags HttpOnly + Secure, expiration 30 jours. Survit aux rechargements de page, aux nouveaux onglets et aux délais de session.
- Passage de paramètre URL — Ajoutez aux tous les liens internes dans le flux de paiement. Fragile si un lien rompt la chaîne.
- Stockage de session uniquement — Non recommandé. Perdu lorsque l'utilisateur ouvre un nouvel onglet et expire avec la session.
Étape 2 — Déclencher le postback lors de la conversion
Lorsqu'un événement de conversion se produit, votre serveur envoie une requête GET à votre URL de postback AffClix. La requête doit être déclenchée côté serveur — jamais depuis le JavaScript du navigateur — pour contourner les bloqueurs de publicités et éviter la manipulation par bot.
Les postbacks déclenchés via le JavaScript du navigateur sont bloqués par les bloqueurs de publicités (affectant 42 % des sessions desktop). Ils peuvent également être rejoués par des bots pour générer de fausses conversions. Déclenchez toujours depuis votre serveur d'application en utilisant curl, axios ou similaire.
Exemples de code PHP & Node.js
// On landing page — store click_id immediately if (isset($_GET['click_id'])) { setcookie('affclix_cid', $_GET['click_id'], time() + 86400 * 30, '/', '', true, true ); } // On order confirmation — fire postback server-side $cid = $_COOKIE['affclix_cid'] ?? null; if ($cid && !Conversion::alreadyFired($order->id)) { $url = 'https://track.affclix.com/pb?' . http_build_query([ 'click_id' => $cid, 'payout' => $order->affiliate_payout, 'currency' => 'USD', 'goal' => 'purchase', 'order_id' => $order->id, ]); $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 5, CURLOPT_SSL_VERIFYPEER => true, ]); curl_exec($ch); curl_close($ch); Conversion::markFired($order->id); }
const axios = require('axios'); async function firePostback(req, order) { const clickId = req.cookies.affclix_cid; if (!clickId) return; try { await axios.get('https://track.affclix.com/pb', { params: { click_id: clickId, payout: order.affiliatePayout, currency: 'USD', goal: 'purchase', order_id: order.id, }, timeout: 5000, }); } catch (err) { logger.warn('Postback failed', { clickId, err: err.message }); } }
Pannes courantes & corrections
click_id perdu entre les pages
Stockez dans un cookie first-party HttpOnly (expiration 30 jours) sur la page de destination dès que le click_id est présent dans l'URL.
Postback déclenché dans le JS navigateur
Déplacez l'appel curl/axios vers votre serveur d'application. Le JS navigateur est bloqué par les bloqueurs de pub sur 42 % des sessions desktop.
Pare-feu serveur bloquant le trafic sortant
Autorisez les IPs de sortie AffClix dans vos règles de pare-feu. Consultez la documentation AffClix pour les plages d'IP actuelles.
Double déclenchement lors du rechargement
Stockez les IDs de commandes déclenchées dans une table DB. Vérifiez avant de déclencher — ignorez si déjà enregistré.
Paramètres requis manquants
Utilisez le Testeur de Postback AffClix dans le tableau de bord pour valider votre URL avant la mise en production.
Tester votre intégration
AffClix fournit un testeur de postback intégré et un environnement sandbox complet. Effectuez ces vérifications avant la mise en production :
- le click_id apparaît dans les cookies du navigateur après la visite de la page de destination
- le cookie persiste lors de la navigation dans le flux de paiement complet
- le postback se déclenche dans les 5 secondes suivant la confirmation de commande
- la conversion apparaît dans le tableau de bord AffClix dans les 10 secondes
- le test réussit avec Safari + bloqueur de pub actif (le cas le plus difficile)
- effectuez un test d'idempotence — rechargez la page de confirmation et vérifiez qu'aucune conversion dupliquée ne se déclenche
Testez toujours sur un vrai appareil iOS avec Safari, pas seulement sur Chrome desktop. L'ITP de Safari est le bloqueur de suivi le plus agressif du terrain et détectera des problèmes que les tests Chrome manquent.