[object Object]

Freshsales ships a web tracking script that captures sessions, pageviews, source, and UTM parameters. Default install gives you a working dashboard. True attribution requires three additional steps.

Install the script with identify-on-known

The vanilla script tracks anonymous visitors. To stitch sessions to known contacts, call the identify method as soon as you have an email — typically post-signup or post-login.

fwTrack.identify({
  email: "[email protected]",
  firstName: "Jane",
  lastName: "Doe"
});

Pre-identify sessions then merge into the contact record on identify. Without this, your “first touch” is the post-signup pageview, not the original ad click.

UTM persistence

UTM parameters land on the entry page and disappear by page two. Capture them on first visit, store in a cookie, and pass to the identify call so the contact record gets the original campaign.

const utms = {
  utm_source: getCookie("first_utm_source"),
  utm_medium: getCookie("first_utm_medium"),
  utm_campaign: getCookie("first_utm_campaign")
};
fwTrack.identify({ ...userData, ...utms });

Multi-touch modeling

Freshsales’s built-in attribution is last-touch. For multi-touch, export the session log via the API and run the model in your warehouse.

GET /api/web_sessions?contact_id={id}
// Returns ordered session list with source, utm, pages

A common starter model is U-shaped (40% first, 40% last, 20% middle).

Spam and bot filtering

Freshsales does not filter all bot traffic by default. Add a referrer-blocklist in the tracking config and exclude employee IP ranges. Internal pageviews bias every funnel metric.

Cross-domain tracking

If your marketing site and product live on different root domains, configure cross-domain linker so the visitor ID survives the jump. Without it, the post-signup pageview starts a new session.

Privacy compliance

The tracking script sets a first-party cookie. For EU traffic, gate it behind your CMP consent. Most CMPs expose a cookieConsent event you can listen to before calling fwTrack.init.

What to do this week

Add the identify call to your post-signup flow, persist UTMs in a cookie, exclude employee IPs, and gate the script behind your CMP for EU visitors.

[object Object]
Share