Configuration Square
Connectez Square dans Réglages → Square Booking → Square. Utilisez le sandbox avant les réservations réelles.
Où configurer
Tous les identifiants Square se trouvent dans Réglages → Square Booking → Square. Les autres onglets regroupent le reste : Appearance, Booking flow, Payments, Analytics, Webhooks, Diagnostics, Advanced et License.

Mode de connexion
Choisissez l'un des deux :
- Personal Access Token — recommandé pour Square Appointments Plus et Premium. Collez un jeton depuis Square Developer → Applications → Production ou Sandbox dans le champ Access Token.
- OAuth — your own Square application — obligatoire sur le plan gratuit, où les réservations PAT au niveau vendeur sont bloquées. Créez une application sur le tableau de bord développeur Square, collez l'Redirect URL du plugin dans les réglages OAuth de l'app (exactement telle qu'affichée), enregistrez l'Application ID et l'Application Secret, puis cliquez Connect to Square.
Changer sandbox/production en OAuth impose de reconnecter. En OAuth, le téléphone client est obligatoire dans le widget (réservations buyer-level Square).

OAuth sandbox
Activez le mode sandbox, basculez le tableau de bord développeur Square en Sandbox, ouvrez un compte vendeur de test, laissez cet onglet ouvert, puis cliquez Connect to Square. Sans compte vendeur de test ouvert, Square affiche une page blanche.
Location ID
- Dans le tableau de bord développeur Square, ouvrez la même application.
- Allez dans Locations (activez le bascule sandbox pour les tests).
- Copiez l'ID de l'emplacement qui propose Appointments.
- Collez-le dans Location ID.
Seuls les services, le personnel et les disponibilités de cet emplacement apparaissent dans le widget.
Plusieurs emplacements
Le tableau Locations liste les emplacements actifs de votre compte Square. Cochez Enabled pour chaque emplacement réservable : à partir de deux, le widget commence par le choix du lieu, puis les services, l'équipe et les créneaux suivent ce lieu. Un emplacement Hidden n'est pas listé mais reste réservable avec [square_booking location_id="…"] ou un lien. L'emplacement par défaut est toujours le Location ID ci-dessus. Cliquez Refresh from Square après avoir ajouté un emplacement dans Square.

Mode sandbox
Le sandbox est activé par défaut. Décochez Enable sandbox (disable in production) pour la production. Ne mélangez jamais un jeton sandbox avec un Location ID production, ni l'inverse.
Tester la connexion
En bas de l'onglet Square, cliquez Test Square Connection. Un avis de succès confirme que le jeton, l'emplacement et l'API Appointments sont joignables.

Erreurs courantes
- 401 Unauthorized — jeton expiré ou mal copié ; régénérez-le dans le tableau de bord développeur Square.
- Location not found — le Location ID ne correspond pas à l'environnement du jeton (sandbox vs production).
- Appointments non activé — activez Appointments pour cet emplacement dans votre compte Square.
- Plan gratuit avec PAT — passez en OAuth. L'onglet Diagnostics affiche alors
support_seller_level_writesà false.
Paiements
Optionnel. Dans l'onglet Payments :
- Disabled — book without a card (défaut).
- Card on file — Square Web Payments enregistre la carte pour le rendez-vous. Rien n'est débité aujourd'hui.
- Pay in full now — débite le prix du service à la création de la réservation.
Le formulaire carte exige un Square Application ID (Square Developer → Applications → Application ID). Les ID sandbox et production sont différents. En OAuth, reconnectez après avoir activé les paiements pour que Square accorde PAYMENTS_WRITE.
Le champ Cancellation policy s'affiche au checkout avec une case obligatoire. Laissez-le vide pour utiliser le texte des réglages Square Appointments lorsqu'il est disponible.

Options d'affichage
Dans l'onglet Booking flow (Widget Content) : descriptions, images, nom du membre de l'équipe dans le récapitulatif. Décochez Show the All services link pour masquer le fil d'Ariane vers la liste des services ; le bouton Back y ramène toujours.

Questions d'accueil
Laissez Custom Intake Questions vide pour charger le formulaire Square (Appointments → Settings → Intake Form). Un JSON dans ce champ a priorité. Types : TEXT, DROPDOWN, CHECKBOX, TEXT_CONDITIONAL. Excluded Intake Fields masque des clés Square, une par ligne.

Voir Dépannage en cas d'échec répété.