API sur site autonome : REST API, Webhook et intégration de systèmes tiers

Pour connecter votre site à un CRM, un outil d'emailing, une passerelle de paiement ou un outil d'analyse, il n'existe que deux modes : le REST API en Pull actif et le Webhook en Push passif. Contre-intuitif...

独立站 API 集成:REST 拉取 与 Webhook 推送的分工API Integration: REST pull vs Webhook push Webhook 失败了你不知道 —— 关键数据同步必须用定时拉取做对账Webhook failures are silent — use scheduled pull for critical reconciliation 对比维度Dimension REST API(拉)REST API (pull) Webhook(推)Webhook (push) 触发方式Trigger 定时轮询 / 主动请求Scheduled polling 事件发生时对方主动推On event, pushed by source 实时性Realtime 分钟级延迟(轮询间隔)Minute-level lag 秒级实时Second-level realtime 失败可见性Failure visibility 请求失败立即可见,自动重试Errors visible, auto-retry 推送失败对方重试,你不知道Failures silent to you 适用场景Use case 数据同步、报表、对账Sync, reporting, reconciliation 新线索通知、订单状态变更New lead alert, order update 认证方式Auth API Key / OAuth 2.0API Key / OAuth 2.0 签名验证(HMAC)HMAC signature verification 推荐组合:Webhook 做实时通知 + 每小时定时 REST 拉取做对账兜底Best combo: webhook for realtime + hourly REST pull as backup Webhook 负责秒级通知,REST 每小时拉一次增量数据,两边不一致以 REST 为准Webhook alerts in seconds, hourly REST pulls catch what webhook missed 红线:不要把 API Key 写在前端 JavaScript 里 —— 任何人 F12 就能看到Red line: never expose API keys in frontend JS 所有 API 请求必须走后端代理,前端只调自己服务器的接口Proxy all calls through your backend
REST API Pull contre Webhook Push : comparaison sur cinq critères et combinaison recommandée

API sur site autonome : REST API, Webhook et intégration de systèmes tiers

Conclusion d’abord : Pour connecter votre site à un CRM, un outil d’emailing, une passerelle de paiement ou un outil d’analyse, il n’existe que deux modes : le REST API en Pull actif et le Webhook en Push passif. Jugement contre-intuitif : le Webhook n’est pas une solution universelle. Il convient aux notifications en temps réel à la seconde, mais si un Webhook échoue, vous ne le savez pas. La synchronisation des données critiques doit passer par un Pull REST planifié toutes les heures pour assurer la réconciliation. La combinaison recommandée : Webhook pour les notifications en temps réel + REST planifié pour la réconciliation des données. Les deux niveaux sont indispensables. La clé API doit rester côté backend : une clé visible dans le F12 du navigateur est une clé publique.

1. WordPress REST API : comprendre d’abord les capacités par défaut

Depuis la version 4.7, WordPress intègre nativement le REST API, sans plugin. Le format des endpoints est https://votre-domaine/wp-json/wp/v2/posts : ouvrez-le dans un navigateur pour voir la liste des articles au format JSON. Cette API est publique par défaut : n’importe qui peut lire vos articles, vos pages et votre bibliothèque de médias. C’est à la fois un avantage (intégration facile) et un risque (exposition de données internes).

Les opérations d’écriture (créer un article, modifier une commande, ajouter un utilisateur) exigent une authentification. WordPress prend en charge deux méthodes : les mots de passe d’application (Application Passwords, simples, générés dans le profil utilisateur, adaptés aux appels depuis votre propre serveur) et OAuth 2.0 (complexe, adapté à l’autorisation d’applications tierces). Pour connecter votre site à votre propre CRM, les mots de passe d’application suffisent. Ne codez pas en dur le mot de passe du compte admin dans le code pour aller plus vite.

