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:
- Open the booking page.
- Open the browser console.
- Run the dataLayer event command.
- Complete each booking step.
- Confirm all funnel events appear.
- Complete a paid booking.
- Confirm
limosuite_purchaseappears. - Confirm purchase value, currency, and transaction ID.
- Confirm purchase fires only once.
- 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.