RepairPluginDocs

Google Tag Manager

Set up Google Tag Manager in RepairPlugin to track every booking step, measure conversions, and find drop-off points in your repair funnel.

google-tag-managergtmdatalayertrackinganalyticsconversion-tracking

What can you do with this?

  • Track every step of the booking process -- see how many visitors select a brand, choose a repair, or complete a booking.
  • Measure conversions -- fire Google Ads or Facebook Pixel conversion events when a booking is completed.
  • Understand drop-off points -- compare event counts across steps to find where customers leave the booking form.
  • Use any tracking platform -- Google Analytics, Google Ads, Facebook Pixel, or anything else that works with Google Tag Manager.
  • Avoid duplicate scripts -- if your site already loads Google Tag Manager through another plugin or your theme, tell RepairPlugin to skip loading it again.

Example: You want to track how many website visitors actually complete a booking. Turn on the GTM integration, create a Google Ads conversion tag for the booking_finalized event, and you'll see your conversion rate directly in Google Ads.

Where to find it

  1. In the WordPress admin sidebar, click RepairPlugin.
  2. Click Settings.
  3. Click Webhooks & Integrations in the sidebar.
  4. Click the Google Tag Manager tab at the top of the page.
https://www.repairplugin.com/wp-admin/admin.php?page=wp_repair_settings&section=webhooks
The Google Tag Manager integration tab showing GTM ID field, integration toggle, and script loading options

How to set it up

Turn on the Google Tag Manager integration

  1. Go to RepairPlugin > Settings > Webhooks & Integrations > Google Tag Manager.
  2. Turn the GTM Integration switch to on.
  3. If your site does not already have Google Tag Manager loaded:
    • Leave GTM Script Already Loaded set to off.
    • Enter your GTM ID (format: GTM-XXXXXX) in the GTM ID field.
  4. If your site already has Google Tag Manager loaded (through your theme or another plugin):
    • Turn GTM Script Already Loaded to on.
    • The GTM ID field disappears because RepairPlugin doesn't need to load the script.
  5. Click Save Settings.

The status badge at the top shows Active (green) when enabled or Inactive (gray) when disabled.

Turn off the integration

  1. Turn the GTM Integration switch to off.
  2. Click Save Settings.
  3. RepairPlugin stops sending events and no longer loads the Google Tag Manager script (if it was handling the script).

Use the events in Google Tag Manager

After turning on the integration:

  1. Open your Google Tag Manager workspace.
  2. Create a new Trigger of type Custom Event.
  3. Enter one of the RepairPlugin event names (for example, booking_finalized).
  4. Create or set up a Tag (like a Google Analytics event or Google Ads conversion) and attach the trigger.
  5. Publish your Google Tag Manager container.

Available events

RepairPlugin pushes these events to the dataLayer during the booking process:

Event nameWhen it fires
initial_interactionCustomer first interacts with the booking form (click or focus)
selected_locationCustomer selects a location (only fires when location-based pricing is on)
selected_typeCustomer selects a device type (Smartphone, Tablet, etc.)
selected_brandCustomer selects a brand (Apple, Samsung, etc.)
selected_modelCustomer selects a model (iPhone 16, Galaxy S21, etc.)
selected_repairsCustomer selects repairs and moves to the checkout step
pdf_quote_createdCustomer creates a PDF quote
booking_finalizedCustomer completes a booking (any delivery method except PDF quote)

