Écouter les événements du widget de réservation sur votre site

Le widget indique à votre page quand il s’ouvre, sur quel écran se trouve le client, ce qu’il choisit et quand il réserve. Utilisez ces événements window pour construire un entonnoir, afficher un message ou les envoyer à n’importe quel outil d’analytics.

7 min de lecture Marketing, suivi et intégrations Mis à jour le 12.09.2026

Une fois le widget de réservation installé sur votre site, il indique à la page ce que le client y fait : l’ouverture et la fermeture du panneau, chaque écran de la réservation, chaque réponse et la réservation elle-même. Chacun de ces éléments est un événement navigateur sur window : votre développeur — ou la personne qui gère votre Google Tag Manager — peut ainsi construire un entonnoir de réservation, modifier la page quand quelqu’un réserve ou envoyer les étapes à n’importe quel outil d’analytics.

Les événements

ÉvénementQuand il se déclencheCe qu’ajoute event.detail
taptime:openLe panneau de réservation flottant s’ouvre. Le formulaire intégré est toujours ouvert : il ne l’envoie donc jamais.—
taptime:closeLe panneau flottant se ferme, quelle que soit la façon dont le client le ferme.—
taptime:stepUn écran de la réservation s’affiche.step, step_index, step_count
taptime:choiceLe client répond à une question sur un écran.step, field, value, label
taptime:bookingUne réservation est effectuée.confirmed, booking_id, event_id, party_size, service_name, value, currency
taptime:eventChacun des événements ci-dessus, une seconde fois.event — le nom de celui qu’il répète : open, close, step, choice ou booking

Chaque événement transporte ses données dans event.detail. Deux champs sont toujours présents : company — la valeur de data-company dans votre code d’intégration — et booking_type : reservation pour les tables, appointment pour les prestations.

Écouter un événement

Ajoutez un script sur la même page que le widget, avec window.addEventListener et le nom de l’événement. Il peut se placer avant ou après le code d’intégration. Celui-ci masque une bannière « Réservez maintenant » dès qu’une réservation est confirmée :

Masquer une bannière une fois que le client a réservé
<script>
  window.addEventListener('taptime:booking', function (event) {
    if (event.detail.confirmed) {
      document.getElementById('book-banner').hidden = true;
    }
  });
</script>

confirmed vaut true quand la réservation est confirmée immédiatement, et false quand il s’agit d’une demande que votre équipe doit encore accepter. value, avec sa devise currency, est le prix de la prestation pour un rendez-vous, ou la valeur de réservation définie pour le suivi des conversions pour une table — et null s’il n’y a ni l’un ni l’autre.

Écrans et réponses

taptime:step nomme l’écran dans detail.step. Les écrans que voit le client dépendent de ce qu’il réserve et de vos réglages :

  • location — le client choisit l’un de vos établissements. Uniquement si vous en avez plusieurs et que le widget n’est pas lié à un seul.
  • party — le nombre de personnes. Tables uniquement.
  • service et specialist — quoi réserver et avec qui. Rendez-vous uniquement.
  • when — le jour et l’heure.
  • seating, zone et table — intérieur ou terrasse, une zone de la salle, une table précise. Tables uniquement, et seulement les choix que vous avez activés.
  • details — le nom et les coordonnées du client.
  • done — l’écran de confirmation, après la réservation.

step_index et step_count sont les numéros que le client voit en haut du formulaire, par exemple « 2 sur 5 ». La liste des établissements et l’écran de confirmation ne sont pas numérotés : les deux valent alors null. Comme le nombre d’écrans dépend de vos réglages, basez-vous sur le nom de l’étape plutôt que sur son numéro.

taptime:choice nomme la réponse dans detail.field : branchId, partySize, date, time, seating, zoneId, tableId, serviceId ou specialistId. detail.value est ce qui a été choisi — un nombre, un identifiant, une date au format 2026-09-18 ou une heure au format 2026-09-18 19:30 — et detail.label est ce que le client a lu sur le bouton, par exemple le nom d’une prestation ou d’un établissement. Choisir « peu importe » envoie la valeur null.

Envoyer chaque événement à Google Tag Manager

