← Tracking

Testing DataLayer Events

LimoSuite sends booking funnel and purchase events into the browser dataLayer. These events can be used by Google Tag Manager, Google Ads, GA4, and other tracking tools.

Testing the dataLayer helps confirm that tracking is working before publishing or changing GTM tags.

Main LimoSuite Events

LimoSuite can send these events during the booking flow:

booking_started
ride_details_completed
vehicle_selected
passenger_selected
checkout_started
limosuite_purchase

A normal completed booking flow should look like this:

[
  "gtm.js",
  "booking_started",
  "ride_details_completed",
  "vehicle_selected",
  "passenger_selected",
  "checkout_started",
  "limosuite_purchase"
]

Before Testing

In WordPress admin, go to:

LimoSuite → Settings → Tracking

Make sure these settings are enabled:

Load GTM on all frontend pages
Track booking funnel steps
Track paid booking purchases

If testing Enhanced Conversions, also enable:

Send Enhanced Conversions customer data

Important Admin Testing Note

If this setting is enabled:

Disable tracking for administrators

then tracking events will not fire while you are logged in as a WordPress administrator.

For testing, either:

Turn off Disable tracking for administrators temporarily
Use an incognito browser window
Test as a non-admin customer

For live production use, it is usually best to keep admin tracking disabled.

Step 1: Open the Booking Page

Open your booking page in a browser.

Example:

https://yourwebsite.com/booking-form/

Use the actual page where the LimoSuite booking form is installed.

Step 2: Open Browser Console

Right-click the page and click:

Inspect

Then open the:

Console

tab.

You can also use keyboard shortcuts:

Windows: Ctrl + Shift + J
Mac: Command + Option + J

Step 3: Confirm dataLayer Exists

Run this in the console:

window.dataLayer

You should see an array.

If Google Tag Manager is loaded, you may see an event like:

{ event: "gtm.js" }

If window.dataLayer is undefined, then GTM or dataLayer has not loaded correctly.

Step 4: Check All Events

Run this command:

window.dataLayer.filter(x => x.event).map(x => x.event)

At the beginning, you may only see:

["gtm.js"]

That means GTM loaded, but LimoSuite booking events have not fired yet.

Go through the booking flow and run the command again after each step.

Step 5: Test Booking Started

Start entering trip details in the booking form.

Then run:

window.dataLayer.filter(x => x.event).map(x => x.event)

You should see:

booking_started

This means the customer started the booking flow.

Step 6: Test Ride Details Completed

Complete the ride details step and continue.

Run:

window.dataLayer.filter(x => x.event).map(x => x.event)

You should see:

ride_details_completed

This means pickup, drop-off, date/time, passengers, luggage, and trip details were completed.

Step 7: Test Vehicle Selected

Choose a vehicle.

Run:

window.dataLayer.filter(x => x.event).map(x => x.event)

You should see:

vehicle_selected

This event usually includes vehicle and price details.

To inspect it, run:

window.dataLayer.find(x => x.event === 'vehicle_selected')

Example:

{
  event: "vehicle_selected",
  value: 91.69,
  currency: "USD",
  vehicle_name: "Luxury Sedan",
  passengers: 1,
  bags: 0
}

Step 8: Test Passenger Selected

Complete the passenger step.

Run:

window.dataLayer.filter(x => x.event).map(x => x.event)

You should see:

passenger_selected

This means the booking has passenger/contact information selected.

Step 9: Test Checkout Started

Review the order and continue to payment.

Run:

window.dataLayer.filter(x => x.event).map(x => x.event)

You should see:

checkout_started

This means the customer reached the checkout/payment stage.

Step 10: Test Purchase Event

Complete a paid booking.

After the confirmation step loads, run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')

You should see a purchase object.

Example:

{
  event: "limosuite_purchase",
  transaction_id: "LS-260709-HBRR30",
  booking_id: "LS-260709-HBRR30",
  value: 91.69,
  currency: "USD",
  service_type: "point-to-point",
  pickup_address: "123 Main Street, Anytown, ST 12345",
  dropoff_address: "JFK – John F. Kennedy International Airport",
  pickup_date: "2026-07-09T14:30:00.000Z",
  distance_miles: 16.7,
  duration_minutes: 28,
  passengers: 1,
  bags: 0,
  vehicle_name: "Luxury Sedan"
}

Step 11: Confirm Purchase Fires Only Once

Run:

window.dataLayer.filter(x => x.event === 'limosuite_purchase').length

Expected result:

1

If the result is more than 1, the purchase event may be firing more than once.

Duplicate purchase events can cause duplicate Google Ads conversions.

Step 12: Check Purchase Value

Run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.value

Expected result:

The final booking amount

Example:

91.69

The value should be a number, not text.

Correct:

value: 91.69

