Guide 154 · Events · GA4 + Tag Manager
Track onboarding with tutorial_begin and tutorial_complete: the two recommended events that make a completion rate
One event cannot measure a funnel: tutorial_begin without tutorial_complete tells you how many people started and nothing about how many finished. The two tutorial events are a recommended pair for onboarding, and this guide builds both as GA4 Event tags — one on the tutorial start, one on the finish — so the completion rate is a number, not a guess.
After the tags are published, a test run through the tutorial shows two events in DebugView: a tutorial_begin event on the first step and a tutorial_complete event on the last, and the Realtime report lists both under Event count by Event name within minutes.
Download the container fragment: the tutorial_begin event container fragment (JSON) (1095 bytes, MD5 6ef294bd752d63ff3a08e4d0de0d7519). It holds one GA4 Event tag — GA4 - tutorial_begin — with a Custom Event trigger that fires when the data layer event equals tutorial_begin. The complete tag is built the same way, with the event name tutorial_complete and its own Custom Event trigger, as step 3 of the trace describes. The Measurement ID is left as G-XXXXXXXXXX for you to replace. Import it from Admin, then Import Container, choosing Merge if the container already has tags.
What you need
- The Google tag already installed through Tag Manager. This guide adds two event tags beside it.
- A tutorial your site can signal at both ends. The pushes run when the visitor starts the first step and when they finish the last step — two signals, not one.
- No parameters to add. Neither tutorial event has a prescribed parameter, so the tags carry the event name alone. If you want to record which tutorial, add a parameter of your own — the adding-a-parameter guide covers that.
The worked example
The test below is forty tutorial starts in one week and twenty-eight finishes. The completion rate is the number this whole setup exists to produce.
| Measure | Count |
|---|---|
| tutorial_begin events (starts) | 40 |
| tutorial_complete events (finishes) | 28 |
| Starts without a finish | 12 |
| Completion rate | 28 / 40 = 70.00% |
| Drop-off rate | 12 / 40 = 30.00% |
Those figures were recomputed here before publication: 40 minus 28 is 12 starts without a finish; 28 divided by 40 is 0.7, so the completion rate is 70.00%; 12 divided by 40 is 0.3, so the drop-off rate is 30.00%. The data layer pushes that carry the two ends are the standard form:
dataLayer.push({ event: "tutorial_begin" });
dataLayer.push({ event: "tutorial_complete" });
The trace
- Push tutorial_begin on the first step. When the visitor starts the tutorial, run
dataLayer.push({ event: "tutorial_begin" }). The event name istutorial_begin, exactly as Google spells it. - Push tutorial_complete on the last step. When the visitor finishes the last step, run
dataLayer.push({ event: "tutorial_complete" }). The event name istutorial_complete, exactly as Google spells it. - Add the two GA4 Event tags. Go to Tags, then click New. Name the first
GA4 - tutorial_begin. In Tag Configuration, choose tag type Google Analytics: GA4 Event. Enter your Measurement ID. In Event Name, entertutorial_begin. Leave the Event Parameters empty. Save, then repeat forGA4 - tutorial_completewith Event Nametutorial_complete. - Set the two triggers. For the begin tag, choose a Custom Event trigger with Event Name
tutorial_beginand All Custom Events. For the complete tag, choose a Custom Event trigger with Event Nametutorial_completeand All Custom Events. Two tags, two triggers: a shared trigger sends one start as both events. - Check them in Preview and DebugView. Click Preview, enter the site URL, and click Connect. Run through the tutorial. In Tag Assistant, the
tutorial_beginevent appears on the first step with its tag under Tags Fired, and thetutorial_completeevent appears on the last step with its tag under Tags Fired. Then open DebugView (Admin, then Data display, then DebugView) and confirm both events show. - Publish them as a version. Click Submit at the top right, select Publish and Create Version, name the version, and click Publish.
Dead ends
DEAD END — ONLY THE BEGIN TAG EXISTS. A funnel with one end is a count of starts. Without the complete tag there is no completion rate to report, and the begin count reads as success when it is only intent.
DEAD END — THE COMPLETE TAG FIRES ON THE FIRST STEP. If the complete push runs when the tutorial loads instead of when it finishes, every start is also a finish and the completion rate is 100% forever. The complete push belongs on the last step or the finish action, nowhere else.
DEAD END — RESTARTS COUNT AS NEW BEGINS. A visitor who restarts the tutorial fires tutorial_begin again, so the begin count can exceed the number of people who ever started. That is correct behaviour for an event count — the Events report counts events, not people — and the event-count-versus-users guide explains how to read it.
End state
Two tags, two triggers, no parameters. A run through the tutorial shows both events in DebugView within a minute, in Realtime within minutes of publishing, and in the Events report within 24 hours, where the completion rate is the complete count divided by the begin count. If the drop-off is the problem, add a parameter that records the step where the visitor left — the adding-a-parameter guide covers that.
Sources
- Analytics Help — [GA4] Recommended events — tutorial_begin and tutorial_complete are recommended events for all properties; they are sent when a user begins and completes a tutorial during an on-boarding process
- Google Analytics developer documentation — GA4 event reference — the tutorial_begin and tutorial_complete events
- Tag Manager Help — Set up Google Analytics events in Tag Manager — the GA4 Event tag, the Measurement ID, the event name, the trigger, and Preview verification
- Analytics Help — Monitor events in DebugView — Admin, then Data display, then DebugView
Checked 11 November 2026. The click paths above are the ones in Google's help and developer pages, opened 11 November 2026. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. What was run: the container fragment was validated structurally in Python 3.12.3 — export format version 2, unique IDs, the tag's firing trigger resolves to the Custom Event trigger in the file — and the worked example was recomputed: 40 - 28 = 12 unfinished starts; 28 / 40 = 70.00% completion; 12 / 40 = 30.00% drop-off. The second tag, GA4 - tutorial_complete, is built the same way as the fragment's tag and is described step by step in the trace; the fragment carries the begin tag so the import stays a single-tag template. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.