ZenDesk: Difference between revisions

From Growth Agency Wiki
Jump to navigation Jump to search
Created page with "== Tracking In Tag Manager == ZenDesk has an API for tracking. https://developer.zendesk.com/embeddables/docs/widget/chat To use this, create a custom HTML tag In tag manag..."
 
 
(One intermediate revision by the same user not shown)
Line 15: Line 15:
dataLayer.push({'event' : 'zendesk-' + eventName});
dataLayer.push({'event' : 'zendesk-' + eventName});
}
}


zE('webWidget:on', 'chat:connected', function(){ zendeskDataLayerEvent('connected'); });
zE('webWidget:on', 'chat:connected', function(){ zendeskDataLayerEvent('connected'); });
Line 23: Line 22:
zE('webWidget:on', 'chat:unreadMessages', function(number){ zendeskDataLayerEvent('unread-msg'); });
zE('webWidget:on', 'chat:unreadMessages', function(number){ zendeskDataLayerEvent('unread-msg'); });
zE('webWidget:on', 'chat:end', function(){ zendeskDataLayerEvent('chat-ended'); });
zE('webWidget:on', 'chat:end', function(){ zendeskDataLayerEvent('chat-ended'); });
</script>
</script>
</pre>
</pre>
Line 55: Line 53:
var dataLayer = window.dataLayer || [];
var dataLayer = window.dataLayer || [];
dataLayer.push({'event' : 'zendesk-' + eventName});
dataLayer.push({'event' : 'zendesk-' + eventName});
console.log( 'Datalayer: zendesk-' + eventName );
}
}


var waitForZopim = setInterval(function () {
if (window.$zopim === undefined || window.$zopim.livechat === undefined) {
return;
}
$zopim(function() {
$zopim.livechat.setOnConnected( function() {
zendeskDataLayerEvent('connected');
});
$zopim.livechat.window.onShow( function() {
zendeskDataLayerEvent('on-show');
});
$zopim.livechat.window.onHide( function() {
zendeskDataLayerEvent('on-hide');
});
$zopim.livechat.setOnChatStart( function() {
zendeskDataLayerEvent('chat-started');
});
$zopim.livechat.setOnUnreadMsgs( function() {
zendeskDataLayerEvent('unread-msg');
});
$zopim.livechat.setOnChatEnd( function() {
zendeskDataLayerEvent('chat-ended');
});
});


zE('webWidget:on', 'chat:connected', function(){ zendeskDataLayerEvent('connected'); });
clearInterval( waitForZopim );
zE('webWidget:on', 'open', function(){ zendeskDataLayerEvent('on-show'); });
 
zE('webWidget:on', 'close', function(){ zendeskDataLayerEvent('on-hide'); });
}, 100);
zE('webWidget:on', 'chat:start', function(){ zendeskDataLayerEvent('chat-started'); });
zE('webWidget:on', 'chat:unreadMessages', function(number){ zendeskDataLayerEvent('unread-msg'); });
zE('webWidget:on', 'chat:end', function(){ zendeskDataLayerEvent('chat-ended'); });


</script>
</script>

Latest revision as of 10:00, 23 January 2025

Tracking In Tag Manager

ZenDesk has an API for tracking.

https://developer.zendesk.com/embeddables/docs/widget/chat

To use this, create a custom HTML tag In tag manager and trigger it on any pages the ZenDesk chat runs on.

Add this script to the custom HTML:

<script>
function zendeskDataLayerEvent( eventName ) {
	var dataLayer = window.dataLayer || [];
	dataLayer.push({'event' : 'zendesk-' + eventName});
}

zE('webWidget:on', 'chat:connected', function(){ zendeskDataLayerEvent('connected'); });
zE('webWidget:on', 'open', function(){ zendeskDataLayerEvent('on-show'); });
zE('webWidget:on', 'close', function(){ zendeskDataLayerEvent('on-hide'); });
zE('webWidget:on', 'chat:start', function(){ zendeskDataLayerEvent('chat-started'); });
zE('webWidget:on', 'chat:unreadMessages', function(number){ zendeskDataLayerEvent('unread-msg'); });
zE('webWidget:on', 'chat:end', function(){ zendeskDataLayerEvent('chat-ended'); });
</script>

This sets up the events in the datalayer to be used in triggers:

zendesk-connected
zendesk-on-show
zendesk-on-hide
zendesk-chat-started
zendesk-unread-msg
zendesk-chat-ended
  • note there is no way to track offline form submits (when no one is there to chat)

Legacy

Legacy ZenDesk has an API for tracking.

https://api.zopim.com/files/meshim/widget/controllers/LiveChatAPI-js.html

To use this, create a custom HTML tag In tag manager and trigger it on any pages the ZenDesk chat runs on.

Add this script to the custom HTML:

<script>
function zendeskDataLayerEvent( eventName ) {
	var dataLayer = window.dataLayer || [];
	dataLayer.push({'event' : 'zendesk-' + eventName});
	console.log( 'Datalayer: zendesk-' + eventName );
}

var waitForZopim = setInterval(function () {

	if (window.$zopim === undefined || window.$zopim.livechat === undefined) {
		return;
	}

	$zopim(function() {
		$zopim.livechat.setOnConnected( function() {
			zendeskDataLayerEvent('connected');
		});
		$zopim.livechat.window.onShow( function() {
			zendeskDataLayerEvent('on-show');
		});
		$zopim.livechat.window.onHide( function() {
			zendeskDataLayerEvent('on-hide');
		});
		$zopim.livechat.setOnChatStart( function() {
			zendeskDataLayerEvent('chat-started');
		});
		$zopim.livechat.setOnUnreadMsgs( function() {
			zendeskDataLayerEvent('unread-msg');
		});
		$zopim.livechat.setOnChatEnd( function() {
			zendeskDataLayerEvent('chat-ended');
		});
	});

	clearInterval( waitForZopim );

}, 100);

</script>

This sets up the events in the datalayer to be used in triggers:

zendesk-connected
zendesk-on-show
zendesk-on-hide
zendesk-chat-started
zendesk-unread-msg
zendesk-chat-ended
  • note there is no way to track offline form submits (when no one is there to chat)