Le connecteur WooCommerce d'AFFYNOR
Synchronisez les commandes, le catalogue et les remboursements de votre boutique WooCommerce et attribuez les ventes à vos campagnes publicitaires (références de clic et ttclid de TikTok) avec réconciliation automatique.
1. Installation
1.1 Créer les consumer keys (permissions Read/Write)
WooCommerce → Réglages → Avancé → API REST → « Ajouter une clé ». Permissions : lecture/écriture (la création de webhooks exige l'écriture). La boutique doit être accessible en HTTPS.
1.2 Connecter depuis la plateforme
Dans Ma boutique → carte WooCommerce, saisissez l'URL de base de la boutique, la consumer key et le consumer secret. La connexion est validée instantanément et reste active.
1.3 Installer le snippet d'attribution
Le snippet comporte deux parties : le hook PHP (functions.php ou un code snippet) qui affiche la commande sur la page de remerciement, et le JavaScript (GTM ou le thème) qui enregistre la référence et déclenche l'événement d'achat.
add_action('woocommerce_thankyou', function ($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
echo '<div id="affynor-order" data-affynor-order-id="' . esc_attr($order->get_id())
. '" data-affynor-order-total="' . esc_attr($order->get_total())
. '" data-affynor-order-currency="' . esc_attr($order->get_currency()) . '" style="display:none"></div>';
}, 10);<script>!function(){var S="https://affynor.com",K="TU_SECRETO";function u(n){try{return new URLSearchParams(location.search).get(n)}catch(e){}}function c(n){try{return document.cookie.split("; ").find(function(x){return x.indexOf(n+"=")===0}).slice(n.length+1)}catch(e){}}var r=u("affynor_ref")||c("affynor_ref")||c("tiktok_ttclid");if(r){try{document.cookie="affynor_ref="+encodeURIComponent(r)+"; path=/; max-age=31536000"}catch(e){}}var b=u("fbclid")||c("affynor_fbc");if(b&&!/^fb[.]/.test(b)){b="fb.1."+Date.now()+"."+b}if(b){try{document.cookie="affynor_fbc="+encodeURIComponent(b)+"; path=/; max-age=31536000"}catch(e){}}function f(o){try{fetch(S+"/store/pixel",{method:"POST",headers:{"Content-Type":"application/json","x-affynor-pixel-secret":K},body:JSON.stringify({order_id:o.id,revenue_cents:Math.round(+o.total*100),currency:o.cur||"EUR",ref_code:r,fbclid:b})})}catch(e){}}window.affynorPixel=f;function a(){var e=document.getElementById("affynor-order");if(e)f({id:e.getAttribute("data-affynor-order-id"),total:e.getAttribute("data-affynor-order-total")||"0",cur:e.getAttribute("data-affynor-order-currency")});}if(/thank|gracias|success|pedido|confirm/i.test(location.pathname))setTimeout(a,400)}();</script>Remplacez TU_SECRETO par le secret de pixel affiché sur la carte de la boutique connectée.
2. Attribution
Le paramètre affynor_ref de l'URL de l'annonce (ou le ttclid de TikTok) est stocké dans un cookie et joint à la commande sur la page de remerciement. Le snippet stocke aussi le fbclid de Meta — au format fb.1.<moment>.<fbclid> — pour que la conversion puisse être associée au clic sur Meta. L'événement reste en attente et est réconcilié automatiquement avec les commandes synchronisées : seules les ventes vérifiées sont attribuées à vos campagnes.
3. Synchronisation
Les webhooks WooCommerce (order.created, order.updated, product.created, product.updated) livrent les changements en temps réel ; un synchroniseur de sécurité parcourt la boutique toutes les 10 minutes — y compris les remboursements via GET /orders/{id}/refunds — pour qu'aucune commande ne reste non enregistrée même si le cron de WordPress échoue.
4. Remboursements
Les remboursements sont synchronisés automatiquement et déduits du revenu attribué du mois. Une commande entièrement remboursée est rejetée lors de la réconciliation : elle ne génère jamais de commission.
5. Modèle de tarification
15 % du revenu attribué du mois, avec un minimum de 129,90 €. Si le mois ne comporte aucune vente attribuée, le minimum ne s'applique pas (mois 1 gratuit). Le minimum est unique par marchand même avec plusieurs boutiques connectées (par exemple Shopify + WooCommerce).
6. Dépannage
Le cron WordPress du marchand est désactivé ou en retard
Vérifier le cron dans WP ; entre-temps la synchro de sécurité (toutes les 10 min) couvre les commandes. Documenté dans la FAQ.La variante de signature (body contre delivery_url+body) ou le consumer secret ne correspondent pas
Recalculer le HMAC avec le consumer secret actuel et recréer le webhook avec ce secret.Consumer key révoquée ou sans permission de lecture/écriture
Régénérer la clé dans WooCommerce et reconnecter depuis la carte.Le snippet ne s'est pas déclenché (adblock, cookie, page autre que celle de remerciement)
Vérifier le snippet sur la page de remerciement ; l'événement reste PENDING jusqu'à ce que la synchro le réconcilie.7. État et feuille de route
Le connecteur est en validation avec des marchands pilotes : connexion, attribution et synchronisation complètes (phases A–D) ; la validation sur des boutiques réelles (phase E) est en cours. La publication comme extension sur le marketplace WooCommerce est la prochaine étape.