Last active
July 15, 2016 15:08
-
-
Save greggnakamura/0fb8205a33531a9877830f7fe9204837 to your computer and use it in GitHub Desktop.
GA: YouTube event tracking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- | |
https://megalytic.com/blog/tracking-youtube-videos-using-google-analytics | |
Key elements in iframe are 'id' & 'enablejsapi' & 'origin' source parameter values | |
--> | |
<iframe allowfullscreen="" data-title="Descriptive title" frameborder="0" height="152" id="youTubePlayer" src="http://www.youtube.com/embed/<YOUTUBEID>?enablejsapi=1&origin=http://www.YOURWEBSITE.com&rel=0&showinfo=0" width="100%"></iframe> | |
<script> | |
// get descriptive title | |
var iframeEl = document.getElementById('youTubePlayer'); | |
var youTubeTitle = iframeEl.dataset.title; | |
// load IFrame Player API code | |
var tag = document.createElement('script'); | |
tag.src = "http://www.youtube.com/iframe_api"; | |
var firstScriptTag = document.getElementsByTagName('script')[0]; | |
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag) | |
var pauseFlag = false; | |
// This code is called by the YouTube API to create the player object | |
function onYouTubeIframeAPIReady(event) { | |
player = new YT.Player(iframeEl, { | |
events: { | |
// fires when player is ready | |
'onReady': onPlayerReady, | |
// fires when player is started, paused, or finishes, etc. | |
// https://developers.google.com/youtube/iframe_api_reference#Playback_status | |
'onStateChange': onPlayerStateChange | |
} | |
}); | |
} | |
function onPlayerReady(event) { | |
// do nothing, no tracking needed | |
} | |
function onPlayerStateChange(event) { | |
// track when user clicks to Play | |
if (event.data == YT.PlayerState.PLAYING) { | |
ga("send", "event", "YOUR CATEGORY", "YOUR ACTION", youTubeTitle); | |
pauseFlag = true; | |
} | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment