Guide 156 · Events · GA4 + Tag Manager
Track video watches with video_start and video_complete: the two recommended events that make a watch rate
A video play count without a completion count cannot tell you whether anyone watched. The video_start and video_complete events are a recommended pair, sharing six prescribed parameters — video_current_time, video_duration, video_percent, video_provider, video_title, and video_url — and this guide builds both as GA4 Event tags so the watch rate is a number, not a guess.
After the tags are published, a test play shows two events in DebugView: a video_start event when playback begins and a video_complete event when it ends, both carrying the video parameters including video_percent.
Download the container fragment: the video events container fragment (JSON) (6698 bytes, MD5 855e9737af98627d76bcd92a8d2fc8c1). It holds one GA4 Event tag named GA4 - video_start, the Custom Event trigger that fires when the data layer event equals video_start, and the six data layer variables for the video parameters. 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 video player your site can signal at both ends. The pushes run on the play event and on the ended event of the player.
- Six values per video event. The prescribed parameters are
video_current_time(seconds played so far),video_duration(total seconds),video_percent(the share watched),video_provider(such asyoutube),video_title, andvideo_url.
The worked example
The test below is one video, 240 seconds long, watched twenty times and finished twelve times. The percent watched is the figure the player computes, and the watch rate is the figure the report computes.
| Measure | Value |
|---|---|
| Video duration | 240 seconds |
| Watched at the checkpoint | 180 seconds |
| Percent watched at the checkpoint | 180 / 240 = 75.00% |
| video_start events (plays) | 20 |
| video_complete events (finishes) | 12 |
| Watch rate | 12 / 20 = 60.00% |
Those figures were recomputed here before publication: 180 divided by 240 is 0.75, so the checkpoint is at 75.00% of the video; 12 divided by 20 is 0.6, so the watch rate is 60.00%. The data layer push that carries the start is the standard form:
dataLayer.push({
event: "video_start",
video_current_time: 0,
video_duration: 240,
video_percent: 0,
video_provider: "youtube",
video_title: "How the checkout works",
video_url: "https://www.youtube.com/watch?v=example"
});
The trace
- Push video_start when playback begins. On the player's play event, run the push above with the real values: current time 0 at the start, the full duration, percent 0, the provider, the title, and the URL. The event name is
video_start, exactly as Google spells it. - Push video_complete when playback ends. On the player's ended event, run the same push with the event name
video_complete, current time equal to the duration, and percent 100. The two pushes differ only in the event name and the three numbers. - Create the six data layer variables. In Tag Manager, go to Variables, then in User-Defined Variables create one Data Layer Variable per parameter:
DLV - video_current_time,DLV - video_duration,DLV - video_percent,DLV - video_provider,DLV - video_title, andDLV - video_url. - Add the two GA4 Event tags. Go to Tags, then click New. Name the first
GA4 - video_start. In Tag Configuration, choose tag type Google Analytics: GA4 Event. Enter your Measurement ID. In Event Name, entervideo_start. Under Event Parameters, add six rows, one per parameter, each with its matching data layer variable. Save, then repeat forGA4 - video_completewith Event Namevideo_completeand the same six parameters. - Set the two triggers. For the start tag, choose a Custom Event trigger with Event Name
video_startand All Custom Events. For the complete tag, choose a Custom Event trigger with Event Namevideo_completeand All Custom Events. - Check them in Preview and DebugView. Click Preview, enter the site URL, and click Connect. Play the video to the end. In Tag Assistant, the
video_startevent appears at the start with its tag under Tags Fired, and thevideo_completeevent appears at the end with its tag under Tags Fired. Then open DebugView (Admin, then Data display, then DebugView) and confirm both events show withvideo_percent0 at the start and 100 at the end. - 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 — AUTOPLAY COUNTS AS A PLAY. A video that starts by itself on page load fires video_start for visitors who never chose to watch. If autoplay is on, the start event measures exposure, not intent — say so in the report, or fire the event on the first unmute or click instead.
DEAD END — VIDEO_PERCENT COMPUTED FROM THE WRONG DURATION. A duration that changes mid-play — an ad inserted, a live stream — makes the percent wrong in both directions. The percent is current time divided by the duration of the same video at the same moment, and both numbers come from the player, not from a fixed value in the tag.
DEAD END — ONLY THE START TAG EXISTS. A play count with no complete count is the same trap as the tutorial pair: it measures starts and calls them watches. The complete tag is half the setup.
End state
Two tags, two triggers, six parameters. A play shows both events in DebugView within a minute, in Realtime within minutes of publishing, and in the Events report within 24 hours, where the watch rate is the complete count divided by the start count. The video_progress event sits between the two and records the 10%, 25%, 50%, 75%, and 90% checkpoints — it is built the same way, with the event name video_progress and the same six parameters.
Sources
- Analytics Help — [GA4] Recommended events — video events are recommended events; video_start and video_complete mark the ends of a watch
- Google Analytics developer documentation — GA4 event reference — the video_start and video_complete events and their prescribed parameters
- 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 all six data layer variable references exist as variables — and the worked example was recomputed: 180 / 240 = 75.00% watched at the checkpoint; 12 / 20 = 60.00% watch rate. The second tag, GA4 - video_complete, is built the same way as the fragment's tag and is described step by step in the trace; the fragment carries the start 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.