Cadre de décision : devez-vous lire ou écrire des données dans WordPress ? En lecture seule (liste d’articles, historique de commandes), une requête GET avec un mot de passe d’application suffit. En écriture (créer une commande, mettre à jour un utilisateur, envoyer un Webhook), il faut des requêtes POST/PUT, avec des droits minimaux : par exemple, accordez uniquement le droit « modifier les commandes », pas « gérer tous les réglages ». Pour choisir votre stack technique, voir Stack technique crater.

Endpoint Méthode Utilité Exigences de certification
/wp-json/wp/v2/posts GET Lire la liste des articles Public (publiés)
/wp-json/wp/v2/posts POST Créer un article Mot de passe d’application
/wp-json/wc/v3/orders GET Lire les commandes WooCommerce Clé client
/wp-json/wc/v3/orders POST Créer une commande Clé client
/wp-json/wp/v2/users GET Lire la liste des utilisateurs Mot de passe administrateur
/wp-json/wp/v2/media POST Téléverser une image Modifier les mots de passe ci-dessus

2. Webhook : les notifications en temps réel pilotées par les événements

Un Webhook et une API REST, c’est la même chose mais dans l’autre sens. Avec REST, c’est vous qui allez chercher les données sur le serveur distant. Avec un Webhook, c’est le serveur distant qui pousse les données vers vous dès qu’un événement se produit. Par exemple, quand WooCommerce reçoit une nouvelle commande, il envoie une requête POST à l’URL que vous avez renseignée dans la configuration du Webhook, avec le détail de la commande en JSON dans le body. Plus besoin d’interroger le serveur toutes les minutes pour savoir s’il y a une nouvelle commande : elle arrive automatiquement.

