# How to track lead source in Zoho Bookings

See exactly which marketing investment produces each Zoho Bookings appointment, with the full visitor journey saved next to every booking record.

Source: https://sourceloop.ai/help/track-lead-source-in-zoho-bookings/
Updated: 2026-05-28

---

If your business runs on Zoho, the Bookings module is probably already part of your stack, no extra contracts, no separate tool to manage. The piece it doesn't solve is **attribution**: Zoho Bookings captures the appointment, but not the channel that produced it. This guide adds that context to every booking.

Four steps, about ten minutes total. The webhook step requires Zoho Bookings on the Premium plan or above.

## What SourceLoop captures from Zoho Bookings

Every appointment booked through your embedded Zoho Bookings widget reaches SourceLoop with:

- **Inbound source** plus the complete UTM parameter set captured on the visitor's first session
- **Visited pages**, in chronological order, leading up to the appointment
- **Span of the customer journey**: total time elapsed between first touch and the actual booking
- **Repeat visit count** before the conversion finally happened
- **Email address** captured directly from the Zoho Bookings form
- **Initial landing destination** and the URL that referred the visitor
- **Source of the closing session**, the one that ended in the booking
- **Device class, country, and browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **Edit access** to the website (or Zoho Sites page) where the Zoho Bookings widget will live
- A **Zoho Bookings account on the Premium plan or above** (Free and Basic don't include webhook integrations, which this guide requires)
- At least one service / appointment type configured in Zoho Bookings

## Step 1: Install the SourceLoop tracking script

Log in to SourceLoop, navigate to **Setup** in the left menu, and switch to the **Tracking code** tab. Copy the snippet you see.

![SourceLoop Setup page showing the tracking code snippet ready to copy](/help/screenshots/sourceloop-tracking-code-script.png)

Add the snippet to the `<head>` section of every page on your site. Whether your booking page sits on Zoho Sites, WordPress, Webflow, or a custom-coded landing page, the SourceLoop snippet needs to load on it for attribution to work.

## Step 2: Add a hidden custom field to your booking form

Zoho Bookings captures URL parameter values onto a booking only when there's a matching custom field on the booking form. Add the one SourceLoop needs.

1. In Zoho Bookings, open **Workspaces -> Services -> [your service] -> Booking Form**.
2. Click **+ Add Field** and choose **Single Line**.
3. Set the **Field Name** exactly to:

```
sl_aid
```

4. Mark the field as **Hidden** so visitors don't see it on the booking form.
5. Save the booking form.

> **Field name must be exactly sl_aid**
> Zoho Bookings matches the incoming URL parameter to your custom field by name. Use lowercase only, no spaces, no extra punctuation. Different casing or naming will cause the value to be dropped silently.

**Quick verify**: open your Zoho Bookings booking page URL with `?sl_aid=test123` appended and book a test slot. In the booking detail view, the **Questions** tab should show `sl_aid = test123`. If you see the value there, the field is wired correctly.

## Step 3: Embed the booking page on your site

The booking widget needs to live on a page where the SourceLoop tracking script is already running.

1. In Zoho Bookings, go to **Share -> Embed**.
2. Pick the embed style you want, **Inline**, **Popup**, or **Floating button**. All three work the same way for attribution.
3. Copy the embed code and paste it onto the page on your site where bookings should happen.

> **Direct zoho bookings URLs aren't attributable**
> Appointments booked through a direct `bookings.zoho.com/...` link or your standalone Zoho Bookings page **won't appear in SourceLoop**. The visitor never touches a tracked page, so the attribution data has no path to attach to the booking. Funnel those campaigns through a landing page on your site that embeds the widget.

## Step 4: Configure the Zoho Bookings webhook

The webhook is what delivers each new booking to SourceLoop, where the booking gets matched to the visitor's journey and saved as a fully-attributed lead.

1. In SourceLoop, go to **Setup -> Incoming Webhooks** and copy your webhook URL.
2. In Zoho Bookings, go to **Settings -> Integrations -> Webhooks**.
3. Click **+ Create Webhook**.
4. Configure the webhook with:
   - **URL**: the SourceLoop webhook URL from step 1
   - **Event**: `Booking Created` (optionally also `Rescheduled` and `Cancelled` if you want those tracked too)
   - **Content Type**: `application/json`
   - **Method**: `POST`
5. Save.

Book a test slot through your embedded page to confirm the appointment appears in SourceLoop with channel, source, and landing page populated.

## Where to see Zoho Bookings appointments

Three SourceLoop views give you complementary perspectives on the same data:

### Contacts Hub

Visit [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts) to see every Zoho Bookings appointment as a contact row. Expand a row to reveal the visitor's full pre-booking timeline, useful as call prep when you want to know what content the prospect already consumed before walking into the meeting.

![SourceLoop Contacts Hub with a Zoho Bookings appointment expanded to show the lead's full pre-booking journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

[app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups your Zoho Bookings appointments by source, medium, and campaign. The view answers "which channel drives our highest-converting appointments?" in a single glance.

![SourceLoop attribution dashboard with Zoho Bookings appointments grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

In [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/), build a funnel that ends in "Zoho Bookings appointment". Slice it by source or landing page to find the paths that consistently turn into booked appointments versus the ones that look busy but never produce a meeting.

![SourceLoop funnel report ending in a Zoho Bookings appointment conversion step](/help/screenshots/sourceloop-funnel.png)

When paid spend is in play, forward Zoho Bookings appointments to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms can optimize against real booked meetings. [Connect your Google Ads account](/help/connect-google-ads/) covers the offline-conversion setup.

## Frequently Asked Questions

### Does this work with Zoho One subscribers?

Yes. Whether you reach Zoho Bookings through Zoho One, Zoho Workplace, or as a standalone subscription, the setup steps are identical. The Bookings module behaves the same across all entry points.

### Why does the custom field have to be named exactly "sl_aid"?

Zoho Bookings matches the URL parameter to a custom field by name. The field name you create in the booking form has to exactly match the parameter the SourceLoop tracker sends, lowercase, no spaces, no underscores out of place.

### I host my Zoho Bookings page through Zoho Sites. Will attribution still work?

Yes, on any page where you can install the SourceLoop tracking script and embed the booking widget. That includes Zoho Sites pages, your own WordPress site, a custom-built landing page, anywhere you control the HTML and the Zoho Bookings embed sits inside it.

### Visitors sometimes book through my direct Zoho Bookings page URL. Will those appointments show up?

No. Bookings made through a raw `bookings.zoho.com/...` link won't appear in SourceLoop, because the visitor never lands on a tracked page first. To attribute that traffic, point your campaigns at a landing page that embeds the widget.

### Do I need a paid Zoho Bookings plan?

The hidden-field and embed steps work on every Zoho Bookings tier, but the webhook step requires the Premium plan or above. Free and Basic plans don't include webhook integrations, so bookings can't reach SourceLoop.
