--- title: Event tracking with Headless (CSR) slug: p3qc4311 canonical_url: https://docs.coveo.com/en/p3qc4311/ collection: coveo-for-commerce source_format: adoc --- # Event tracking with Headless (CSR) It's crucial that you track [touchpoints](https://docs.coveo.com/en/o6ha0421/) to analyze [storefront](https://docs.coveo.com/en/p33g0410/) performance, create reports, and power [Coveo Machine Learning (Coveo ML)](https://docs.coveo.com/en/188/) [models](https://docs.coveo.com/en/1012/). You can do this by sending events to the [Coveo Analytics](https://docs.coveo.com/en/182/) service. If you use [Coveo Headless](https://docs.coveo.com/en/lcdf0493/) to build your [product discovery solutions](https://docs.coveo.com/en/o9cf0524/), track events using dedicated Headless controllers. These controllers automatically log specific commerce events, such as when a user makes a purchase or adds a product to a cart. Headless commerce controllers rely on the [Event Protocol](https://docs.coveo.com/en/o9je0592/) to log events. The following table shows the types of events to track and the corresponding controllers. [%header,cols="2*"] |=== |Event |Tracking controller |[Click](https://docs.coveo.com/en/o1n92447/) |[Use the `InteractiveProduct` controller to track clicks in product lists](https://docs.coveo.com/en/o8ce0239#displaying-lists-of-products). |[Product view](https://docs.coveo.com/en/o1n93101/) |[Use the `ProductView` controller to log view events when users navigate to a PDP](https://docs.coveo.com/en/o8ce0239#displaying-a-product-on-a-product-detail-page). |[Cart](https://docs.coveo.com/en/o1n93466/) |[Use the `Cart` controller to update cart state when products are added or removed](https://docs.coveo.com/en/o7v87042#modify-the-cart-state-on-user-interaction). |[Purchase](https://docs.coveo.com/en/o1n93059/) |[Use the `Cart` controller to submit a purchase after a transaction is completed](https://docs.coveo.com/en/o7v87042#modify-the-cart-state-on-user-interaction). |===