> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.chrisp.chat/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 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](https://crisp.chat/en/livechat/) 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.