Articles on: Developers

How to push Crisp Chat events to a product analytics software like Mixpanel, Posthog or Amplitude?

When a customer or a lead starts a chat with your team, that moment is more than just a support touchpoint, it’s a key product signal. Tracking these events in your analytics stack (Posthog, Mixpanel, Amplitude) helps you answer big questions: Do conversations accelerate conversions? Which campaigns drive the most chat activity? How does support volume correlate with retention? This guide shows you how to push Crisp Chat events into your analytics tool with a few lines of JavaScript, so your product and support data live in the same place.


Prerequisites

  • Crisp Chat Widget installed on your website.
  • Analytics SDK loaded (Posthog, Mixpanel, or Amplitude).
  • Access to edit your site <head> code.z


Send Crisp events to Posthog

<script>
// Capture first conversation in Posthog
window.$crisp.push(["on", "message:send", function() {
if (sessionStorage.getItem("ph_crisp_conversation_started")) return;

posthog.capture("crisp_conversation_started", {
source: "crisp",
page: location.pathname + location.search
});

sessionStorage.setItem("ph_crisp_conversation_started", "1");
}]);
</script>


This will create an event named crisp_conversation_started in Posthog, once per session.


Send Crisp events to Mixpanel

<script>
window.$crisp.push(["on", "message:send", function() {
if (sessionStorage.getItem("mp_crisp_conversation_started")) return;

mixpanel.track("crisp_conversation_started", {
source: "crisp"
page: location.pathname + location.search
});

sessionStorage.setItem("mp_crisp_conversation_started", "1");
}]);
</script>


Send Crisp events to Amplitude

<script>
window.$crisp.push(["on", "message:send", function() {
if (sessionStorage.getItem("amp_crisp_conversation_started")) return;

amplitude.getInstance().logEvent("crisp_conversation_started", {
source: "crisp",
page: location.pathname + location.search
});

sessionStorage.setItem("amp_crisp_conversation_started", "1");
}]);
</script>


Best practices

  • Use consistent event names (crisp_conversation_started) across tools.
  • Add extra context (e.g. campaign UTM, Crisp session ID) if useful.
  • Decide if you want sessionStorage (fires once per tab) or localStorage (fires once per browser).
  • Test in Incognito mode to simulate a fresh visitor.


Now every time a conversation starts in Crisp, your analytics software will record it, helping your team measure support impact on product adoption and revenue.

Updated on: 16/09/2025

Was this article helpful?

Share your feedback

Cancel

Thank you!