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_InteractionsTawk.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 typechatSessionId, 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 Value | Trigger |
|---|---|
chat initiated | Visitor starts chat |
chat started | Chat session begins |
message sent | Visitor sends message |
message received | Agent replies |
pre-chat form submitted | Pre-chat form completed |
offline form submitted | Offline form submitted |
chat ended | Session closed |
chat rated | Visitor submits rating |
agent status online | Agent goes online |
agent status offline | Agent 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 Event | Condition | Parameters |
|---|---|---|
chat_widget_open | chat initiated | chat_platform: "tawkto" |
generate_lead | pre-chat form submitted | chat_platform |