Vidyard GTM Event Listener
Track Vidyard video interactions in GTM. Monitor play, pause, seek, milestones, and completion with videoAction, videoLabel, and videoDuration variables.
vidyardvideogtmga4b2b-salescontent-marketing
Event fired
vidyardInteractionKey variable
videoActionVidyard
Overview
Vidyard is a video platform built for B2B sales and marketing, with features like personalized videos, viewer identification, and CRM integrations. This listener uses Vidyard's Player API to track comprehensive video engagement events.
Event fired: vidyardInteraction
Variables: videoAction, videoLabel, videoDuration, videoCurrentTime, videoId
Common Use Cases
- Track sales video engagement (demos, proposals)
- Fire lead events when prospects watch 75%+ of a sales video
- Build Google Ads audiences of video viewers for follow-up campaigns
- Combine with Calendly for full demo-to-booking funnel tracking
Tracked Events
| videoAction | Description |
|---|---|
play | Video starts |
pause | Video paused |
seek | Viewer jumps to position |
end | Video completes |
25% | 25% watched |
50% | 50% watched |
75% | 75% watched |
90% | 90% watched |
Installation
html
<!-- GTM Custom HTML Tag: Vidyard Listener -->
<script>
(function() {
var milestonesHit = {};
function vidyardPush(action, player) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'vidyardInteraction',
'videoAction': action,
'videoLabel': player.metadata && player.metadata.chapters_attributes
? player.metadata.chapters_attributes[0].video_attributes.title
: player.uuid,
'videoDuration': player.metadata && player.metadata.duration_in_seconds,
'videoId': player.uuid
});
}
var initVidyard = function() {
if (typeof window.VidyardV4 === 'undefined') return;
VidyardV4.api.getPlayersByUUID('*').forEach(function(player) {
var key = player.uuid;
milestonesHit[key] = {};
player.on('play', function() { vidyardPush('play', player); });
player.on('pause', function() { vidyardPush('pause', player); });
player.on('seek', function() { vidyardPush('seek', player); });
player.on('playerComplete', function() { vidyardPush('end', player); });
player.on('timeupdate', function(currentTime) {
var duration = player.metadata && player.metadata.duration_in_seconds;
if (!duration) return;
var pct = Math.round((currentTime / duration) * 100);
[25, 50, 75, 90].forEach(function(m) {
if (pct >= m && !milestonesHit[key][m]) {
milestonesHit[key][m] = true;
vidyardPush(m + '%', player);
}
});
});
});
};
if (window.VidyardV4) {
VidyardV4.api.addReadyListener(initVidyard);
}
})();
</script>Data Layer Output
json
{
"event": "vidyardInteraction",
"videoAction": "75%",
"videoLabel": "Enterprise Demo 2024",
"videoDuration": 240,
"videoId": "abc123-uuid"
}Trigger Configuration
Trigger: Custom Event | vidyardInteraction
Variables to Capture
| Variable Name | DL Key | Example |
|---|---|---|
| DLV – Vidyard Action | videoAction | "75%" |
| DLV – Vidyard Label | videoLabel | "Enterprise Demo 2024" |
| DLV – Vidyard Duration | videoDuration | 240 |
| DLV – Vidyard ID | videoId | "abc123-uuid" |
GA4 Mapping
| GA4 Event | Condition | Parameters |
|---|---|---|
video_start | videoAction = play | video_title, video_provider: "vidyard" |
video_progress | videoAction matches 25|50|75% | video_percent |
video_complete | videoAction = end | video_title |
Best Practices
- Use Vidyard's own viewer identification (email capture) alongside this listener for full funnel view
- 75% completion is the standard B2B high-intent threshold, fire conversion events here
- Cross-reference
videoIdwith Vidyard's dashboard for viewer-level analytics