[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"help-article-\u002Fhelp\u002Fen\u002Fonline-booking\u002Fbooking-analytics":3,"help-siblings-en-online-booking":375},{"id":4,"title":5,"body":6,"category":364,"description":365,"draft":366,"extension":367,"meta":368,"navigation":370,"order":244,"path":371,"seo":372,"stem":373,"__hash__":374},"help_en\u002Fhelp\u002Fen\u002Fonline-booking\u002Fbooking-analytics.md","Booking analytics with Google Analytics and GTM",{"type":7,"value":8,"toc":354},"minimark",[9,13,22,27,89,92,96,114,121,125,151,155,158,251,258,265,269,276,279,283,292,296,340,343,347,350],[10,11,5],"h1",{"id":12},"booking-analytics-with-google-analytics-and-gtm",[14,15,16,17,21],"p",{},"Open ",[18,19,20],"strong",{},"Marketing → Booking analytics"," to send a privacy-safe booking funnel to your Google Analytics property. You can measure every way clients reach booking; select all the options you use.",[23,24,26],"h2",{"id":25},"choose-your-booking-paths","Choose your booking paths",[28,29,30,46],"table",{},[31,32,33],"thead",{},[34,35,36,40,43],"tr",{},[37,38,39],"th",{},"Path",[37,41,42],{},"What the client does",[37,44,45],{},"Connection",[47,48,49,63,76],"tbody",{},[34,50,51,57,60],{},[52,53,54],"td",{},[18,55,56],{},"Widget on your website",[52,58,59],{},"Books without leaving your website",[52,61,62],{},"Events go to the GTM already installed on your website",[34,64,65,70,73],{},[52,66,67],{},[18,68,69],{},"From your website to booking",[52,71,72],{},"Follows a link to the Tervita booking page",[52,74,75],{},"GA4 measures the page and cross-domain setup keeps the Google session",[34,77,78,83,86],{},[52,79,80],{},[18,81,82],{},"Direct booking page link",[52,84,85],{},"Opens the Tervita link from social media, maps, messages or ads",[52,87,88],{},"GA4 measures the Tervita page; no website is required",[14,90,91],{},"Any combination works. For example, you can use the widget on one page, link to the full booking page elsewhere, and share the same booking page directly in social profiles.",[23,93,95],{"id":94},"what-you-need","What you need",[97,98,99,103,111],"ul",{},[100,101,102],"li",{},"For a website widget: GTM installed on your website and a consent manager that can grant analytics consent.",[100,104,105,106,110],{},"For the Tervita booking page: a dedicated GA4 Web Stream and its Measurement ID beginning with ",[107,108,109],"code",{},"G-",".",[100,112,113],{},"An HTTPS privacy or cookie policy link that covers Google Analytics. It may be hosted on any HTTPS page you control; a clinic website is not required.",[14,115,116,117,120],{},"Tervita never asks for a ",[107,118,119],{},"GTM-"," container ID and never runs your GTM container on the Tervita domain.",[23,122,124],{"id":123},"configure-tervita","Configure Tervita",[126,127,128,132,135,142,148],"ol",{},[100,129,16,130,110],{},[18,131,20],{},[100,133,134],{},"Select every booking path you use.",[100,136,137,138,141],{},"If you selected the widget or a website-to-booking transition, enter each website origin in full, for example ",[107,139,140],{},"https:\u002F\u002Fexample.com",". Put multiple sites on separate lines.",[100,143,144,145,147],{},"If you selected either booking-page option, enter the ",[107,146,109],{}," Measurement ID and the privacy or cookie policy link.",[100,149,150],{},"Save the settings, confirm the privacy checks, then activate analytics.",[23,152,154],{"id":153},"set-up-the-website-widget-in-gtm","Set up the website widget in GTM",[14,156,157],{},"Keep GTM and the consent manager on your website. Use the booking embed with analytics events enabled, and after the visitor's consent decision call the versioned Tervita consent API from the top-level website:",[159,160,165],"pre",{"className":161,"code":162,"language":163,"meta":164,"style":164},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","TervitaBooking.setConsent({\n  clinic: '\u003Cyour-booking-address>',\n  analytics: true,\n  noticeVersion: 'cmp-v1'\n})\n","js","",[107,166,167,189,212,226,242],{"__ignoreMap":164},[168,169,172,176,179,183,186],"span",{"class":170,"line":171},"line",1,[168,173,175],{"class":174},"sTEyZ","TervitaBooking",[168,177,110],{"class":178},"sMK4o",[168,180,182],{"class":181},"s2Zo4","setConsent",[168,184,185],{"class":174},"(",[168,187,188],{"class":178},"{\n",[168,190,192,196,199,202,206,209],{"class":170,"line":191},2,[168,193,195],{"class":194},"swJcz","  clinic",[168,197,198],{"class":178},":",[168,200,201],{"class":178}," '",[168,203,205],{"class":204},"sfazB","\u003Cyour-booking-address>",[168,207,208],{"class":178},"'",[168,210,211],{"class":178},",\n",[168,213,215,218,220,224],{"class":170,"line":214},3,[168,216,217],{"class":194},"  analytics",[168,219,198],{"class":178},[168,221,223],{"class":222},"sfNiH"," true",[168,225,211],{"class":178},[168,227,229,232,234,236,239],{"class":170,"line":228},4,[168,230,231],{"class":194},"  noticeVersion",[168,233,198],{"class":178},[168,235,201],{"class":178},[168,237,238],{"class":204},"cmp-v1",[168,240,241],{"class":178},"'\n",[168,243,245,248],{"class":170,"line":244},5,[168,246,247],{"class":178},"}",[168,249,250],{"class":174},")\n",[14,252,253,254,257],{},"In GTM, create a ",[18,255,256],{},"Custom Event"," trigger for each event shown on the Booking analytics page, then connect those triggers to GA4 Event tags. Do not map form values, services, specialists, URLs, prices, identifiers or appointment times.",[14,259,260,261,264],{},"Withdrawing consent must call the same API with ",[107,262,263],{},"analytics: false",". Events are not stored for later replay while consent is denied.",[23,266,268],{"id":267},"set-up-a-transition-from-your-website","Set up a transition from your website",[14,270,271,272,275],{},"Use the same GA4 Web Stream on your website and on the Tervita booking page. In GA4, open ",[18,273,274],{},"Admin → Data streams → Web → Configure tag settings → Configure your domains"," and add both your website hostname and the actual booking hostname.",[14,277,278],{},"Configure cross-domain measurement in the Google tag or GTM on your website. Keep the booking link as a normal clickable link so Google can add its linker parameter when the client clicks it. Do not add payment providers such as Stripe or Montonio as linked domains.",[23,280,282],{"id":281},"use-only-the-booking-page","Use only the booking page",[14,284,285,286,288,289,291],{},"Select only ",[18,287,82],{},". Enter the ",[107,290,109],{}," Measurement ID and the policy link; the website field stays hidden. You can share the booking link anywhere, and Tervita sends consented events directly to that GA4 stream.",[23,293,295],{"id":294},"events","Events",[97,297,298,304,310,316,322,328,334],{},[100,299,300,303],{},[107,301,302],{},"tervita_booking_opened"," — the widget or page was opened.",[100,305,306,309],{},[107,307,308],{},"tervita_booking_started"," — the client made the first meaningful choice.",[100,311,312,315],{},[107,313,314],{},"tervita_booking_step_viewed"," — a booking step was displayed.",[100,317,318,321],{},[107,319,320],{},"tervita_booking_submit"," — the booking was sent for creation.",[100,323,324,327],{},[107,325,326],{},"tervita_booking_created"," — the booking was successfully created.",[100,329,330,333],{},[107,331,332],{},"tervita_booking_payment_completed"," — online payment was confirmed.",[100,335,336,339],{},[107,337,338],{},"tervita_booking_error"," — a safe error category was recorded.",[14,341,342],{},"Events never contain names, contact details, form text, services, specialists, prices, appointment identifiers or times, raw URLs, query strings or Tervita platform identifiers.",[23,344,346],{"id":345},"check-the-result","Check the result",[14,348,349],{},"Use Google Tag Assistant and GA4 DebugView to test each selected path. Confirm that every conversion arrives once and that a website-to-booking transition keeps the original source and session instead of creating a Tervita self-referral.",[351,352,353],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":164,"searchDepth":191,"depth":191,"links":355},[356,357,358,359,360,361,362,363],{"id":25,"depth":191,"text":26},{"id":94,"depth":191,"text":95},{"id":123,"depth":191,"text":124},{"id":153,"depth":191,"text":154},{"id":267,"depth":191,"text":268},{"id":281,"depth":191,"text":282},{"id":294,"depth":191,"text":295},{"id":345,"depth":191,"text":346},"online-booking","Track the booking funnel in a website widget, after a website-to-booking transition, from a direct booking link, or in any combination.",false,"md",{"key":369},"online-booking\u002Fbooking-analytics",true,"\u002Fhelp\u002Fen\u002Fonline-booking\u002Fbooking-analytics",{"title":5,"description":365},"help\u002Fen\u002Fonline-booking\u002Fbooking-analytics","nvh36j038peXtjZgk7pxEBOKSJ9cxgjDNlY-D-MXpD0",[376,379,382,385,388],{"path":377,"title":378},"\u002Fhelp\u002Fen\u002Fonline-booking\u002Fyour-booking-page","Your public booking page: where it lives and how to share it",{"path":380,"title":381},"\u002Fhelp\u002Fen\u002Fonline-booking\u002Fbooking-settings","Booking settings and confirmations: control how online booking behaves",{"path":383,"title":384},"\u002Fhelp\u002Fen\u002Fonline-booking\u002Fclient-reminders","Appointment reminders by email and SMS",{"path":386,"title":387},"\u002Fhelp\u002Fen\u002Fonline-booking\u002Fonline-prepayment","Online prepayment: take a deposit when clients book",{"path":371,"title":5},1786708381176]