📈Adding Segment to Webflow

How to add Segment to a Webflow site to track button clicks

Once you have added a Source and a Destination on your Segment account, follow the next steps:

Step 1: Add custom code on the <head> of the project

Go to Connections > Sources and select your Source, here you will find your snippet. Copy and paste it on the head of your project.

Sample snippet:

<script>
  !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="YOUR_KEY";analytics.SNIPPET_VERSION="4.13.2";
  analytics.load("YOUR_KEY");
  analytics.page();
  }}();
</script>

Step 2: Add attributes to your buttons

Add custom attributes to the buttons you want to track for the data you want to receive (e.g. action, position, page, etc.)

Sample custom attributes:

  • data-analytics = "Clicked Book Demo"

  • data-property-position = "Top"

  • data-property-pageName = "Home"

<script>
$(document).ready(function() {
	$('[data-analytics]').on('click', function(e) {
		var properties
		var event = $(this).attr('data-analytics')
		$.each(this.attributes, function(_, attribute) {
			if (attribute.name.startsWith('data-property-')) {
				if (!properties) properties = {}
				var property = attribute.name.split('data-property-')[1]
				properties[property] = attribute.value
			}
		})
		analytics.track(event, properties)
	})
})

</script>

Step 4: Test that the data is coming through

This is what should be received when a button is clicked with the sample attributes:

Last updated

Was this helpful?