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.
Bijgewerkt op: 12/02/2026
Dankuwel!