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

# Server-side tracking

> Learn how to track conversion events with Dub using server-side tracking.

> [!TIP]
>
> This feature is only available on [Business plans and
> above](https://dub.co/pricing).

Dub's powerful [attribution platform](/docs/concepts/attribution) lets you understand how well your links are translating to actual users and revenue dollars.

![Conversion analytics](https://assets.dub.co/blog/introducing-dub-conversions.webp)

In this guide, we'll learn how to track conversion events with Dub using server-side tracking.

> [!NOTE]
>
> The recommended way to track conversions on Dub is using server-side tracking, which is more reliable than [client-side tracking](/docs/quickstart/client).

> [!NOTE]
>
> Want to test your setup before going live? Use a [staging
> workspace](/docs/testing) to track test events without affecting your
> production analytics.

## Step 1: Enable conversion tracking for your links

First, you'll need to enable conversion tracking for your Dub links to be able to start tracking conversions:

> [!TIP]
>
> If you're using [Dub Partners](https://dub.co/partners), you can skip this
> step since partner links will have conversion tracking enabled by default.

> **Option 1: On a workspace-level**
>
> To enable conversion tracking for all future links in a workspace, you can do the following:
> To enable conversion tracking for all future links in a workspace, you can do the following:
>
> 1. Navigate to your [workspace's Tracking settings page](https://app.dub.co/settings/tracking).
> 2. Toggle the **Workspace-level Conversion Tracking** switch to enable conversion tracking for the workspace.
>
> ![Enabling conversion tracking for a workspace](https://mintcdn.com/dub/JTHh2SZNiQ9ZNd5J/images/conversions/enable-conversion-tracking-workspace.png?fit=max\&auto=format\&n=JTHh2SZNiQ9ZNd5J\&q=85\&s=5c6d1068052e70f2bce9be3ed8af4b0d)
>
> This option will enable conversion tracking in the [Dub Link Builder](/help/article/dub-link-builder) for all future links.

> **Option 2: On a link-level**
>
> If you don't want to enable conversion tracking for all your links in a workspace, you can also opt to enable it on a link-level.
>
> To enable conversion tracking for a specific link, open the [Dub Link Builder](/help/article/dub-link-builder) for a link and toggle the **Conversion Tracking** switch.
>
> ![Enabling conversion tracking for a link](https://mintcdn.com/dub/F9cdc9nB_SI4yl65/images/conversions/enable-conversion-tracking.png?fit=max\&auto=format\&n=F9cdc9nB_SI4yl65\&q=85\&s=4153d4a981e2a13324464ca3d30625cd)
>
> > [!TIP]
> >
> > You can also use the `C` keyboard shortcut when inside the link builder to
> > quickly enable conversion tracking for a given link.

> **Option 3: Via the API**
>
> Alternatively, you can also enable conversion tracking programmatically via the [Dub API](/docs/api-reference/introduction). All you need to do is pass `trackConversion: true` when creating or updating a link:
>
> ```javascript Node.js theme={null}
> const link = await dub.links.create({
>   url: "https://dub.co",
>   trackConversion: true,
> });
> ```
>
> ```python Python theme={null}
> link = d.links.create(url="https://dub.co", track_conversion=True)
> ```
>
> ```go Go theme={null}
> link, err := d.Links.Create(ctx, &dub.CreateLinkRequest{
>     URL: "https://dub.co",
>     TrackConversion: true,
> })
> ```
>
> ```ruby Ruby theme={null}
> s.links.create_many(
>   ::OpenApiSDK::Operations::CreateLinkRequest.new(
>     url: "https://dub.co",
>     track_conversion: true,
>   )
> )
> ```

## Step 2: Install the Dub Analytics script

Next, you'll need to install the [Dub Analytics script](/docs/sdks/client-side/introduction).

This script detects the `dub_id` query parameter and storing it as a first-party cookie, which will be used to attribute subsequent conversion events to the original link.

![A diagram showing how click events are tracked in the conversion funnel](https://assets.dub.co/help/conversion-click-event.png)

You can install the Dub Analytics script in several different ways:

> **[React](/docs/sdks/client-side/installation-guides/react)**

> **[Manual installation](/docs/sdks/client-side/installation-guides/manual)**

> **[Framer](/docs/sdks/client-side/installation-guides/framer)**

> **[Shopify](/docs/sdks/client-side/installation-guides/shopify)**

> **[WordPress](/docs/sdks/client-side/installation-guides/wordpress)**

> **[Webflow](/docs/sdks/client-side/installation-guides/webflow)**

> **[Google Tag Manager](/docs/sdks/client-side/installation-guides/google-tag-manager)**

> [!TIP]
>
> You can **verify the installation** with the following tests:
>
> 1. Open the browser console and type in `_dubAnalytics` – if the script is installed correctly, you should see the `_dubAnalytics` object in the console.
> 2. Add the `?dub_id=test` query parameter to your website URL and make sure that the `dub_id` cookie is being set in your browser.
>
> If both of these checks pass, the script is installed correctly. Otherwise, please make sure:
>
> * The analytics script was added to the `<head>` section of the page
> * If you're using a content delivery network (CDN), make sure to purge any cached content

## Step 3: Install the Dub server-side SDK

Depending on which framework you're using, you can use our [native SDKs](/docs/sdks/overview) to track conversion events:

> **[TypeScript](/docs/sdks/typescript)**
>
> TypeScript library for the Dub API

> **[Go](/docs/sdks/go)**
>
> Go library for the Dub API

> **[Python](/docs/sdks/python)**
>
> Python library for the Dub API

> **[Ruby](/docs/sdks/ruby)**
>
> Ruby library for the Dub API

> **[PHP](/docs/sdks/php)**
>
> PHP library for the Dub API

If you're using a framework that isn't listed, you can use the Dub REST API to track events on the server-side:

* [`POST /track/lead`](/docs/api-reference/track/lead)
* [`POST /track/sale`](/docs/api-reference/track/sale)

## Step 4: Track conversion events

Now comes the fun part – tracking conversion events.

### Tracking lead events

The first event you'll want to track is a `lead` event. This 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

![A diagram showing how lead events are tracked in the conversion funnel](https://assets.dub.co/help/conversion-lead-event.png)

Our most common lead event is `Sign Up`, which happens when a user signs up for an account. Depending on which authentication framework you're using, here are a few examples of how to send `Sign Up` lead events:

> **[Clerk](https://dub.co/docs/conversions/leads/clerk)**

> **[Better Auth](https://dub.co/docs/conversions/leads/better-auth)**

> **[NextAuth.js](https://dub.co/docs/conversions/leads/next-auth)**

> **[Supabase](https://dub.co/docs/conversions/leads/supabase)**

> **[Auth0](https://dub.co/docs/conversions/leads/auth0)**

> **[Appwrite](https://dub.co/docs/conversions/leads/appwrite)**

The lead event will serve as the source of truth for the customer's identity and which link they came from. This means that all subsequent actions performed by the customer (e.g. upgrading their plan, purchasing a product) will automatically be attributed to the original link.

### Tracking sale events

The second event you'll want to send is a `sale` event. This happens when a user purchases your product or service. This could be anything from:

* Subscribing to a paid plan
* Usage expansion (upgrading from one plan to another)
* Purchasing a product

![A diagram showing how sale events are tracked in the conversion funnel](https://assets.dub.co/help/conversion-sale-event.png)

Depending on which payment processor you're using, we offer native integrations for the following:

> **[Stripe](https://dub.co/docs/integrations/stripe)**

> **[Shopify](https://dub.co/docs/integrations/stripe)**

Alternatively, you can also send sale events manually using [our SDKs](/docs/sdks/overview) or the [`POST /track/sale` API endpoint](/docs/api-reference/track/sale).

> [!TIP]
>
> Looking to track sales without a prior lead event? Check out our [direct sale
> tracking guide](/docs/conversions/sales/direct).
>
> Looking to track refunds? Check out our [refunds tracking guide](/docs/conversions/sales/refunds).

## Step 5: 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.dub.co/analytics). We provide 3 different views to help you understand your conversions:

* **Time-series**: A [time-series view](https://app.dub.co/dub/analytics?view=timeseries) of the number clicks, leads and sales.

![Time-series line chart](https://mintcdn.com/dub/F9cdc9nB_SI4yl65/images/conversions/timeseries-chart.png?fit=max\&auto=format\&n=F9cdc9nB_SI4yl65\&q=85\&s=7380bc6120ade538b2b65eefdc76d3ed)

* **Funnel chart**: A [funnel chart view](http://app.dub.co/analytics?view=funnel) visualizing the conversion & dropoff rates across the different steps in the conversion funnel (clicks → leads → sales).

![Funnel chart view showing the conversion & dropoff rates from clicks → leads → sales](https://mintcdn.com/dub/F9cdc9nB_SI4yl65/images/conversions/funnel-chart.png?fit=max\&auto=format\&n=F9cdc9nB_SI4yl65\&q=85\&s=6275caafcfc3be6d8b498149222f225e)

* **Real-time events stream**: A [real-time events stream](https://app.dub.co/events) of every single conversion event that occurs across all your links in your workspace.

![The Events Stream dashboard on Dub](https://mintcdn.com/dub/F9cdc9nB_SI4yl65/images/conversions/events-table.png?fit=max\&auto=format\&n=F9cdc9nB_SI4yl65\&q=85\&s=c2467f9fa2e755f06b3e7b147fa0bd81)

## Example Apps

> **[Dub conversion tracking demo](https://github.com/dubinc/examples/tree/main/conversions/stripe)**
>
> Tracking Stripe sale events with Dub.

> **[Segment + Dub demo app](https://github.com/dubinc/examples/tree/main/conversions/segment)**
>
> Tracking conversion events with Segment and Dub.

> **[Clerk + Dub demo app](https://github.com/dubinc/examples/tree/main/conversions/clerk)**
>
> Tracking Clerk signup events with Dub.

> **[Cal.com + Dub demo app](https://github.com/dubinc/examples/tree/main/conversions/cal)**
>
> Tracking Cal.com booking events with Dub.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.