Skip to main content

Tawk.to Chat GTM Event Listener

Track Tawk.to live chat interactions in Google Tag Manager. Monitor chat start, messages, agent status, form submissions. Capture chatSessionId and chatInteraction.

tawk-totawktochatgtmga4supportfree-chat

Event fired

tawkto_Interactions

Tawk.to Chat

Overview

Tawk.to is a free live chat solution used by millions of websites. This listener hooks into Tawk.to's JavaScript API to track chat initiation, messages, agent status changes, form submissions, and chat ratings.

Event fired: tawkto_Interactions

Variables:

  • chatInteraction, interaction type
  • chatSessionId, unique session ID

Common Use Cases

  • Track chat engagement on support-heavy websites
  • Measure pre-chat form submissions
  • Monitor agent availability impact on engagement
  • Build retargeting audiences from chat users

Tracked Events

chatInteraction ValueTrigger
chat initiatedVisitor starts chat
chat startedChat session begins
message sentVisitor sends message
message receivedAgent replies
pre-chat form submittedPre-chat form completed
offline form submittedOffline form submitted
chat endedSession closed
chat ratedVisitor submits rating
agent status onlineAgent goes online
agent status offlineAgent goes offline

Installation

html
<!-- GTM Custom HTML Tag: Tawk.to Listener -->
<script>
(function() {
  function tawkPush(action, extra) {
    var api = window.Tawk_API || {};
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push(Object.assign({
      'event': 'tawkto_Interactions',
      'chatInteraction': action,
      'chatSessionId': typeof api.getSessionId === 'function' ? api.getSessionId() : ''
    }, extra || {}));
  }

  var tawkInit = function() {
    var api = window.Tawk_API;
    if (!api) return;
    api.onChatInitiated = function() { tawkPush('chat initiated'); };
    api.onChatStarted = function() { tawkPush('chat started'); };
    api.onChatMessageVisitor = function() { tawkPush('message sent'); };
    api.onChatMessageAgent = function() { tawkPush('message received'); };
    api.onChatMessageSystem = function() {};
    api.onAgentJoinChat = function() {};
    api.onPrechatSubmit = function(data) { tawkPush('pre-chat form submitted', { chatFormData: data }); };
    api.onOfflineSubmit = function(data) { tawkPush('offline form submitted', { chatFormData: data }); };
    api.onChatEnded = function() { tawkPush('chat ended'); };
    api.onRating = function(status) { tawkPush('chat rated', { chatRating: status }); };
    api.onStatusChange = function(status) {
      tawkPush(status === 'online' ? 'agent status online' : 'agent status offline');
    };
  };

  window.Tawk_API = window.Tawk_API || {};
  window.Tawk_API.onLoad = function() { tawkInit(); };
  if (window.Tawk_API && window.Tawk_API.onLoad) tawkInit();
})();
</script>

Fire on: All Pages (DOM Ready).

Data Layer Output

json
{
  "event": "tawkto_Interactions",
  "chatInteraction": "pre-chat form submitted",
  "chatSessionId": "session_abc123",
  "chatFormData": { "name": "Jane", "email": "jane@example.com" }
}

Trigger Configuration

Trigger Type: Custom Event Event Name: tawkto_Interactions

For conversion tracking only:

Condition: DLV – Chat Interaction | matches RegEx | chat (initiated|started)

GA4 Mapping

GA4 EventConditionParameters
chat_widget_openchat initiatedchat_platform: "tawkto"
generate_leadpre-chat form submittedchat_platform

Related Listeners