Un seul écouteur sur taptime:event les capte tous. Le script ci-dessous pousse chacun d’eux dans le dataLayer sous la forme taptime_open, taptime_step, taptime_choice, etc., avec les champs de detail à côté. Collez-le dans une balise HTML personnalisée déclenchée sur toutes les pages, ou directement dans votre site. Créez ensuite déclencheurs, variables et entonnoir dans Tag Manager sans plus toucher au site.

Tous les événements du widget dans le dataLayer
<script>
  window.dataLayer = window.dataLayer || [];
  window.addEventListener('taptime:event', function (event) {
    window.dataLayer.push(Object.assign({ event: 'taptime_' + event.detail.event }, event.detail));
  });
</script>

Autres exemples

Envoyez chaque écran à Google Analytics 4 comme un événement distinct, pour voir dans une exploration de l’entonnoir où les clients s’arrêtent. Il faut pour cela que GA4 soit installé sur votre page avec gtag.js :

Un entonnoir de réservation dans Google Analytics 4
<script>
  window.addEventListener('taptime:step', function (event) {
    if (typeof gtag !== 'function') return;
    gtag('event', 'booking_step', {
      step: event.detail.step,
      step_index: event.detail.step_index,
      booking_type: event.detail.booking_type
    });
  });
</script>

Proposez un autre moyen de réserver quand un client ferme le panneau sans réserver — ici, en affichant un bloc « Appelez-nous » masqué :

Afficher un numéro de téléphone quand le panneau se ferme sans réservation
<script>
  var booked = false;
  window.addEventListener('taptime:booking', function () {
    booked = true;
  });
  window.addEventListener('taptime:close', function () {
    if (!booked) {
      document.getElementById('call-us').hidden = false;
    }
  });
</script>

Vérifier que tout fonctionne

  1. 1
    Ouvrez votre site publié

    Beaucoup d’outils de création de site n’exécutent pas le code personnalisé dans leur éditeur : utilisez le site en ligne.

  2. 2
    Ouvrez la console du navigateur

    Faites un clic droit sur la page, choisissez Inspecter, puis ouvrez l’onglet Console.

  3. 3
    Collez la ligne ci-dessous et appuyez sur Entrée

    Elle affiche chaque événement du widget au moment où il se produit, jusqu’au prochain rechargement de la page.

  4. 4
    Faites une réservation de test

    Chaque écran et chaque réponse apparaissent dans la console, puis la réservation. Annulez ensuite la réservation de test depuis votre tableau.

window.addEventListener('taptime:event', function (event) { console.log(event.detail.event, event.detail); });

Questions fréquentes

Dois-je activer les événements ?

Non. Ils se déclenchent dès que le widget est sur la page. L’interrupteur « Remonter les réservations aux balises de mon site » ne contrôle que l’envoi automatique dans le dataLayer et le GA4 et le Meta Pixel de votre page.

Puis-je lire le nom, le téléphone ou l’e-mail du client dans un événement ?

Non. Les événements transportent des identifiants, des heures, le nombre de personnes, la prestation et la valeur de la réservation — jamais l’identité de la personne qui réserve. Pour les coordonnées des clients, utilisez le panneau, un webhook ou l’API REST.

Mon écouteur ne s’exécute jamais.

Vérifiez que le script est sur la même page que le widget et que le nom de l’événement est écrit exactement, deux-points compris : taptime:step. Dans Tag Manager, assurez-vous que la balise HTML personnalisée est publiée et se déclenche sur toutes les pages. Ouvrez la console et essayez la ligne de test ci-dessus pour voir si des événements arrivent.

Mon propre script peut-il ouvrir ou fermer le widget ?

Oui. TapTime.open() ouvre le panneau flottant, ou fait défiler jusqu’au formulaire intégré, et TapTime.close() le ferme. Avec deux entreprises sur une même page, TapTime.open('your-company') ouvre le widget de cette entreprise.

Cet article vous a-t-il été utile ?
Cela n’a pas répondu à votre question ?

Écrivez-nous en indiquant la page sur laquelle vous étiez. Une vraie personne lit chaque message et répond dans la langue dans laquelle vous avez écrit.

Écrivez-nous