Lesson 14 of 17
Multi-Step Form Progress
① Connect your GTM container
Paste your container ID to load it into this page. It only ever runs here.
Advanced: use a specific environment
A multi-step form, a checkout, an onboarding wizard or a long application, hides its real story in the middle. If you only track the final submit, you learn that people finished but never where the rest gave up. The drop-off between steps is where the money is.
To see it, the wizard announces each step as it advances. Every "Next" pushes form_step with a step number, and a Custom Event trigger turns that into a funnel you can chart, step 1 to 2 to 3.
Goal
Fire a tag on each step by listening for the form_step event and capturing the step number.
Build it in GTM
Know what the page pushes
Advancing the wizard runsdataLayer.push({ event: "form_step", step: 2 }). GTM sees the eventform_stepand astepvalue that increments each time.Create the Custom Event trigger
Go to Triggers → New and choose Custom Event. Set Event name toform_step, matching the pushed string exactly.Capture the step number
Add a Data Layer Variable with Data Layer Variable Namestepso you can send it as a parameter and break the funnel down by step.Fire a tag on it
Set the trigger as your tag's firing trigger and map thestepvariable in. On a real site this is a GA4 Event tag; here a Custom HTML tag namedCustom HTML - Testcontaining<script></script>stands in.
Debug in Tag Assistant
Copy this lesson's live URL and paste it into GTM Preview, that is the page Tag Assistant connects to. It has the clickable elements, so this page stays clean for reading.
- In your GTM, click Preview.
- Paste the live URL above and click Connect.
- Interact with the live page and watch your tag fire in Tag Assistant.
What you should expect to see
form_step event fires at each step, your tag shows under Tags Fired, and the step value climbs 1, 2, 3 as you go.Verify your container
Built it? Export your container, Admin → Export Container, choose your workspace, then drop the JSON here to check it against this lesson.
Drop your container .json here
or browse · checked in your browser, nothing is uploaded