Lorsqu’un patient répond à la bannière de cookies sur votre site web puis clique vers votre page de réservation, la même question lui est posée une seconde fois. Activez cette option et votre site web transmet la réponse, afin que la page de réservation l’applique au lieu de la demander à nouveau.
Qui fait quoi : vous décidez et activez l’option, votre webmaster ajoute quelques lignes de code (section 2), et rien ne change pour les patients qui accèdent à la page de réservation d’une autre manière.
Vous avez besoin de | Pourquoi |
Un conteneur Google Tag Manager dans Crossuite | Sans celui-ci, la page de réservation n’a pas de bannière de cookies et il n’y a rien à réutiliser |
Les catégories de cookies choisies | Seules les catégories que vous proposez sur la page de réservation peuvent être réutilisées |
Accès à votre propre site web | Votre webmaster ajoute l’extrait de code à votre bannière de cookies |
Le texte de votre bannière adapté | Section 3 — c’est ce qui rend la réutilisation de la réponse juridiquement valable |
Cela fonctionne uniquement pour les patients qui cliquent sur un lien de votre site web. Depuis un e-mail, un code QR, un résultat de recherche ou un favori, il n’y a rien à transmettre ; ces patients conservent donc leur réponse précédente ou voient notre bannière de cookies comme d’habitude.
Une seule condition doit être remplie :
Au moment où le navigateur ouvre la page de réservation, l’URL doit déjà contenir les paramètres.
Nous les lisons dans notre propre URL pendant le chargement de la page. Il n’y a ensuite plus de callback à appeler, pas de postMessage, pas d’API — une décision qui arrive plus tard ne peut plus être appliquée, car la bannière de cookies a déjà décidé si elle devait s’afficher.
https://booking.crossuite.app/<votre-id-de-lien>?cc_v=1&cc_ts=1789123044&cc_analytics=1&cc_marketing=0La manière dont cette URL est générée dépend entièrement de vous. La section 2.4 présente les méthodes habituelles avec leurs avantages et inconvénients ; choisissez celle qui convient à votre site.
Paramètre | Obligatoire | Valeur | Signification |
| oui |
| Version du format. Toute autre valeur est ignorée |
| oui | secondes Unix | Moment où le patient a fait son choix. Au-delà de 182 jours, la valeur est ignorée |
| non | 64 caractères max. | Votre identifiant de consentement, afin de pouvoir faire correspondre votre journal et le nôtre |
| non |
| Statistiques |
| non |
| Publicité |
| non |
| Fonctionnalité et personnalisation |
Deux points doivent être correctement configurés, quelle que soit la méthode choisie pour construire l’URL :
Envoyez la réponse actuelle, et non celle du premier consentement. cc_ts correspond au moment où le patient a fait son choix ; s’il change d’avis, une nouvelle valeur doit donc être transmise lors du clic suivant.
Omettez une catégorie si votre bannière ne l’a jamais demandée. Un 0 correspond à un refus ; un paramètre absent signifie « non demandé » et permet à notre bannière de poser la question.
Anything other than 1 ou 0 dans une catégorie est traitée comme si le paramètre était absent. Un horodatage situé plus de cinq minutes dans le futur est refusé. Un identifiant de plus de 64 caractères est supprimé ; le reste du lien reste valable.
Le lien indique pour une catégorie | Ce qui se passe sur la page de réservation |
| Autorisé — sauf si le patient l’a refusé dans notre propre bannière, voir ci-dessous |
| Refusé, toujours, quelle que soit la valeur enregistrée auparavant |
rien | La réponse donnée par le patient sur la page de réservation reste d’application ; notre bannière pose la question s’il n’y a aucune réponse |
Trois règles déterminent le reste :
Un 0 s’applique toujours. Quelle que soit la valeur enregistrée et son origine, un refus transmis dans le lien est appliqué — même s’il remplace un consentement donné par le patient dans notre propre bannière. Le retrait du consentement n’est jamais bloqué.
Un 1 s’applique, sauf si le patient a refusé cette catégorie dans notre propre bannière. Ce refus est la seule chose qu’un lien ne peut pas annuler ; seul le patient peut le modifier via « Préférences de cookies » en bas de page. Un refus provenant de votre site web n’est pas définitif — votre site web peut ensuite autoriser à nouveau la catégorie.
Seules les catégories que vous proposez sur la page de réservation sont appliquées. Un cc_marketing pour un cabinet qui ne propose pas de publicité est ignoré ; le reste du lien reste valable.
Lorsque toutes les catégories proposées sur la page de réservation ont reçu une réponse, aucune bannière de cookies n’apparaît. S’il reste une catégorie sans réponse, la bannière apparaît et pose toutes les questions.
Nous supprimons les paramètres cc_ de l’adresse dès que nous les avons lus, afin que le patient voie une URL de réservation propre.
Approche | Adapté lorsque | Attention |
Modifier le lien au moment du clic | Tout site, y compris les liens ajoutés dynamiquement, sans backend nécessaire | Fonctionne uniquement pour les clics que vous interceptez ; le |
Modifier lorsque le consentement change | Quelques liens de réservation fixes | Ne couvre pas les liens générés ultérieurement ; les paramètres se trouvent dans le code source de la page |
Ajouter les paramètres côté serveur | Vos pages sont générées à chaque requête et peuvent lire votre propre cookie de consentement | Devient obsolète si le patient modifie son consentement sans recharger la page |
Votre propre endpoint de redirection | Vous souhaitez couvrir tous les points d’entrée, y compris le clic du milieu et les liens copiés | Une route supplémentaire à maintenir |
Modifier au clic. Le choix habituel. Un seul listener délégué, aucune configuration par lien :
document.addEventListener(
'click',
(e) => {
const link = e.target.closest('a[href*="booking.crossuite.app"]');
if (!link || !window.__cs) return;
const url = new URL(link.href);
url.searchParams.set('cc_v', '1');
url.searchParams.set('cc_ts', String(window.__cs.ts));
if (window.__cs.id) url.searchParams.set('cc_id', window.__cs.id);
for (const category of ['analytics', 'marketing', 'functionality']) {
if (window.__cs[category] !== undefined) {
url.searchParams.set(`cc_${category}`, String(window.__cs[category]));
}
}
link.href = url.toString();
},
true, // capture : s’exécute avant qu’un routeur ou un autre script puisse arrêter l’événement
);window.__cs est simplement un emplacement où conserver la réponse actuelle — renseignez-le depuis le callback de votre plateforme de consentement chaque fois que le patient fait un choix. Vous pouvez utiliser un autre type de stockage.
Notez que click ne se déclenche que pour le bouton principal de la souris. Si vous souhaitez également couvrir le clic du milieu et « ouvrir dans un nouvel onglet », enregistrez le même handler pour auxclick.
Modifier lorsque le consentement change. Dans votre callback de consentement, parcourez les liens une seule fois :
document.querySelectorAll('a[href*="booking.crossuite.app"]').forEach(rewrite);Endpoint de redirection. Faites pointer vos liens de réservation vers une route qui vous appartient, lisez-y votre cookie de consentement puis redirigez vers l’URL de réservation en y ajoutant les paramètres. C’est la seule approche qui couvre également le clic du milieu, les liens ouverts dans un nouvel onglet et les liens copiés depuis la page.
L’hôte de réservation est booking.crossuite.app. Si vous le comparez comme du texte brut, comme dans l’exemple ci-dessus, toute autre écriture ne correspondra à rien et la fonctionnalité ne fera tout simplement rien — comparez-la avec un véritable lien de réservation provenant de vos paramètres Crossuite avant la mise en ligne.
C’est cette partie qui rend la réutilisation de la réponse juridiquement valable : votre bannière doit informer le patient que son choix s’applique également à la page de réservation.
Texte à ajouter à votre bannière ou à votre politique de cookies :
La prise de rendez-vous en ligne s’effectue via
booking.crossuite.app, exploité pour notre compte par Crossuite BV. Le choix que vous effectuez ici est transmis à cette page : les cookies de statistiques et de publicité que vous autorisez y sont placés dans notre propre conteneur Google Tag Manager. La page de réservation place également quelques cookies strictement nécessaires pour votre réservation, votre langue et votre connexion. Vous pouvez modifier votre choix à tout moment via « Préférences de cookies » en bas de la page de réservation. Consultez la page Bookings.
Lignes à ajouter à votre tableau de cookies :
Finalité | Placé par | Type | Durée de conservation |
choix des cookies | Crossuite (page de réservation) | strictement nécessaire | 6 mois (182 jours) |
progression de la réservation, réservation | Crossuite (page de réservation) | strictement nécessaire | session / jusqu’à l’expiration de la réservation |
langue | Crossuite (page de réservation) | strictement nécessaire | session |
connexion, uniquement si le patient se connecte à Held | Crossuite (page de réservation) | strictement nécessaire | jusqu’à sa déconnexion |
| Google, via la page de réservation | strictement nécessaire | 6 mois |
vos cookies GA4 / Ads | votre propre conteneur GTM | statistiques / publicité | comme sur votre site |
reCAPTCHA protège le formulaire de réservation contre le spam et ne peut pas être désactivé. Il doit donc figurer dans votre tableau, même si ni vous ni nous ne le plaçons directement.
La dernière ligne reste volontairement générale : ces cookies proviennent de votre conteneur, leurs noms et leurs durées de conservation figurent donc déjà dans votre propre tableau de cookies.
Paramètres → Webbooking → Analytics → Configurer → Consentement depuis votre propre site web
L’option est désactivée par défaut. Lorsque vous l’activez, deux confirmations vous sont demandées :
Votre bannière couvre la page de réservation — elle mentionne Crossuite et la page de réservation comme une destination distincte, répertorie les cookies avec leur finalité et leur durée de conservation, et renvoie vers notre politique de cookies.
Un retrait du consentement sur votre site web ne nous parvient que lorsque le patient clique à nouveau vers la page de réservation. Jusque-là, et pendant 182 jours au maximum, sa réponse précédente reste valable sur la page de réservation. Il ne s’agit pas d’un paramètre que nous pouvons modifier : sa réponse est enregistrée dans un cookie sur votre domaine et le navigateur ne permet pas à notre code de le lire. Le patient peut toujours retirer directement son consentement via « Préférences de cookies » en bas de la page de réservation.
Vous n’avez pas besoin de l’extrait de code pour tester — ajoutez manuellement les paramètres à votre lien de réservation.
cc_ts est un horodatage Unix en secondes, pas une date. Il s’agit d’un simple nombre, qui comporte aujourd’hui dix chiffres :
| Correspond à | Résultat |
| 14 septembre 2026, 07:00 UTC | accepté |
| 16 mars 2026 — exactement 182 jours plus tôt | la valeur la plus ancienne encore acceptée |
| une seconde plus tôt | trop ancien, le lien est ignoré |
| millisecondes, pas secondes | très loin dans le futur, ignoré |
| une date sous forme de texte | pas un nombre, ignoré |
Pour obtenir une valeur actuelle, exécutez Math.floor(Date.now()/1000) dans la console de votre navigateur. Les nombres ci-dessus ont été générés le 14 septembre 2026 — utilisez une valeur récente plutôt que de les copier, sinon votre test commencera à échouer à partir de mars 2027.
Supprimez le cc_cookie_* avant chaque test (DevTools → Application → Cookies), sinon vous testez la réponse déjà enregistrée.
Voici à quoi ressemble un lien de test complet :
https://booking.crossuite.app/<votre-id-de-lien>?cc_v=1&cc_ts=1789369239&cc_id=test-1&cc_analytics=1&cc_marketing=1&cc_functionality=1Lien | Résultat attendu |
| Aucune bannière de cookies, tout est autorisé, aucun |
| Aucune bannière de cookies, tout est refusé |
| La bannière de cookies apparaît — deux catégories sont sans réponse |
| La bannière de cookies apparaît — aucun |
Refusez dans la bannière de la page de réservation, puis ouvrez le premier lien | Aucune bannière, toujours refusé — le choix effectué ici prévaut |
En mode aperçu de Google Tag Manager, la page de réservation envoie un événement crossuite_consent_update avec crossuite_consent_analytics, crossuite_consent_marketing et crossuite_consent_functionality.
Si rien ne se passe
Vérifiez les points suivants dans cet ordre :
Le paramètre est-il activé dans Crossuite ?
Le sélecteur de l’extrait de code correspond-il exactement, caractère par caractère, à votre véritable lien de réservation ?
Correspond à cc_ts est-il présent et date-t-il de moins de 182 jours ?
La catégorie que vous envoyez est-elle bien proposée sur la page de réservation ?
Avez-vous supprimé le cc_cookie_* ?
L’enregistrement de vos paramètres Analytics redemande le consentement à chaque patient. L’ajout d’une catégorie, la modification de la politique de confidentialité ou la désactivation de cette fonctionnalité augmente à chaque fois la version de la politique de consentement, ce qui invalide toutes les réponses enregistrées, y compris celles qui ont été réutilisées. Attendez-vous donc à ce que la bannière réapparaisse pour tout le monde après un tel enregistrement — il s’agit d’un changement de politique, pas d’un dysfonctionnement du transfert.
Le retrait du consentement reste possible via « Préférences de cookies » en bas de la page de réservation. Une modification effectuée à cet endroit ne concerne que la page de réservation ; rien n’est retransmis à votre site web.
Chaque réponse réutilisée est enregistrée avec votre identifiant de consentement et l’horodatage que vous avez envoyé, afin que vos données et les nôtres puissent être comparées ligne par ligne.
booking.crossuite.app est un domaine différent de celui de votre site web. Ajoutez-le à la liste cross-domain de votre configuration GA4 et Google Ads ; sinon, le gclid est perdu lors du passage d’un domaine à l’autre et une réservation provenant d’une publicité ne lui est pas attribuée.