Measurement goals
- Revenue: class pack purchases (online sales).
- Leads: intro class bookings.
- Recommended event names were checked against GA4's Recommended events page, https://support.google.com/analytics/answer/9267735, opened 2026-10-29.
- Implementation: Google Tag Manager. PII rule (default): no name, email, phone or full address in any parameter. Your booking form collects name, email and phone, so none of those fields is sent.
Event plan table
| # | Action | Event name | Recommended or custom | Trigger | Parameters (example values are examples) | Key event |
|---|---|---|---|---|---|---|
| 1 | View a studio page | page_view (already firing) | Automatic | Page load | page_location; optional studio_name (example "riverside") | No |
| 2 | View the class schedule | view_schedule | Custom | Schedule page load, or the schedule widget opening | studio_name (example "riverside") | No |
| 3 | Click "Book intro class" | book_intro_click | Custom | Click on the "Book intro class" button | studio_name | No |
| 4 | Submit the booking form | generate_lead | Recommended | Booking form submits successfully (thank you state), not just the button click | studio_name; lead_source: "intro_class" (example). Never name, email or phone. | Yes |
| 5 | View a class pack product page | view_item | Recommended (online sales) | Product page load | currency, value, items (item_id, item_name, example "10 class pack") | No |
| 6 | Add a class pack to cart | add_to_cart | Recommended | Add to cart click succeeds | currency, value, items | No |
| 7 | Start checkout | begin_checkout | Recommended | Checkout page load | currency, value, items | No |
| 8 | Complete purchase | purchase | Recommended | Order confirmation | transaction_id, currency, value, items | Yes |
| 9 | Create an account | sign_up | Recommended | Account created successfully | method (example "email") | No |
| 10 | Log in | login | Recommended | Successful login | method | No |
| 11 | Download the timetable PDF | file_download | Enhanced measurement (automatic, if turned on) | PDF link click | file_name, link_url (sent automatically) | No |
| 12 | Click to call a studio | click_to_call | Custom | Click on a tel: link | studio_name | No |
Key events
Only actions tied to your two goals are key events: 1. purchase (class pack revenue) 2. generate_lead (intro class bookings)
Count: 2. form_submit isn't one, because it fires on every form (see the mapping below).
Custom dimensions to register
| Parameter | Scope | Used by events | Why |
|---|---|---|---|
| studio_name | Event | view_schedule, book_intro_click, generate_lead, click_to_call, optionally page_view | Compare studios in reports |
| lead_source | Event | generate_lead | Separate intro class leads from any future lead types |
Count: 2. Item parameters on ecommerce events (item_name and others) appear in ecommerce reports without registration.
Existing events mapping
| Existing event | Action | Reason |
|---|---|---|
| page_view | Keep | Automatic; it covers studio page views. |
| form_submit (fires on every form) | Keep, but don't mark it as a key event | It can't tell bookings from other forms. generate_lead replaces it for bookings. |
| Purchase (capital P, from the old site) | Stop sending it and use purchase | GA4 event names are case sensitive, so "Purchase" and "purchase" are separate events. Past data stays under "Purchase" and won't merge. Note the switch date for anyone comparing periods. |
QA checklist
Test each event in GTM Preview with Tag Assistant, then confirm it in GA4 DebugView.
| # | How to trigger | What DebugView should show | PII check | Pass/fail |
|---|---|---|---|---|
| 2 | Open the schedule | view_schedule with studio_name | No PII | |
| 3 | Click "Book intro class" | book_intro_click with studio_name | No PII | |
| 4 | Submit a test booking | generate_lead with studio_name and lead_source, once per submit | No name, email or phone in any parameter or in page_location | |
| 5 to 7 | View a pack, add it to cart, start checkout | view_item, add_to_cart, begin_checkout with items, value, currency | No PII | |
| 8 | Place a test order | purchase with a unique transaction_id, value, currency, items | No email in any parameter | |
| 9, 10 | Create an account, log out, log in | sign_up and login with method | No email | |
| 11 | Click the timetable PDF | file_download | n/a | |
| 12 | Click a phone link | click_to_call with studio_name | No phone number in a parameter |
Also check that the booking confirmation URL doesn't put form values in the query string. If it does, page_location would send PII.
Needs your decision
- The analytics owner approves marking purchase and generate_lead as key events.
- Approve publishing the GTM container version.
- Confirm the switch date from "Purchase" to "purchase".
- Tell me whether studio pages should send studio_name on page_view.