> ## Documentation Index
> Fetch the complete documentation index at: https://dub-client-tracking-lead-sale.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Segment

> Learn how to track sale conversion events with Segment and Dub

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

When it comes to [conversion tracking](/conversions/quickstart), a `sale` event happens when a user purchases your product or service. Examples include:

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

In this guide, we will be focusing on tracking sales conversion events for a SaaS application that uses Segment to track conversions.

## Prerequisites

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

1. [Enable conversion tracking for your links](/conversions/quickstart#step-1%3A-enable-conversion-tracking-for-your-links)
2. [Install the @dub/analytics client-side SDK](/sdks/client-side/introduction)

If you’ve already set up the Dub (Actions) destination, you can skip the first two steps and jump straight to the Add Mapping section.

## Configure Segment Action

Next, configure [Segment Dub (Actions)](https://app.segment.com/goto-my-workspace/destinations/catalog/actions-dub) to track sales conversion events.

<Steps>
  <Step title="Add Dub (Actions) destination">
    Head to [Segment Dub (Actions)](https://app.segment.com/goto-my-workspace/destinations/catalog/actions-dub) and add the destination to your Segment workspace.

    <Frame>
      <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/segment/segment-actions.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=fd04c3d20eff31ed791f851f6a82940f" alt="Segment Dub (Actions) destination" width="1440" height="1024" width="2980" height="1604" data-path="images/conversions/segment/segment-actions.png" />
    </Frame>
  </Step>

  <Step title="Configure Dub API Key">
    In the Dub (Actions) destination settings, fill out the following fields:

    * **Name:** Enter a name to help you identify this destination in Segment.
    * **API Key:** Enter your Dub API key. You can find this in the [Dub Dashboard](https://app.dub.co/settings/tokens).
    * **Enable Destination:** Toggle this on to allow Segment to send data to Dub.

    Once completed, click **Save Changes**.

    <Frame>
      <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/segment/segment-basic-settings.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=fc702fc73b817f907b78ce87100cb3ac" alt="Segment Dub (Actions) Basic Settings" width="1440" height="1024" width="2984" height="930" data-path="images/conversions/segment/segment-basic-settings.png" />
    </Frame>
  </Step>

  <Step title="Add Mapping">
    Next, you’ll choose the **Track a sale** action from the list of available actions.

    By default, this action is configured to send sale data to Dub when the **Event Name** is **Order Completed**.

    <Frame>
      <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/segment/segment-track-sale-action.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=ec66398d72e3daf23f2b237a7b75d9d6" alt="Segment Dub (Actions) Mapping" width="1440" height="1024" width="2682" height="1800" data-path="images/conversions/segment/segment-track-sale-action.png" />
    </Frame>

    Below the selected action, you’ll see the mapping for that action.

    <Frame>
      <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/segment/segment-track-sale-mapping.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=a221d411c03814bf9e2bdc02a6718270" alt="Segment Dub (Actions) Mapping" width="1440" height="1024" width="2880" height="1718" data-path="images/conversions/segment/segment-track-sale-mapping.png" />
    </Frame>

    You can customize the trigger and mapping to fit the specific needs of your application.

    Finally, click **Next** and then **Save and enable** to add the mapping to the destination.
  </Step>

  <Step title="Send sale events to Dub">
    On the server side, you’ll use the `@segment/analytics-node` SDK to send sale events to Segment.

    Make sure to include relevant properties such as `userId`, `payment_processor`, `order_id`, `currency`, and `revenue` in the payload.

    ```tsx
    import { Analytics } from "@segment/analytics-node";

    const segment = new Analytics({
      writeKey: "<YOUR_SEGMENT_WRITE_KEY>",
    });

    segment.track({
      userId: id,
      event: "Order Completed",
      properties: {
        payment_processor: "stripe",
        order_id: "ORD_123",
        currency: "USD",
        revenue: 1000,
      },
      integrations: {
        All: true,
      },
    });
    ```

    Once the event is tracked, Segment will forward the sale data to Dub based on the mappings you’ve configured.
  </Step>
</Steps>

Here are the properties you can include when sending a sale event:

| Property             | Required | Description                                                                                                                                            |
| :------------------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `customerExternalId` | **Yes**  | The unique ID of the customer in your system. Will be used to identify and attribute all future events to this customer.                               |
| `amount`             | **Yes**  | The amount of the sale in cents.                                                                                                                       |
| `paymentProcessor`   | No       | The payment processor that processed the sale (e.g. [Stripe](/conversions/sales/stripe), [Shopify](/conversions/sales/shopify)). Defaults to "custom". |
| `eventName`          | No       | The name of the event. Defaults to "Purchase".                                                                                                         |
| `invoiceId`          | No       | The invoice ID of the sale. Can be used as a idempotency key – only one sale event can be recorded for a given invoice ID.                             |
| `currency`           | No       | The currency of the sale. Defaults to "usd".                                                                                                           |
| `metadata`           | No       | An object containing additional information about the sale.                                                                                            |

## Example App

To learn more about how to track sales with Segment, check out the following example app:

<Card title="Segment + Next.js App Router Example" icon="github" href="https://github.com/dubinc/examples/blob/main/conversions/segment/actions/track-sale.ts">
  Next.js app using Segment to track sales.
</Card>

## View conversion results

And that's it – you're all set! You can now sit back, relax, and watch your conversion revenue grow. 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.

<Frame>
  <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/timeseries-chart.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=71d3c78498e8befddb5d2fda748d7d54" alt="Time-series line chart" width="2400" height="1260" data-path="images/conversions/timeseries-chart.png" />
</Frame>

* **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).

<Frame>
  <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/funnel-chart.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=1a70ca66d94eee8d705323f7fd33944e" alt="Funnel chart view showing the conversion & dropoff rates from clicks → leads → sales" width="2400" height="1260" data-path="images/conversions/funnel-chart.png" />
</Frame>

* **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.

<Frame>
  <img src="https://mintcdn.com/dub-client-tracking-lead-sale/Fo3EyiwSOIeMUHrn/images/conversions/events-table.png?fit=max&auto=format&n=Fo3EyiwSOIeMUHrn&q=85&s=70741a124cdbaa226d35cec457e65f54" alt="The Events Stream dashboard on Dub" width="2400" height="1260" data-path="images/conversions/events-table.png" />
</Frame>
