> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codeqr.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Learn how to track lead conversion events with CodeQR Conversions

<Note>
  Conversion tracking require a [Business plan](https://codeqr.io/pricing)
  subscription or higher.
</Note>

When it comes to [conversion tracking](/conversions/quickstart), a `lead` event happens when a user performs an action that indicates interest in your product or service. This could be anything from:

* Signing up for an account
* Adding a product to cart
* Joining a mailing list

<Frame>
  <img className="rounded-lg border border-gray-100" src="https://assets.codeqr.io/help/conversion-lead-event.png" alt="A diagram showing how lead events are tracked in the conversion funnel" />
</Frame>

In this guide, we will be focusing on tracking new user sign-ups for a SaaS application as lead events on CodeQR.

## Prerequisites

Before you get started, make sure you follow the [CodeQR Conversions quickstart guide](/conversions/quickstart) to get CodeQR Conversions set up for your links:

1. [Enable conversion tracking for your links](/conversions/quickstart#step-1-enable-conversion-tracking-for-your-links)
2. [Install the @codeqr/analytics client-side SDK](/sdks/client-side/introduction)
3. [Install the CodeQR server-side SDK](/conversions/quickstart#step-3-install-the-codeqr-server-side-sdk)

## Configure lead tracking

Depending on which authentication framework you're using, we have a few pre-built guides to help you track lead events when a new user signs up for your SaaS application:

<CardGroup>
  <Card title="Clerk" icon="shield-halved" iconType="solid" href="https://docs.codeqr.io/conversions/leads/clerk" horizontal />

  <Card title="NextAuth.js" icon="shield-halved" iconType="solid" href="https://docs.codeqr.io/conversions/leads/next-auth" horizontal />

  <Card title="Supabase" icon="shield-halved" iconType="solid" href="https://docs.codeqr.io/conversions/leads/supabase" horizontal />

  <Card title="Auth0" icon="shield-halved" iconType="solid" href="https://docs.codeqr.io/conversions/leads/auth0" horizontal />

  <Card title="Appwrite" icon="shield-halved" iconType="solid" href="https://docs.codeqr.io/conversions/leads/appwrite" horizontal />
</CardGroup>

<Tip>
  If you're using the [Remix framework](https://remix.run/), you might run into an [issue](https://github.com/remix-run/remix/discussions/7922) where you get an empty/null value for the `cq_id` cookie. In that case, try using a library like [`cookie`](https://github.com/jshttp/cookie) instead:

  ```typescript theme={null}
  import cookie from "cookie";

  const cookies = cookie.parse(request.headers.get("cookie") ?? "");
  const codeqrId = cookies.cq_id;
  ```
</Tip>

If you're not using any of the frameworks listed above, you can use the following steps to track lead events:

1. Within the sign-up API request, retrieve the `cq_id` cookie that was created by the [`@codeqr/analytics` client-SDK](/sdks/client-side/introduction).
2. Send an event to the CodeQR API with the `cq_id` value, as well as your customer's ID and any other relevant information (email, name, avatar, etc.)

<Tip>
  If you don't have a customer ID, you can also use the customer's `email`
  instead.
</Tip>

## Code examples

Here are some examples of how you can track lead events using our [native SDKs](/sdks/overview):

<CodeGroup>
  ```javascript Node.js theme={null}
  import CodeQR from "@codeqr/ts";

  const codeqr = new CodeQR();

  const codeqrId = req.cookies["cq_id"];
  if (codeqrId) {
    await codeqr.track.lead({
      clickId: codeqrId,
      eventName: "Sign Up",
      externalId: customer.id,
      customerName: customer.name,
      customerEmail: customer.email,
      customerAvatar: customer.avatar,
    });
    // delete the cq_id cookie
    res.cookies.set("cq_id", "", {
      expires: new Date(0),
    });
  }
  ```
</CodeGroup>

Here's the full list of attributes you can pass when sending a lead event:

| Property         | Required | Description                                                                                                              |
| :--------------- | :------- | :----------------------------------------------------------------------------------------------------------------------- |
| `clickId`        | **Yes**  | The unique `cq_id` parameter that the lead conversion event is attributed to.                                            |
| `eventName`      | **Yes**  | The name of the event. Example: "Sign up".                                                                               |
| `externalId`     | **Yes**  | The unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer. |
| `customerEmail`  | No       | The email address of the customer. If not passed, a random email address will be generated.                              |
| `customerName`   | No       | The name of the customer. If not passed, a random name will be generated (e.g. "Big Red Caribou").                       |
| `customerAvatar` | No       | The avatar URL of the customer. If not passed, a random avatar URL will be generated.                                    |

## View your conversions

Once you've enabled conversion tracking for your links, all your tracked conversions will show up on your [Analytics dashboard](https://app.codeqr.io/analytics). We provide 3 different views to help you understand your conversions:

* **Time-series**: A [time-series view](https://codeqr.io/help/article/codeqr-analytics#1-time-series-analytics-chart) of the number clicks, leads and sales.

<Frame>
  <img src="https://mintcdn.com/codeqr/Dit-PkrrSHQLOViA/images/conversions/timeseries-chart.png?fit=max&auto=format&n=Dit-PkrrSHQLOViA&q=85&s=c7bac376603cd71f967f5f7b33f3cadc" alt="Time-series line chart" width="1600" height="900" data-path="images/conversions/timeseries-chart.png" />
</Frame>

* **Funnel chart**: A funnel chart view visualizing the conversion & dropoff rates across the different steps in the conversion funnel (clicks → leads → sales).

<Frame>
  <img src="https://mintcdn.com/codeqr/Dit-PkrrSHQLOViA/images/conversions/funnel-chart.png?fit=max&auto=format&n=Dit-PkrrSHQLOViA&q=85&s=001b9b2dad0f759c4031d81122069a75" alt="Funnel chart view showing the conversion & dropoff rates from clicks → leads → sales" width="1600" height="900" data-path="images/conversions/funnel-chart.png" />
</Frame>

* **Real-time events stream**: A [real-time events stream](https://codeqr.io/help/article/real-time-events-stream) of every single conversion event that occurs across all your links in your project.

<Frame>
  <img src="https://mintcdn.com/codeqr/Dit-PkrrSHQLOViA/images/conversions/events-table.png?fit=max&auto=format&n=Dit-PkrrSHQLOViA&q=85&s=93b55a350e472e6d7fbafa7e082bbc69" alt="The Events Stream dashboard on CodeQR" width="1600" height="900" data-path="images/conversions/events-table.png" />
</Frame>
