This guide helps troubleshoot LimoSuite tracking events, Google Tag Manager, Google Ads conversion tracking, and Enhanced Conversions.
Use this article when booking events do not appear, purchase tracking does not fire, Google Ads conversions are missing, or Enhanced Conversions data is not showing.
Main LimoSuite Tracking Events
A normal completed booking flow should send these events:
booking_started
ride_details_completed
vehicle_selected
passenger_selected
checkout_started
limosuite_purchase
The full dataLayer event list usually looks like this:
[
"gtm.js",
"booking_started",
"ride_details_completed",
"vehicle_selected",
"passenger_selected",
"checkout_started",
"limosuite_purchase"
]
Fast Testing Commands
Open the browser console on the booking page and use these commands.
Show all events
window.dataLayer.filter(x => x.event).map(x => x.event)
Show purchase event
window.dataLayer.find(x => x.event === 'limosuite_purchase')
Count purchase events
window.dataLayer.filter(x => x.event === 'limosuite_purchase').length
Show Enhanced Conversions data
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.user_data
Problem: window.dataLayer Is Undefined
If this command:
window.dataLayer
returns:
undefined
then Google Tag Manager or the dataLayer is not loading.
Check These Settings
Go to:
LimoSuite → Settings → Tracking
Confirm:
Google Tag Manager Container ID is entered
Load GTM on all frontend pages is enabled
Check Page Source
Open your website.
Right-click and choose:
View Page Source
Search for:
googletagmanager.com/gtm.js
You should see your GTM container ID.
Example:
GTM-ABC1234
If you see:
GTM-XXXXXXX
then the placeholder ID is still being used. Replace it with your real GTM container ID.
Other Possible Causes
Check if:
A cache plugin is serving an old page
A security plugin is blocking scripts
The GTM ID is invalid
The Tracking settings were not saved
Clear cache after changing tracking settings.
Problem: Only gtm.js Appears
If this command:
window.dataLayer.filter(x => x.event).map(x => x.event)
returns only:
["gtm.js"]
then Google Tag Manager is loading, but LimoSuite booking events have not fired yet.
What This Means
This usually means:
GTM is installed correctly
The booking form has not triggered events yet
The tracking code may not be active in the React build
Admin tracking exclusion may be blocking events
Check These Items
Confirm:
You are testing on the booking page
You completed at least one booking step
Track booking funnel steps is enabled
You are not logged in as admin while admin tracking exclusion is enabled
If you are logged in as a WordPress administrator and this setting is enabled:
Disable tracking for administrators
then LimoSuite will skip tracking events.
Test in an incognito window or temporarily disable that setting.
Problem: Funnel Events Do Not Fire
If events like these do not appear:
booking_started
ride_details_completed
vehicle_selected
passenger_selected
checkout_started
check the LimoSuite settings first.
Go to:
LimoSuite → Settings → Tracking
Make sure this is enabled:
Track booking funnel steps
Also check:
The booking form is loading correctly
There are no JavaScript errors in the browser console
The updated React app was rebuilt and uploaded
The browser/cache plugin is not serving an old JS file
Problem: Purchase Event Does Not Fire
If these events appear:
booking_started
ride_details_completed
vehicle_selected
passenger_selected
checkout_started
but this event does not appear:
limosuite_purchase
then funnel tracking is working, but purchase tracking is not completing.
Check LimoSuite Setting
Go to:
LimoSuite → Settings → Tracking
Confirm:
Track paid booking purchases
is enabled.
Check Booking Flow
Confirm:
Payment completed successfully
Confirmation step loaded
Booking has a confirmation code
Booking has a final total
No JavaScript error appears on the confirmation page
The purchase event usually fires on the confirmation step after the booking is completed.
Problem: Purchase Event Fires More Than Once
Run:
window.dataLayer.filter(x => x.event === 'limosuite_purchase').length
Expected result:
1
If the result is more than 1, the same purchase may be tracked multiple times.
Why This Is a Problem
Duplicate purchase events can cause:
Duplicate Google Ads conversions
Wrong conversion value
Wrong CPA reporting
Wrong ROAS reporting
Possible Causes
Check if:
The confirmation step reloads multiple times
The same purchase is pushed again after browser refresh
More than one GTM container is installed
Purchase tracking code was added twice
The React confirmation component fires the event more than once
LimoSuite should use a unique transaction ID guard so each transaction fires only once per browser session.
Problem: Purchase Value Is Missing or Wrong
Run:
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.value
The result should be the final booking amount.
Example:
91.69
Correct:
value: 91.69
Incorrect:
value: "$91.69"
The value should be a number, not a formatted currency string.
Check These Items
Confirm:
The review step shows the correct total
Discounts are applied correctly
Upsells are included correctly
Fees are included correctly
The payment total matches the booking total
Problem: Currency Is Missing
Run:
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.currency
Expected result:
USD
If currency is missing, check your tracking helper or GTM variable setup.
The Data Layer Variable Name in GTM should be:
currency
Problem: Transaction ID Is Missing
Run:
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.transaction_id
Expected result should be a unique booking or confirmation ID.
Example:
LS-260709-HBRR30
The transaction ID is important because Google Ads can use it to help avoid duplicate conversion counting.
In GTM, the Data Layer Variable Name should be:
transaction_id
Problem: Pickup Date Looks Wrong
Run:
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.pickup_date
Expected result should be a string.
Example:
2026-07-09T14:30:00.000Z
This is UTC time. For example, 10:30 AM New York time in July may appear as 14:30 UTC.
Correct:
pickup_date: "2026-07-09T14:30:00.000Z"
Incorrect:
pickup_date: Thu Jul 09 2026 10:30:00 GMT-0400
If pickup date appears as a JavaScript Date object, update the tracking helper so it sends a string.
Problem: Enhanced Conversions Data Is Missing
Run:
window.dataLayer.find(x => x.event === 'limosuite_purchase')?.user_data
Expected result:
{
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"
}
}
Check LimoSuite Setting
Go to:
LimoSuite → Settings → Tracking
Make sure this is enabled:
Send Enhanced Conversions customer data
Check Checkout Data
Enhanced Conversions data comes from customer billing/contact information.
Confirm the customer entered:
Billing email
Billing phone
Billing first name
Billing last name
Billing address, if required
Important
Do not use trip addresses as customer identity data.
Correct customer data:
Billing name
Billing email
Billing phone
Billing address
Incorrect customer data:
Pickup address
Drop-off address
Airport address
Pickup and drop-off addresses are trip details, not customer identity fields.
Problem: GTM Tag Does Not Fire
If the LimoSuite event appears in the dataLayer but the GTM tag does not fire, the issue is inside Google Tag Manager.
Check Trigger Name
For the Google Ads purchase tag, your trigger should be:
Custom Event
Event name:
limosuite_purchase
The event name must match exactly.
Correct:
limosuite_purchase
Incorrect:
limo_purchase
purchase
limosuite purchase
LimoSuite_Purchase
Check GTM Preview
Open GTM Preview mode.
Go through the booking flow.
Click:
limosuite_purchase
Then check:
Tags Fired
Tags Not Fired
If your tag appears under “Tags Not Fired,” open it and check the trigger conditions.
Problem: Google Ads Shows No Conversions
If GTM Preview shows the Google Ads tag fired, but Google Ads shows no conversions, check these items.
Check GTM Publish Status
GTM Preview is only a test.
After testing, you must click:
Submit
and publish the GTM container.
Check Conversion Action
In Google Ads, go to:
Goals → Conversions → Summary
Open your conversion action and confirm:
The conversion action is active
The Conversion ID is correct
The Conversion Label is correct
The tag was installed through GTM
Check Timing
Google Ads reporting is not instant.
It can take time before the conversion status updates.
Check Traffic Source
For Google Ads to attribute a conversion to an ad, the booking usually needs to happen after a Google Ads click.
A direct test booking may fire the tag but may not show as an attributed Google Ads conversion.
Problem: Google Ads Conversion Value Is Zero
If conversions appear but value is 0, check the GTM value variable.
In GTM, the Google Ads conversion tag should use:
{{DLV - value}}
The Data Layer Variable Name should be:
value
Also check:
The purchase event includes value
Value is numeric
The tag field uses the correct GTM variable
The GTM variable is not misspelled
Problem: Enhanced Conversions Do Not Show in Google Ads Diagnostics
Enhanced Conversions diagnostics may take time to update.
Check:
Enhanced Conversions are enabled in the Google Ads conversion action
Enhanced Conversions are enabled in the GTM conversion tag
User-provided data variables are mapped
The GTM container is published
Real conversion traffic has happened
Enough time has passed for diagnostics
Problem: Events Do Not Fire for Admins
If this setting is enabled:
Disable tracking for administrators
then LimoSuite will skip events for logged-in WordPress administrators.
This is useful for production because it keeps your own testing out of analytics and Google Ads.
For testing, use one of these options:
Test in incognito
Test while logged out
Test as a non-admin customer
Temporarily disable admin tracking exclusion
Problem: Debug Logs Do Not Show
If Tracking Debug Mode is enabled but logs do not appear, check:
You are testing on the booking page
The updated React app is rebuilt and uploaded
There are no JavaScript errors
Tracking is not skipped for admins
Browser console is open
Expected debug log format:
[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
Problem: Updated Tracking Code Does Not Appear
If you updated LimoSuite React source files but the browser still shows old behavior, the built JavaScript file may not have been updated.
Check Built React File
Open the browser console and run:
fetch('/wp-content/plugins/limosuite/js/react-app.js')
.then(r => r.text())
.then(t => console.log({
booking_started: t.includes('booking_started'),
limosuite_purchase: t.includes('limosuite_purchase'),
googleTracking: t.includes('googleTracking')
}))
Expected result:
{
booking_started: true,
limosuite_purchase: true,
googleTracking: true
}
If any value is false, the React source may have been changed but not rebuilt.
Run your React build and upload the new built files:
npm run build
Then upload:
js/react-app.js
css/react-app.css
Clear cache after uploading.
Problem: Cache Shows Old Tracking Settings
If tracking settings look correct but the frontend still shows old data, clear cache.
Clear:
WordPress cache
Server cache
CDN cache
Browser cache
Optimization/minify cache
Then test again in an incognito window.
Recommended Troubleshooting Order
Use this order when debugging tracking:
1. Confirm GTM ID is real and not GTM-XXXXXXX.
2. Confirm GTM appears in page source.
3. Confirm window.dataLayer exists.
4. Confirm booking funnel events appear.
5. Confirm limosuite_purchase appears.
6. Confirm purchase fires only once.
7. Confirm value, currency, and transaction_id.
8. Confirm user_data if using Enhanced Conversions.
9. Confirm GTM trigger fires on limosuite_purchase.
10. Confirm Google Ads tag fires in GTM Preview.
11. Publish GTM.
12. Check Google Ads after real traffic.
Healthy Tracking Checklist
A healthy tracking setup should have:
Real GTM container ID
Sitewide GTM enabled
Booking funnel tracking enabled
Purchase tracking enabled
Enhanced Conversions enabled, if needed
Admin tracking exclusion enabled for production
Debug mode disabled for production
Conversion Linker tag firing on all pages
Google Ads purchase tag firing on limosuite_purchase
Value, currency, and transaction_id mapped
Purchase event firing only once
Summary
Most tracking problems fall into one of four areas:
GTM is not loading
LimoSuite events are not firing
GTM triggers/tags are not configured correctly
Google Ads reporting has not updated yet
Start by testing the browser dataLayer. If the correct LimoSuite events appear there, the LimoSuite side is working.
Then use GTM Preview to confirm your tags fire.
Finally, check Google Ads after the container is published and real ad traffic has generated bookings.