Good to know: booking_finalized fires for all delivery methods -- "Come by store," "Ship device," "Repair on location," etc. The only exception is PDF quotes, which fire pdf_quote_created instead. The event payload automatically adjusts based on the delivery method (for example, shipped device bookings don't include appointment_date and appointment_time).

What data does each event contain?

Early-step events contain only the selections made so far. Later events include full booking details.

Step events (early funnel):

EventFields
initial_interactionevent
selected_locationevent, location
selected_typeevent, type
selected_brandevent, type, brand
selected_modelevent, type, brand, model

Repair selection event:

The selected_repairs event fires when the customer moves from repair selection to the checkout step. It contains:

FieldExampleDescription
event"selected_repairs"Event name
type"Smartphone"Device category
brand"Apple"Device brand
model"iPhone 16"Device model
color"Teal"Selected device color
items(see below)Array of selected repairs, upsales, and coupons
sub_total344.95Subtotal before discounts
combo_discount2.50Combo discount amount
coupon_code"20OFFNOW"Applied coupon code (empty if none)
coupon_type"fixed""fixed" or "percent"
coupon_amount20Coupon discount value
excluding_tax_price266.49Price before tax
tax_price55.96Tax amount
total_price322.45Final total

The items array contains one entry per repair, upsale, or coupon:

[
  { "item_name": "Screen - Official", "price": 300 },
  { "item_name": "Water Damage 10% OFF", "price": 25 },
  { "item_name": "Mobile Safety Glass", "price": 19.95 },
  { "item_name": "Coupon 20OFFNOW", "price": -20 }
]

Booking and quote events:

The booking_finalized, scheduled_appointment_created, ship_device_appointment_created, and pdf_quote_created events include everything from selected_repairs plus these additional fields:

FieldExampleDescription
booking_id16Internal booking ID
service_method"Come by our store"Delivery method chosen by customer
payment_method"iDEAL"Payment gateway used (empty if total is 0)
payment_status"Completed"Payment status
appointment_date"22-05-2025"Scheduled date (DD-MM-YYYY)
appointment_time"10:00"Scheduled time
appointment_number"250519056"Appointment reference number
appointment_status"Approved"Current appointment status
customer_name"John Doe"Customer's full name
customer_email"johndoe@gmail.com"Customer's email
customer_phone"1234567890"Customer's phone number
customer_type"private""private" or "business"
customer_business_name""Business name (empty for private customers)
customer_house_no"45A"House number
customer_street_address"456 Elm Street"Street address
customer_city"New York"City
customer_zipcode"10001"Zip/postal code
customer_country"United States"Country
customer_imei"356789123456789"IMEI or device identifier
customer_notes"Screen is cracked"Customer notes
location_name"Shop 1"Selected repair shop
location_telephone"1234567890"Shop phone number
location_address"123 Main St"Shop address
location_zipcode_city"New York, NY 10001"Shop zip code and city

Fields that differ per event:

The booking_finalized event automatically adjusts its payload based on the delivery method. The pdf_quote_created event excludes appointment and payment fields entirely.

Fieldbooking_finalized (store/on-location)booking_finalized (ship device)pdf_quote_created
service_methodYesYesNo
payment_methodYesYesNo
payment_statusYesYesNo
appointment_dateYesNoNo
appointment_timeYesNoNo
appointment_numberYesYesNo
appointment_statusYesYesNo
customer_typeYesYesNo
customer_business_nameYesYesNo
customer_notesYesYesNo

View example data

The settings page includes an Examples section below the settings form. Click any event heading to expand or collapse its sample data, showing exactly what information is sent with each event.

Settings reference

SettingDescriptionDefaultCustomers see
GTM IntegrationTurns the Google Tag Manager event sending on or offoff. When on, RepairPlugin sends structured events at each step of the booking form. When off, no events are sentNothing visible. The events are sent in the background and picked up by your tracking tools.
GTM Script Already LoadedTells RepairPlugin whether the Google Tag Manager script is already on the page (loaded by your theme or another plugin). Tip: Not sure if Google Tag Manager is already loaded? Open your website, right-click, choose "View Page Source," and search for gtm.js. If you find it, the script is already loaded.off. When on, RepairPlugin doesn't load the script again. When off, RepairPlugin loads it using the GTM ID you provideNothing visible. This prevents the script from loading twice, which could cause double-counted events.
GTM IDYour Google Tag Manager container ID (format: GTM-XXXXXX)empty. Only shown when GTM Script Already Loaded is off. RepairPlugin uses this to load the Google Tag Manager script on pages where the booking form is activeNothing visible. This enables your Google Tag Manager tags to work on the booking page.

Frequently asked questions

Why aren't my events showing up in Google Tag Manager?

Check these things in order:

  1. Is the integration turned on? Go to Settings > Webhooks & Integrations > Google Tag Manager and verify the toggle is on.
  2. Did you interact with the form? RepairPlugin only sends events after a customer actually clicks or taps something in the booking form. Simply loading the page doesn't trigger events. This is by design -- it prevents bots and automated page loads from creating false data.
  3. Is your GTM container published? Unpublished changes in Google Tag Manager don't work on your live site.
  4. Is GTM loaded twice? If another plugin or your theme already loads GTM, turn on GTM Script Already Loaded. Loading GTM twice can cause events to be sent to the wrong container or counted twice.
  5. Use GTM Preview mode. In your Google Tag Manager workspace, click Preview and navigate to your booking page. The GTM debug panel shows every dataLayer.push() as it happens -- this is the fastest way to confirm events are firing.

Can I use these events with Google Analytics 4 (GA4)?

Yes, but RepairPlugin sends custom events, not the standard GA4 ecommerce events (purchase, add_to_cart, etc.). To track bookings as GA4 conversions:

  1. Create a Google Analytics: GA4 Event tag in GTM.
  2. Use a Custom Event trigger with the event name booking_finalized.
  3. Map the RepairPlugin fields to GA4 parameters (for example, map total_price to the GA4 value parameter).

If you want full GA4 ecommerce reporting (with item-level data in the GA4 ecommerce reports), you'll need to use a Custom HTML tag in GTM to transform the RepairPlugin event data into GA4's ecommerce format and push it as a second dataLayer event.

What data is included in each event?

Early-step events (like selected_brand or selected_model) include only the selections made so far -- device type, brand, and model. Later events (like selected_repairs and booking_finalized) include the full list of selected repairs with prices, financial totals, coupon info, customer details, and service method. See the data tables above for the exact fields per event.

Does the back button cause duplicate events?

No. RepairPlugin tracks which step the customer is on and doesn't re-fire events when the customer navigates back and forward through the booking form.

Do I need to know Google Tag Manager to use this?

You'll need a basic understanding of Google Tag Manager to set up triggers and tags. RepairPlugin handles sending the events -- but setting up what happens with those events (like tracking conversions in Google Ads or sending data to GA4) is done in the Google Tag Manager workspace.

Command Palette

Search for a command to run...