Skip to main content

Tidio Chat GTM Event Listener

Track Tidio live chat and chatbot interactions in GTM. Monitor widget open/close, messages, email capture, and chatbot interactions with chatAction variable.

tidiochatchatbotecommercegtmga4support

Event fired

Tidio_chat_interaction

Key variable

chatAction

Tidio Chat

Overview

Tidio is a customer service platform combining live chat, chatbots, and email. This listener hooks into Tidio's JavaScript API to track widget interactions and chatbot events.

Event fired: Tidio_chat_interaction Variable: chatAction

Tracked Events

chatActionDescription
chat widget openedVisitor opens widget
chat widget closedVisitor closes widget
message sentVisitor sends message
message receivedAgent/bot replies
email capturedEmail submitted
chatbot triggeredChatbot flow starts
chatbot responseChatbot sends response
pre-chat survey submittedPre-chat form completed
operator joinsLive agent joins

Installation

html
<!-- GTM Custom HTML Tag: Tidio Listener -->
<script>
(function() {
  function tidioPush(action, extra) {
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push(Object.assign({
      'event': 'Tidio_chat_interaction',
      'chatAction': action
    }, extra || {}));
  }

  document.addEventListener('tidioChat-ready', function() {
    tidioChatApi.on('open', function() { tidioPush('chat widget opened'); });
    tidioChatApi.on('close', function() { tidioPush('chat widget closed'); });
    tidioChatApi.on('messageFromVisitor', function(data) {
      tidioPush('message sent', { chatMessage: data.message });
    });
    tidioChatApi.on('messageFromOperator', function(data) {
      tidioPush('message received', { chatMessage: data.message });
    });
    tidioChatApi.on('visitorDataUpdated', function(data) {
      if (data.email) tidioPush('email captured', { visitorEmail: data.email });
    });
    tidioChatApi.on('botStart', function() { tidioPush('chatbot triggered'); });
    tidioChatApi.on('botEnd', function() { tidioPush('chatbot response'); });
    tidioChatApi.on('operatorAssigned', function() { tidioPush('operator joins'); });
    tidioChatApi.on('prechatSurveySubmitted', function() { tidioPush('pre-chat survey submitted'); });
  });
})();
</script>

Data Layer Output

json
{
  "event": "Tidio_chat_interaction",
  "chatAction": "email captured",
  "visitorEmail": "customer@example.com"
}

Trigger Configuration

Trigger Type: Custom Event Event Name: Tidio_chat_interaction

GA4 Mapping

GA4 EventConditionParameters
chat_widget_openchatAction = chat widget openedchat_platform: "tidio"
generate_leadchatAction = email capturedemail

Related Listeners