{"id":6124,"date":"2025-01-12T13:02:40","date_gmt":"2025-01-12T10:02:40","guid":{"rendered":"https:\/\/trackingchef.com\/?p=6124"},"modified":"2025-01-12T13:10:11","modified_gmt":"2025-01-12T10:10:11","slug":"calendly-widget-tracking-with-google-tag-manager","status":"publish","type":"post","link":"https:\/\/trackingchef.com\/google-tag-manager\/calendly-widget-tracking-with-google-tag-manager\/","title":{"rendered":"Calendly widget tracking with Google Tag Manager"},"content":{"rendered":"\n

The Calendly Meeting Scheduler is the industry standard for online meeting coordination. Aside from being the longest running solution, they also were also the first to introduce a proper solution for tracking interactions with their widget so that online marketers could actually report on the.<\/p>\n\n\n\n

In this post I’ll walk through the various options for tracking these conversions in Google Tag Manager.<\/p>\n\n\n\n

Shoutout to the DumbData<\/a> team and Julius Fedorovicius<\/a> for the original iterations of this script.<\/p>\n\n\n\n

\"\"
The Calendly Widget<\/figcaption><\/figure>\n\n\n\n

Calendly widget tracking with Google Tag Manager<\/h2>\n\n\n\n

To track engagement with the widget we need to add a Custom HTML tag with an event listener.<\/p>\n\n\n\n

Create a new tag of the type Custom HTML and paste in the script below.<\/p>\n\n\n\n

<script>\nwindow.dataLayer = window.dataLayer || [];\nwindow.addEventListener('message', function(e) {\n    if (e.data.event && e.data.event.indexOf('calendly') === 0) {\n        var eventParts = e.data.event.split('.');\n        var eventName = eventParts[1];\n        if (eventName !== 'page_height') {\n            window.dataLayer.push({\n                'event': 'calendly_' + eventName\n            });\n        }\n    }\n});\n<\/script><\/code><\/pre>\n\n\n\n

Trigger this tag to fire on All Pages.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n
\n

Pro tip:<\/strong>
This script ignores the page_height event which tracks changes in the height of the Calendly widget. I did this to reduce the noise and the need to exclude it when creating the triggers.<\/p>\n<\/blockquote>\n\n\n\n

Next, create a new trigger of the type Custom Event.<\/p>\n\n\n\n

The event’s name will be calendly_.*<\/code> and toggle on the ‘Use regex matching’ checkbox.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

You can now connect this trigger to any tag in your container.<\/p>\n\n\n\n

A simple GA4 event tag will now look similar to this:<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

The expected event names are:<\/p>\n\n\n\n

    \n
  1. calendly_profile_page_viewed<\/li>\n\n\n\n
  2. calendly_event_type_viewed<\/li>\n\n\n\n
  3. calendly_date_and_time_selected<\/li>\n\n\n\n
  4. calendly_event_scheduled (conversion)<\/li>\n<\/ol>\n\n\n\n

    Congratulations, you’re all set!<\/p>\n\n\n\n

    Tracking Calendly conversions<\/h2>\n\n\n\n

    To track only Calendly conversions (for example for ad platform pixels), simply create a trigger limited only to that event – calendly_event_scheduled<\/code><\/p>\n\n\n\n

    \"\"<\/figure>\n","protected":false},"excerpt":{"rendered":"

    The Calendly Meeting Scheduler is the industry standard for online meeting coordination. Aside from being the longest running solution, they also were also the first to introduce a proper solution for tracking interactions with their widget so that online marketers could actually report on the. In this post I’ll walk through the various options for […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[],"class_list":["post-6124","post","type-post","status-publish","format-standard","hentry","category-google-tag-manager"],"_links":{"self":[{"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/posts\/6124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/comments?post=6124"}],"version-history":[{"count":4,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/posts\/6124\/revisions"}],"predecessor-version":[{"id":6135,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/posts\/6124\/revisions\/6135"}],"wp:attachment":[{"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/media?parent=6124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/categories?post=6124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trackingchef.com\/wp-json\/wp\/v2\/tags?post=6124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}