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.

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 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.

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.

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é.

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.

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.

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.

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).

- 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.