ZenDesk

From Growth Agency Wiki
Revision as of 10:00, 23 January 2025 by Aaron.trevellick (talk | contribs) (Tracking In Tag Manager)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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)