WooCommerce prend en charge les Webhooks nativement. Ajoutez-en un dans WooCommerce → Réglages → Avancé → Webhooks. Vous devez renseigner : l’événement déclencheur (création de commande, mise à jour de commande, annulation de commande), l’URL de réception (un endpoint sur votre propre serveur, par exemple https://votre-domaine/wp-json/custom/v1/new-order) et la méthode de signature (HMAC-SHA256, avec une clé secrète pour vérifier que la requête vient bien de WooCommerce et non d’un tiers malveillant).

Un constat contre-intuitif :Si un Webhook échoue, vous ne le savez probablement jamais. Quand WooCommerce envoie un Webhook et que votre serveur répond 500, il réessaie plusieurs fois (5 tentatives maximum par défaut, avec un intervalle croissant). Mais si les 5 tentatives échouent, il abandonne : vous n’avez reçu aucune donnée et vous n’avez reçu aucune alerte. C’est pourquoi les données critiques ne peuvent pas reposer uniquement sur les Webhooks : il faut une récupération planifiée en filet de sécurité. Pour l’intégration CRM, voir Intégration CRM pour site e-commerce.

Événement WooCommerce Hook Destination Priorité
Nouvelle commande créée woocommerce_order_created CRM + notification Slack Maximal
Changement de statut de commande woocommerce_order_status_changed E-mail client + mise à jour CRM Élevée
Paiement réussi woocommerce_payment_complete Mise à niveau de l’adhésion Élevée
Remboursement initié woocommerce_order_refunded Marquage CRM + notification comptabilité Moyenne
Nouvel utilisateur inscrit user_register Liste d’e-mailing Moyenne
Mise en ligne/retrait d’un produit woocommerce_product_set_visibility Synchronisation du stock Faible

III. Récupération planifiée via REST : le filet de sécurité pour le rapprochement

Le Webhook assure la notification en temps réel à la seconde près, mais vous devez impérativement ajouter une récupération planifiée pour le rapprochement. La méthode est simple : écrivez un script WP-Cron qui s’exécute toutes les heures, appelle l’API REST WooCommerce pour récupérer les commandes créées ou mises à jour dans l’heure écoulée, puis les compare aux commandes déjà présentes dans votre base de données. Si le Webhook a manqué une commande (par exemple parce que votre serveur renvoyait un 502 au moment de la réception), la récupération planifiée la rattrape.

Les paramètres de requête de la récupération planifiée doivent inclure un horodatage. Par exemple GET /wp-json/wc/v3/orders?after=2026-09-21T10:00:00&per_page=100 renvoie toutes les commandes postérieures à 10 h, par pages de 100. Si la réponse contient 100 éléments, c’est qu’il y en a probablement d’autres : continuez à paginer. Une fois la récupération terminée, dédupliquez par ID de commande : ignorez celles déjà en base, insérez les autres. C’est la logique de rapprochement la plus simple qui soit.

Exemple concret : un mercredi à 15 h, le certificat SSL du serveur expire et renvoie une erreur 525 pendant 40 minutes. Pendant ce temps, les Webhooks de 3 nouvelles commandes échouent tous. Avec les Webhooks seuls, ces 3 commandes sont perdues. Mais avec une récupération planifiée toutes les heures, la tâche de 16 h récupère les 3 commandes manquées et les clients reçoivent leur e-mail de confirmation. Pour configurer la surveillance, voir Surveillance et alertes du site.

Mode de synchronisation Fréquence Latence En cas d’échec
Push Webhook Déclenché par événement Quelques secondes L’autre partie abandonne après 5 tentatives
Récupération planifiée toutes les heures Chaque heure pile Quelques minutes Nouvelle tentative automatique en cas d’échec
Rapprochement complet quotidien Chaque jour à 3 h du matin Quelques jours Génère un rapport d’écarts à vérifier manuellement
WebSocket en temps réel Temps réel De l’ordre de la milliseconde Reconnexion nécessaire si la connexion tombe

IV. Authentification et sécurité : la clé côté backend, la signature pour vérifier les requêtes

L’erreur de sécurité la plus fréquente en intégration d’API est de mettre la clé API dans le JavaScript frontend. N’importe qui ouvre son navigateur, appuie sur F12 → onglet Network, voit votre clé et s’en sert pour appeler votre API à volonté. La bonne méthode : le frontend n’appelle que les interfaces de votre propre serveur, et c’est le serveur qui ajoute la clé API côté backend avant de transmettre au tiers. Ce proxy backend peut être un point de terminaison REST personnalisé WordPress, ou un simple service Node.js/Python.

Vous devez vérifier la signature à la réception d’un Webhook. Quand WooCommerce envoie un Webhook, il ajoute un en-tête HTTP X-WC-Webhook-Signature : c’est une signature HMAC-SHA256 du corps, calculée avec votre Webhook Secret. Vous recalculez la même signature dans votre point de terminaison de réception, vous la comparez à celle de l’en-tête, et vous ne traitez que si elles correspondent. Si elles diffèrent, la requête est falsifiée : renvoyez directement 403. Sans vérification de signature, n’importe qui peut envoyer de fausses commandes à votre point de terminaison, et votre CRM se remplit de prospects indésirables.

Exemple concret : vous recevez les Webhooks HubSpot, quelqu’un découvre votre URL de réception et construit une fausse requête POST « nouveau prospect ». Sans vérification de signature, ce faux prospect entre dans HubSpot, le commercial le suit pendant un moment avant de découvrir qu’il est faux. Avec la vérification HMAC, la requête HubSpot porte la bonne signature, la fausse requête a une signature incorrecte et se fait bloquer par un 403. Pour les détails de l’intégration CRM, voir Intégration CRM pour site e-commerce.

Point de sécurité Erreur à éviter Bonne pratique
Emplacement de la clé API Dans le JS frontend Dans une variable d’environnement serveur
Proxy de requêtes Le frontend appelle directement l’API tierce Le frontend appelle votre serveur, le backend transmet
Vérification de signature du Webhook Pas de vérification, traitement dès réception Comparaison HMAC-SHA256 avec l’en-tête
HTTPS Réception des Webhooks en HTTP HTTPS obligatoire, TLS 1.2 minimum
Liste blanche d’IP Aucune restriction d’IP source Liste blanche selon les plages d’IP officielles du tiers
Log d’erreur Aucun enregistrement en cas d’échec Toutes les réponses non 2xx sont journalisées

V. Liste des intégrations tierces courantes

Un site autonome intègre généralement cinq types d’outils tiers : CRM (HubSpot, Salesforce, Zoho), emailing (Mailchimp, ConvertKit, Klaviyo), passerelles de paiement (Stripe, PayPal), outils d’analyse (Google Analytics 4, Hotjar) et support client (Intercom, Zendesk). Chaque type se connecte différemment, mais le principe reste le même : privilégiez le Webhook quand c’est possible (temps réel), et ajoutez une récupération planifiée pour les données critiques (en secours).

Ne vous lancez pas dans le développement d’une intégration sur mesure. Vérifiez d’abord si un plugin existe dans la bibliothèque WordPress : HubSpot a son plugin officiel, Mailchimp aussi, et Stripe dispose de l’extension officielle WooCommerce. Un plugin existant couvre 80 % des besoins ; pour les 20 % restants (le mappage de champs personnalisés, par exemple), complétez avec un Webhook ou du code sur mesure. Développer vous-même la connexion entre deux systèmes demande souvent plus de 20 heures de débogage, alors qu’installer un plugin existant prend une heure. Pour choisir votre plugin CRM, voir Des leads du site au CRM.

Type de système Solution recommandée Mode de connexion Temps estimé
CRM (HubSpot) Plugin officiel + Webhook Synchronisation automatique par le plugin 2 à 4 heures
Emailing (Mailchimp) Plugin officiel Ajout automatique à la liste à l’inscription 1 à 2 heures
Paiement (Stripe) Extension officielle WooCommerce Synchronisation du statut de commande par Webhook 1 à 2 heures
Analyse (GA4) Plugin Site Kit by Google Suivi automatique côté front 30 minutes
Support (Intercom) Plugin de chat officiel Extrait de code côté front 30 minutes
ERP personnalisé Intégration REST développée en interne Récupération planifiée + Webhook Plus de 20 heures

FAQ — Questions fréquentes

Quelle différence entre REST API et Webhook, et lequel choisir ?
Ils vont dans des sens opposés. Avec REST API, c’est vous qui allez chercher les données sur le serveur distant (Pull) : il faut interroger à intervalles réguliers, le délai se compte en minutes, mais les échecs sont visibles. Avec Webhook, c’est le serveur distant qui pousse les données vers vous au moment de l’événement (Push) : c’est du temps réel à la seconde, mais vous pouvez ignorer un échec. Aucun n’est meilleur que l’autre : combinez-les. Le Webhook pour les notifications en temps réel (nouvelle commande, nouveau prospect poussés en quelques secondes), et une récupération REST planifiée toutes les heures pour le rapprochement en secours (rattraper ce que le Webhook a manqué). Ne faites pas reposer vos données critiques sur le seul Webhook.
Faut-il installer un plugin pour utiliser WordPress REST API ?
Non. WordPress intègre nativement REST API depuis la version 4.7, avec le point de terminaison /wp-json/wp/v2/posts. La lecture des contenus publiés est publique ; les écritures (créer un article, modifier une commande) nécessitent une authentification par mot de passe d’application. L’API de WooCommerce se trouve sous /wp-json/wc/v3/ et demande de générer une Consumer Key et un Consumer Secret dans les réglages WooCommerce. Si vous devez étendre l’API avec des points de terminaison personnalisés (pour recevoir un Webhook, par exemple), écrivez-en un avec la fonction register_rest_route() fournie par WordPress : aucun plugin supplémentaire n’est nécessaire.
Où stocker une API Key, et peut-on l’utiliser côté front ?
Ne mettez jamais votre clé API dans le JavaScript côté client. N’importe qui peut l’afficher avec F12 et s’en servir pour appeler votre API à volonté. La bonne méthode : stockez la clé dans une variable d’environnement serveur (wp-config.php ou fichier .env), le front-end n’appelle que votre propre serveur, et c’est le back-end qui ajoute la clé et relaie la requête vers le service tiers. Si le front-end doit appeler directement une API tierce (Stripe.js par exemple), utilisez la Publishable Key fournie par le service (une clé publique, conçue pour le front-end) ; la Secret Key reste toujours côté back-end.
Comment vérifier qu’une requête Webhook reçue est authentique ?
Avec une vérification par signature HMAC. Quand WooCommerce, Stripe, HubSpot ou un autre service envoie un Webhook, il ajoute une signature dans un en-tête HTTP (par exemple X-WC-Webhook-Signature). Côté réception, vous calculez un HMAC-SHA256 sur le corps brut de la requête avec le Secret convenu, puis vous comparez le résultat à la valeur de l’en-tête : si c’est identique, vous traitez ; sinon, vous renvoyez 403. Attention : calculez toujours sur la chaîne du corps brut, jamais sur un JSON désérialisé puis re-sérialisé, sinon le moindre écart d’espace ou de saut de ligne fera échouer la signature.
Que faire si un Webhook échoue ?
Par défaut, WooCommerce réessaie tant que le récepteur renvoie un code autre que 2xx, jusqu’à 5 tentatives avec un intervalle croissant (1 minute, 5 minutes, 15 minutes, 1 heure, 3 heures). Après 5 échecs, il abandonne. De votre côté, deux choses à faire : d’abord, journaliser les erreurs côté réception pour pouvoir enquêter ensuite ; ensuite, ajouter une récupération REST planifiée toutes les heures comme filet de sécurité, pour rattraper les commandes manquées par le Webhook. Ne partez pas du principe qu’un Webhook est fiable à 100 % : une panne serveur temporaire, un certificat SSL expiré ou une instabilité réseau suffisent à perdre des données.
Pour connecter un système tiers, faut-il un plugin existant ou du code sur mesure ?
Dans 80 % des cas, un plugin existant suffit. HubSpot, Mailchimp, Stripe et GA4 ont tous des plugins officiels : vous les installez, vous saisissez la clé API, et c’est terminé en 1 à 4 heures. Les 20 % restants, ce sont les besoins sur mesure (mappage de champs particuliers, enchaînement de plusieurs systèmes, connexion à un ERP interne) qui justifient d’écrire du code. Relier deux systèmes en REST à la main, c’est souvent 20 heures de mise au point au minimum, entre l’authentification, la gestion des erreurs, les tentatives et les journaux. Le critère : si le plugin couvre 80 % de votre mappage de champs, prenez le plugin ; sinon, envisagez le développement sur mesure.

Pour conclure

En intégration API, ce n’est pas la complexité qui compte, c’est la fiabilité. Un seul objectif : ne perdre aucune donnée, garder des états corrects, et pouvoir diagnostiquer en cas de problème. Le Webhook est rapide mais peu fiable, le REST est plus lent mais maîtrisable ; c’est en combinant les deux que l’on obtient une solution de production. Utilisé seul, chacun finira par perdre des données à un moment ou un autre.

Trois étapes pour passer à l’action : pour les intégrations critiques, utilisez le Webhook pour la notification en temps réel et ajoutez la vérification HMAC côté réception ; ajoutez une récupération REST planifiée toutes les heures pour le rapprochement, afin de rattraper automatiquement ce que le Webhook a manqué ; placez toutes les clés API dans des variables d’environnement côté back-end, le front-end n’appelant que l’interface proxy de votre propre serveur.

Une phrase à retenir : un webhook, c’est une notification instantanée ; le REST, c’est un rapprochement régulier. Se fier aux seules notifications sans jamais vérifier, c’est entendre la sonnette sans jamais ouvrir la boîte aux lettres.

Cratère
Cratère Expert Cratère

Officiel de l'organisme · Cratère Crater

Cratère (Crater) est une société de services d'expansion internationale spécialisée dans le développement de sites WordPress autonomes, le référencement Google et la croissance globale GEO, au service des secteurs du matériel intelligent, de l'équipement industriel, du SaaS et des énergies nouvelles.

Capacités produitLivre blanc méthodologiqueRapports sectoriels
965partages
78articles de base de connaissances