Suivi conversions

Attribuez chaque rendez-vous confirmé au clic publicitaire qui a démarré le parcours. C'est la raison d'être de ce plugin.

Quelle édition vous faut-il

Le suivi des conversions est inclus dans l'édition Tracking. Avec l'édition Embed, le widget fonctionne exactement pareil, mais aucune attribution n'est capturée, aucun événement n'est envoyé, et les onglets Analytics, Webhooks et Advanced affichent une invitation à passer à Tracking. Votre édition apparaît dans Réglages → Square Booking → License.

Réglage simple ou avancé

Ouvrez Réglages → Square Booking → Analytics et choisissez comment mesurer les réservations :

  • Simple — Native analytics. Pas besoin de Google Tag Manager : collez votre ID de mesure GA4, votre conversion Google Ads et votre ID Meta Pixel, le plugin envoie lui-même les événements.
  • Avancé — GTM / dataLayer, Server-side GTM ou Advanced / custom. Le plugin pousse chaque étape dans le dataLayer et, s'ils sont configurés, vers votre conteneur server-side et votre webhook ; vos balises décident où vont les données.

Configurez chaque destination à un seul endroit. Si GA4 ou Meta est réglé à la fois dans le plugin et dans GTM, chaque réservation est comptée deux fois ; l'onglet affiche un avertissement quand il détecte ce doublon. Après une mise à jour, le mode reste sur GTM / dataLayer et les nouvelles destinations restent désactivées : une installation existante continue de fonctionner à l'identique.

Onglet Analytics : simple (analytics natives) ou avancé (GTM, GTM server-side, personnalisé).
Onglet Analytics : simple (analytics natives) ou avancé (GTM, GTM server-side, personnalisé).

Ce que le plugin mesure

Le widget envoie un événement par étape du tunnel de réservation : view_booking, select_location, select_service, select_staff, select_datetime, begin_checkout, add_payment_info, purchase. Revenir en arrière ne répète jamais un événement, et purchase n'est envoyé qu'une fois par réservation Square. Les événements du tunnel contiennent le service, le prix, le lieu, le membre de l'équipe et le créneau, jamais le nom, l'e-mail ou le téléphone du client.

Prix, services et membres de l'équipe sont relus depuis Square par le serveur : une valeur modifiée dans le navigateur ne change pas ce qui est remonté. Chaque achat a un seul event_id, partagé par le navigateur et le serveur, pour que Google et Meta ne le comptent qu'une fois.

Le premier et le dernier clic publicitaire sont conservés dans un cookie first-party (gclid, gbraid, wbraid, fbclid, msclkid, ttclid, utm_*, page d'arrivée et site référent). Ils sont rattachés à la réservation même si le client a visité d'autres pages avant.

Google Analytics 4

Saisissez l'ID de mesure (Admin → Flux de données). Browser envoie les événements du tunnel avec gtag ; le plugin ne charge gtag que s'il n'est pas déjà sur la page, et n'envoie jamais deux fois les pages vues. Server backup envoie aussi l'achat depuis le serveur avec un secret d'API Measurement Protocol : il est enregistré même si le navigateur bloque Google. GA4 garde un seul achat par ID de réservation.

Google Analytics 4 : événements navigateur et envoi de secours par le serveur.
Google Analytics 4 : événements navigateur et envoi de secours par le serveur.

Google Ads

Saisissez l'ID de conversion (AW-…) et le libellé de conversion de votre action « réservation ». L'ID de réservation Square est envoyé comme ID de transaction : Google Ads compte chaque réservation une seule fois. Enhanced Conversions ajoute l'e-mail, le téléphone et le nom du client pour le rapprochement, uniquement avec le consentement ad_user_data. La valeur est le prix du service Square, un montant fixe, ou aucune.

Conversion Google Ads avec les conversions améliorées.
Conversion Google Ads avec les conversions améliorées.

Meta Pixel et API Conversions

Saisissez l'ID du Pixel (jeu de données). Browser Pixel envoie ViewContent, InitiateCheckout, AddPaymentInfo et Schedule (ou Purchase). Conversions API envoie la même réservation depuis le serveur avec le même ID d'événement, et Meta dédoublonne les deux. Le jeton d'accès est stocké chiffré et n'apparaît jamais dans la page ni dans les réglages. Utilisez un code d'événement de test (Gestionnaire d'événements → Tester les événements) pendant vos vérifications, puis retirez-le.