Incorrect:

value: "$91.69"

Step 13: Check Currency

Run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.currency

Expected result:

USD

Step 14: Check Transaction ID

Run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.transaction_id

Expected result:

A unique booking/transaction ID

Example:

LS-260709-HBRR30

The transaction ID is important because it helps prevent duplicate conversion counting.

Step 15: Check Pickup Date Format

Run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.pickup_date

Expected result should be a string.

Example:

2026-07-09T14:30:00.000Z

The pickup date should not appear as a JavaScript Date object.

Correct:

pickup_date: "2026-07-09T14:30:00.000Z"

Incorrect:

pickup_date: Thu Jul 09 2026 10:30:00 GMT-0400

Step 16: Check Enhanced Conversions Data

If Enhanced Conversions are enabled, run:

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.user_data

You should see customer data similar to:

{
  email: "customer@example.com",
  phone_number: "+15555550100",
  address: {
    first_name: "John",
    last_name: "Doe",
    street: "123 Main St",
    city: "Anytown",
    region: "ST",
    postal_code: "112345",
    country: "US"
  }
}

At minimum, try to confirm:

email
phone_number

Step 17: Use GTM Preview Mode

Open Google Tag Manager.

Click:

Preview

Enter your website URL.

Go through the booking flow.

In the GTM event list, you should see:

booking_started
ride_details_completed
vehicle_selected
passenger_selected
checkout_started
limosuite_purchase

Click each event to inspect which tags fired.

For Google Ads conversion tracking, click:

limosuite_purchase

Confirm that your Google Ads conversion tag fired.

Step 18: Test Debug Mode

In LimoSuite settings, enable:

Tracking Debug Mode

Then test the booking flow again.

In the browser console, you should see logs like:

[LimoSuite Tracking] booking_started
[LimoSuite Tracking] ride_details_completed
[LimoSuite Tracking] vehicle_selected
[LimoSuite Tracking] passenger_selected
[LimoSuite Tracking] checkout_started
[LimoSuite Tracking] limosuite_purchase

Debug mode is useful during setup and troubleshooting.

For production, you can turn it off after testing.

Fast Test Commands

Use these commands when checking tracking.

Show all events

window.dataLayer.filter(x => x.event).map(x => x.event)

Show full purchase event

window.dataLayer.find(x => x.event === 'limosuite_purchase')

Count purchase events

window.dataLayer.filter(x => x.event === 'limosuite_purchase').length

Show purchase value

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.value

Show transaction ID

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.transaction_id

Show Enhanced Conversions data

window.dataLayer.find(x => x.event === 'limosuite_purchase')?.user_data

Expected Full Flow

A successful test should show this event order:

[
  "gtm.js",
  "booking_started",
  "ride_details_completed",
  "vehicle_selected",
  "passenger_selected",
  "checkout_started",
  "limosuite_purchase"
]

If all of these appear, LimoSuite tracking is working correctly.

Troubleshooting

window.dataLayer is undefined

Check that:

Google Tag Manager Container ID is entered
Load GTM on all frontend pages is enabled
Your cache has been cleared
The page source includes googletagmanager.com/gtm.js

Only gtm.js appears

This means GTM loaded, but LimoSuite events have not fired yet.

Check that:

You are testing on the booking page
You completed booking form steps
Track booking funnel steps is enabled
You are not blocked by admin tracking exclusion

Funnel events appear, but purchase does not

Check that:

Track paid booking purchases is enabled
The booking payment was completed
The confirmation step loaded
There are no JavaScript errors in the console

Purchase event appears more than once

Check that:

The confirmation step is not reloading multiple times
The same booking is not being tracked again after refresh
Only one GTM container is installed
Only one LimoSuite purchase event is pushed

Purchase value is wrong

Check that:

The final total is correct on the review/payment step
Discounts are applied correctly
Upsells and fees are included correctly
The value field is numeric

Enhanced Conversions data is missing

Check that:

Send Enhanced Conversions customer data is enabled
Billing email or phone is entered during checkout
The purchase event includes user_data
The GTM variables are mapped correctly

Events do not fire while logged in

Check this setting:

Disable tracking for administrators

If enabled, tracking events are skipped for logged-in WordPress administrators.

Summary

To test LimoSuite dataLayer events:

  1. Open the booking page.
  2. Open the browser console.
  3. Run the dataLayer event command.
  4. Complete each booking step.
  5. Confirm all funnel events appear.
  6. Complete a paid booking.
  7. Confirm limosuite_purchase appears.
  8. Confirm purchase value, currency, and transaction ID.
  9. Confirm purchase fires only once.
  10. Test in GTM Preview mode.

When the full event flow appears correctly, LimoSuite is ready to connect the events to Google Ads, GA4, and other tags inside Google Tag Manager.

Last updated on