Google Analytics and Webhooks

Last reviewed: 2026-03-31

Available on:Pro PlusUltimateand higher
On this page

This article covers two integrations that let you measure and act on booking data outside the app: Google Analytics for tracking customer behavior through your booking flow, and Webhooks for sending real-time booking data to any system you control.


Google Analytics

What gets tracked automatically

When Google Analytics is enabled, Easy Appointment Booking fires the following events to your GA4 property as customers move through the booking flow:

Event nameWhen it fires
Calendar OpenedCustomer clicks the "Select a time" button and the booking calendar appears
Date SelectedCustomer selects a date on the calendar
Timeslot SelectedCustomer clicks a specific time slot
Timeslot Added to CartCustomer adds a booking to their Shopify cart
Timeslot BookedCustomer completes the booking (confirmation page reached)

These five events give you a full-funnel view — from initial interest to confirmed booking — so you can identify where customers drop off and measure your booking conversion rate.

The Google Analytics integration requires the Pro Plus plan or higher.

Connecting Google Analytics

You do not need to install any extra code on your storefront. Easy Appointment Booking sends events directly through your existing GA4 setup on Shopify.

  1. Make sure your Shopify store already has a GA4 property connected via the Google & YouTube sales channel in Shopify. If you have not done this yet, set it up there first.
  2. In the app, go to Settings > Integrations.
  3. Scroll to the Google Analytics section.
  4. Check the box labelled Send customer events to Google Analytics.
  5. Click Save.

That is all. Events will start flowing to GA4 for all future booking sessions.

Viewing booking events in GA4

  1. In Google Analytics, go to Reports > Engagement > Events.
  2. Look for the event names listed above (e.g., "Calendar Opened", "Timeslot Booked").
  3. Click any event name to see details including counts over time, user demographics, and the pages where the event fired.

It can take 24–48 hours for new event data to appear in standard GA4 reports. For real-time verification, check Reports > Realtime and trigger a booking session on your storefront — the events should appear within a few seconds.

Marking bookings as conversions

To report booking completions as conversions in GA4:

  1. In Google Analytics, go to Admin > Events.
  2. Find the Timeslot Booked event in the list.
  3. Toggle Mark as conversion to on.

Once marked, the event will appear under Reports > Engagement > Conversions and be available in your Google Ads account for smart bidding, if you run paid campaigns.

Google Analytics events only fire on your live storefront — not in the Shopify Admin preview or in the Easy Appointment Booking team viewer. If you test by placing a booking from the admin, no GA events will be sent.


Webhooks

What webhooks are

A webhook is a real-time HTTP POST request that Easy Appointment Booking sends to a URL you control whenever a booking event occurs. Your server (or a no-code tool like Zapier or Make) receives the request and can act on it immediately — syncing data to a CRM, notifying internal tools, updating a spreadsheet, or anything else.

The Webhooks integration requires the Ultimate plan. Webhooks send raw JSON to a URL — you will need either a developer to build a receiver or a no-code platform like Zapier or Make that can accept webhook payloads.

Setting up your webhook endpoint

  1. In the app, go to Settings > Integrations.
  2. Scroll to the Webhooks section.
  3. Enter your endpoint URL in the Webhook URL field.
  4. Click Save.

Easy Appointment Booking will immediately start sending POST requests to that URL for all booking events. There is one URL per store — all event types go to the same endpoint.

Webhook events

Easy Appointment Booking sends the following events:

EventWhen it fires
booking.createdA new booking is confirmed
booking.cancelledA booking is cancelled
booking.rescheduledA booking is moved to a different date or time

Webhook payload structure

Every webhook request is sent as a Content-Type: application/json POST with the following structure:

{
  "event": "booking.created",
  "data": {
    "booking_id": "12345",
    "first_name": "Jane",
    "last_name": "Smith",
    "customer_email": "jane@example.com",
    "customer_phone": "+1 555 000 1234",
    "event_name": "Wine Tasting",
    "event_description": "An evening of curated wine pairings.",
    "event_location": "123 Vineyard Lane, Napa, CA",
    "start_date": "April 15, 2026",
    "start_time": "6:00 PM",
    "end_time": "8:00 PM",
    "timezone": "America/Los_Angeles",
    "number_of_attendees": 2,
    "variant_title": "2 guests",
    "availability_name": "Main Tasting Room",
    "order_id": "9876",
    "shop_name": "Oakridge Winery",
    "reschedule_booking_link": "https://..."
  }
}

The event field changes to booking.cancelled or booking.rescheduled for those event types. The data object contains the same fields in all cases.

Testing your webhook

The easiest way to test is to use a temporary inspection tool:

  1. Go to requestbin.com (or a similar service like webhook.site) and create a new bin. You will get a unique URL.
  2. Paste that URL into the Webhook URL field in the app and save.
  3. Place a test booking on your storefront.
  4. Go back to RequestBin — the payload should appear within a few seconds.

Once you have verified the payload structure, replace the test URL with your real endpoint.

Easy Appointment Booking fires webhooks and does not retry on failure. If your endpoint is down or returns an error, that webhook event is not resent. Build your integration to handle occasional missed events gracefully, or use a reliable no-code platform (Zapier, Make) that has built-in retry logic.

Use cases

Sync bookings to a CRM Receive booking.created events and create or update a contact record in HubSpot, Salesforce, or any CRM that has an API. Include the customer's name, email, and service details so your sales team has full context.

Notify internal systems Post a message to Slack or Microsoft Teams whenever a booking is placed, cancelled, or rescheduled — without needing Shopify Flow.

Feed data into a database or spreadsheet Use Make (formerly Integromat) or Zapier to catch the webhook and append a new row to Google Sheets or Airtable. Useful for reporting that lives outside Shopify.

Trigger a follow-up sequence Send the booking.created payload to an email platform like ActiveCampaign to enroll the customer in a pre-arrival email sequence automatically.

Using Zapier or Make instead of a custom endpoint

If you do not have a developer, you can use the webhook URL from Zapier or Make as your endpoint:

  • Zapier: Create a new Zap, choose Webhooks by Zapier as the trigger, select Catch Hook, and copy the webhook URL Zapier provides.
  • Make: Create a new scenario, add a Webhooks > Custom webhook module, and copy the URL it provides.

Paste that URL into the app's Webhook URL field. When the next booking event fires, Zapier or Make will receive it and you can then add any action — no code required.

Next steps

Was this article helpful?

Still need help?

Our support team is available to answer any questions you have.