Connect Google Tag Manager or Google Analytics 4 to your booking page to measure traffic, funnel drop-off, and booking conversions. RentalTide pushes booking events into the GTM dataLayer so you can build triggers, tags, and conversion goals in your own Google account.
Tags are configured per location, so each location can report into its own container or property.
Setting up
- Go to Integrations in the admin sidebar.
- Find Google Tags and click Manage.
- Choose the location you are configuring.
- Paste one of:
- a GTM container ID --
GTM-XXXXXXXX - a GA4 measurement ID --
G-XXXXXXXXXX
- a GTM container ID --
- Click Save.
The tag loads on that location's booking page and booking widget within a few minutes. Configuration is cached for up to 5 minutes, so allow that long before testing.
Which one should I use?
Either works. Both receive booking, checkout, and purchase events.
GTM container (GTM-) | GA4 measurement ID (G-) | |
|---|---|---|
| Pageviews in GA4 | Yes, via a GA4 tag in the container | Yes, automatically |
view_item / begin_checkout / purchase | Yes, as dataLayer events | Yes, sent straight to your property |
| Setup work | Build triggers and tags yourself | None |
| Meta / Google Ads / other vendors' tags | Yes | No |
| Control over what fires and when | Full | None |
Pick a GA4 measurement ID if you only want GA4 reporting -- events arrive with no container setup at all.
Pick a GTM container if you run other tags (Google Ads, Meta, LinkedIn, call tracking) or want control over triggers and consent.
Do not enter both for one location. A location holds one tag.
Verifying it works
- Open your booking page in a browser.
- Open GTM Preview / Debug mode, or the Tag Assistant extension.
- Confirm the container connects and
booking_page_loadedappears in the event list. - Click into a rental and confirm
view_itemfires.
If nothing appears: confirm the tag ID is saved against the location you are actually browsing, wait 5 minutes for the cache, and check that no ad blocker is stripping the container.
Ecommerce events
These follow the GA4 recommended ecommerce schema, so a standard GA4 tag in GTM picks them up with no custom mapping.
| Event | Fires when | Data |
|---|---|---|
view_item | A customer opens a rental's detail page | items[] with item_id, item_name |
begin_checkout | A customer reaches the checkout page | value, currency, items[] |
purchase | A booking is created and paid | transaction_id (the booking's rental ID), value, currency, items[] with price and quantity |
purchase fires for customer-made web bookings only. Bookings your staff create in the admin or POS are not web conversions and do not fire it.
A cart booking sends one purchase per order with every rental in items[] and the full order total as value, so basket size and revenue both report correctly.
Setting up a conversion goal
GA4 measurement ID: nothing to do. purchase arrives as a GA4 event. Mark it as a key event under Admin -> Events to get conversion reporting and Google Ads bidding.
GTM container:
- Create a GA4 Event tag.
- Event name:
purchase. - Trigger: Custom Event, event name
purchase. - Check Send Ecommerce data, source Data Layer.
- Publish the container, then mark
purchaseas a key event in GA4.
The same pattern works for begin_checkout and view_item.
Booking funnel events
RentalTide also sends its own named events. They are not GA4 standard names: on a GA4 measurement ID they arrive as custom events you can report on directly; in a GTM container you need a Custom Event trigger for each one you want to use.
| Event | Fires when | Useful fields |
|---|---|---|
booking_page_loaded | The booking page finishes loading the tag | customer_id, location_id, ref_affiliate |
boats_data_loaded | The rental catalog loads | boats_count, filtered_by_date, selected_date |
boats_data_error | The catalog fails to load | error_message |
direct_boat_view | Someone lands on a direct link to one rental | inventory_id |
booking_context_update | Location, branding, or integration state resolves | location_id, ref_affiliate |
custom_code_loaded | Your custom header/footer code is active | has_header_code, has_footer_code |
Every dataLayer push also carries a timestamp in milliseconds.
Why page_view matters
The booking flow is a single-page app: catalog, rental details, checkout, and confirmation all happen without a full page reload. Left alone, Google records one pageview for the entire visit, so no report can show where customers drop off. The page_view event covers each step after the first. In a GTM container, either use it as a Custom Event trigger for your GA4 tag, or enable History Change triggering -- not both, or steps count twice.
booking_context_update fires whenever page state changes, so it can fire several times per visit. Do not use it as a funnel step or a conversion trigger.
Attributing affiliate and referral traffic
ref_affiliate carries the ?ref= value from the booking page URL, so you can segment affiliate traffic in GA4 by registering it as a custom dimension in your GA4 tag.
Other pixels
Google Tags are independent of the other tracking integrations. Set these up separately under Integrations:
| Integration | Events sent |
|---|---|
| Meta Conversion API | PageView on load, Purchase on booking |
| TikTok Pixel | Page view on load, CompletePayment on booking |
| Custom Code | Anything you inject into the booking page's header or footer |
You can also fire Meta and TikTok events from inside GTM if you prefer to manage them there -- but do not install the same pixel in both places, or every event is counted twice.
Notes and limits
- One tag per location. A location with no tag of its own falls back to an account-level tag if one was configured before per-location tags existed.
- Tag IDs are validated on save.
GTM-IDs are 6--10 characters after the prefix;G-IDs are 6--12. - Changes take up to 5 minutes to appear on the live booking page.
- If you embed the booking widget on your own website and that site already loads the same GTM container, RentalTide detects it and will not load it a second time -- your existing container receives the booking events directly.
- Refunds and cancellations are not yet reported to Google, so GA4 revenue reflects bookings made, not net of refunds.
- Removing a tag stops it loading on the next page load; it does not delete data already in your Google account.

