Skip to content
Start for FreeBook a Demo

Appointment booking analytics and conversion tracking

Connect your marketing activity to the appointments it brings in. LunaCal supports Google Tag Manager events, hidden UTM fields and booking webhooks, so you can track the booking journey and keep campaign details with each appointment.

Start your free trialCompare scheduling tools ↓
Google Tag Manager container ID setting in LunaCal

Track the booking journey, not just the page visit

Capture appointment activity in LunaCal and connect it to the analytics and reporting tools you already use.

Google Tag Manager

Add a GTM container to an individual account or team.

Event-level tracking

Enable the integration on the specific event types you want to track.

Booking-step events

Track service selection, team member selection and time-slot selection.

Confirmed bookings

Use the completed-booking event as your conversion signal.

Payment events

Track payment completion separately from booking requests.

UTM capture

Save campaign parameters through matching hidden booking fields.

Webhook delivery

Send appointment details and form responses to your own reporting system.

Spreadsheet reporting

Use Zapier to send booking and campaign details to Google Sheets.

CRM connections

Connect booking activity to tools including HubSpot and Pipedrive.

LunaCal short-text booking question configured with the internal label utm_source

Keep the campaign source with the appointment

LunaCal matches a booking-link query parameter to the internal label of a booking question. A hidden optional field can retain the campaign value without asking the guest to type it.

  1. Add an optional Short Text booking question with the internal label utm_source.
  2. Hide the field and use a booking URL carrying the matching parameter.
  3. Read the saved answer in booking details or pass it onward through the webhook responses field.
Set up booking UTM tracking →

Measure each step separately

Selection

Track which service, member or time slot the visitor selects before submitting a booking.

Request

A bookingRequested event records a request. Keep it separate from a confirmed appointment when approval is required.

Completion

Use bookingSuccessfullV2 for the updated booking-completion event. Avoid counting both the legacy and V2 event as separate conversions.

Payment

Use paymentSuccessfull to measure successful payment. A booking conversion and a payment conversion describe different actions.

Install the container, then enable the event types

GTM setup has two levels in LunaCal. Saving the container ID connects the account or team; the event’s Integrations setting determines whether tracking runs for that event type.

Configure Google Tag Manager →

Account or team scope

Choose the scheduling profile whose booking activity belongs in the container.

Per-service activation

Enable Google Tag Manager in each relevant event type’s Integrations tab.

Your reporting destination

Configure GA4 or other supported tags inside GTM. LunaCal supplies booking events; your tags determine where that data is reported.

Send booking details to your reporting system

Webhooks connect the appointment record to your reporting workflow. Include the booking identifier, attendee details and form responses so a campaign source stays attached to the correct appointment.

  • Choose separate triggers for created, rescheduled and cancelled bookings.
  • Use booking questions to retain campaign values alongside the appointment.
  • Send the payload to your own endpoint or connect it through an automation tool.
Explore scheduling api, webhooks and mcp →
LunaCal webhook configuration with subscriber URL and booking event triggers

Why track appointment conversions with LunaCal?

LunaCal connects marketing signals to the service, host and booking record—not only to a generic page-view event.

Know where the booking came from

Hidden fields retain the source on the appointment itself, making it available beyond the analytics session.

Separate requests, bookings and payments

Distinct events let you measure the action your business actually counts as a conversion.

Tracking alongside service scheduling

Use the same account for scheduling, payments and reminders. Standard starts at $9 per user per month; Teams starts at $15 and adds webhooks and shared scheduling.

Compare LunaCal plans →

LunaCal vs Calendly, Cal.com and Koalendar

Compare the ways each tool connects appointment activity to external analytics. Calendly and Cal.com also offer dedicated scheduling insights.

Appointment booking analytics and conversion tracking: capability comparison
CapabilityLunaCalCalendlyCal.comKoalendar
Google analytics connectionVia GTMGoogle AnalyticsGoogle AnalyticsGoogle Analytics
Google Tag ManagerYesEmbed eventsYesAnalytics integration
Campaign attributionHidden UTM fieldsUTM trackingUTM trackingAnalytics integration
Booking webhooksTeams+YesYesPaid plans
Custom booking questionsYesYesYesYes
Website embeddingYesYesYesYes
Zapier connectionYesYesYesYes
Payment collectionYesYesYesYes
Individual schedulingYesYesYesYes
Round-robin schedulingTeams+YesYesYes
Collective schedulingTeams+YesYesYes
Calendar conflict checksYesYesYesYes
Free planNoYesYesYes

Booking analytics questions

Does LunaCal connect to Google Analytics 4?

You can configure GA4 through Google Tag Manager. Add your container ID in LunaCal, enable GTM on the event types you want to track, then configure the relevant tags in your container.

How do I save UTM parameters with a booking?

Create optional hidden booking questions whose internal labels match your campaign parameters, such as utm_source. Add those parameters to the booking URL. LunaCal saves the matching values as booking responses.

Does saving a GTM container enable tracking on every event?

No. Enable the integration on each relevant event type in its Integrations tab after saving the account or team container ID.

Which event should I use for a completed booking?

The updated completion event is bookingSuccessfullV2. Choose one completion event for your conversion rule so the legacy and updated events do not count the same booking twice.

Can I track a payment separately?

Yes. LunaCal sends paymentSuccessfull for successful payment. Keep that event separate from the request and booking-completion events in your reporting setup.

Can I send booking information to a spreadsheet?

Yes. Use the Zapier connection to send booking data and captured campaign values to Google Sheets. Webhooks can also deliver booking responses to a reporting endpoint.

Connect your campaigns to booked appointments.

Create your LunaCal account