← Tracking

Troubleshooting Tracking Events

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.

Last updated on