Meta Pixel et API Conversions, dédoublonnés par un même ID d'événement.
Meta Pixel et API Conversions, dédoublonnés par un même ID d'événement.

Google Tag Manager

En mode GTM / dataLayer, créez des déclencheurs « Événement personnalisé » sur les événements du tunnel et déclenchez vos balises GA4, Google Ads ou Meta. Une réservation confirmée pousse purchase avec les données e-commerce GA4 :

dataLayer.push({
  event: "purchase",
  event_id: "28eaec0e-c209-4462-bb95-07f81625dac7",
  booking_id: "…",
  service_name: "Haircut & Style",
  value: 55,
  currency: "USD",
  location_name: "…",
  staff_name: "…",
  appointment_start: "2026-09-24T09:00:00-04:00",
  booking_source: "inline",
  ecommerce: { transaction_id: "…", value: 55, currency: "USD", items: [ … ] }
});

Il est suivi de sqb_booking_confirmed, avec les mêmes champs que dans les versions précédentes (dont user_data pour les conversions améliorées) : les déclencheurs existants continuent de fonctionner.

GTM server-side : renseignez l'URL du conteneur (sans /g/collect) pour envoyer aussi la réservation de serveur à serveur, sous le Booking event name. Ce chemin résiste aux bloqueurs de publicité.

GTM et GTM server-side.
GTM et GTM server-side.

Webhook

Dans l'onglet Webhooks, l'URL reçoit un POST JSON après chaque réservation confirmée par Square : la réservation Square, le client et, depuis la version 1.4, les paramètres standard, l'attribution (premier et dernier clic) et l'état du consentement. Les champs existants gardent leur nom. Un secret de signature ajoute un en-tête X-Sqb-Signature (HMAC-SHA256 du corps) que votre serveur peut vérifier. Un point d'arrivée momentanément indisponible est réessayé automatiquement. Branchez-le sur Make, Zapier, n8n ou votre CRM.

Onglet Webhooks : URL et secret de signature.
Onglet Webhooks : URL et secret de signature.

Consentement

En bas de l'onglet Analytics, choisissez : aucune gestion du consentement (par défaut, comme les versions précédentes), Google Consent Mode v2, ou une bannière de cookies : Complianz, CookieYes, Usercentrics, ou la vôtre via window.SqbConsentState. Sans consentement, les destinations d'analyse et de publicité ne reçoivent rien et aucun cookie d'attribution n'est déposé. Les réservations fonctionnent toujours.

Consentement : aucun, Google Consent Mode v2 ou bannière de cookies.
Consentement : aucun, Google Consent Mode v2 ou bannière de cookies.

Onglet Advanced

Désactivez les événements du tunnel pour ne garder que purchase et sqb_booking_confirmed, ou ajoutez un préfixe (par exemple sqb_) si votre conteneur GTM utilise déjà le nom purchase pour un autre outil. La section Attribution règle la durée du cookie et charge un petit script qui garde l'attribution sur les pages en cache.

Onglet Advanced : événements du tunnel et préfixe.
Onglet Advanced : événements du tunnel et préfixe.

Tests

Réglages → Square Booking → Diagnostics affiche l'état de chaque destination, le dernier événement et les 50 derniers envois du serveur avec leur résultat ; données personnelles et jetons sont masqués. Les boutons de test envoient une réservation fictive à votre webhook, au GTM server-side, à GA4 (point de validation) ou à Meta (code d'événement de test requis).

Diagnostics : état de chaque destination, boutons de test et derniers envois du serveur.
Diagnostics : état de chaque destination, boutons de test et derniers envois du serveur.
  • Faites une réservation avec le mode sandbox activé.
  • Suivez les événements du tunnel dans l'aperçu GTM ou GA4 DebugView.
  • Dans le Gestionnaire d'événements Meta → Tester les événements, les événements navigateur et serveur apparaissent dédoublonnés.
  • Vérifiez le contenu du webhook dans l'historique de votre automatisation.

Voir Dépannage si les événements ne partent pas.