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

# React

> How to add the Dub Analytics script to your React website

With Dub Analytics, you can track lead and sale conversions on your website, enabling you to measure the effectiveness of your marketing campaigns.

## Quickstart

This quick start guide will show you how to get started with Dub Analytics on your website.

### 1. Install package

Using the package manager of your choice, add the `@dub/analytics` to your project.

```bash npm theme={null}
npm install @dub/analytics
```

```bash pnpm theme={null}
pnpm add @dub/analytics
```

```bash yarn theme={null}
yarn add @dub/analytics
```

```bash bun theme={null}
bun add @dub/analytics
```

### 2. Initialize package in your code

If you are using a React framework, you can use the `<Analytics />` component to track conversions on your website.

E.g. if you're using Next.js, you can add the `<Analytics />` component to your root layout component or any other pages where you want to track conversions.

```jsx app/layout.tsx theme={null}
import { Analytics as DubAnalytics } from '@dub/analytics/react';

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en">
      <body>{children}</body>
      <DubAnalytics />
    </html>
  );
}
```

### 3. Optional: Set up client-side click tracking

If you're using [Dub Partners](https://dub.co/partners) for affiliate management,  you will also need to set up the `domainsConfig.refer` property to enable [client-side click-tracking](/docs/sdks/client-side/features/click-tracking).

```jsx app/layout.tsx theme={null}
import { Analytics as DubAnalytics } from '@dub/analytics/react';

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en">
      <body>{children}</body>
      <DubAnalytics domainsConfig={{
        refer: "yourcompany.link"
      }} />
    </html>
  );
}
```

Read the [client-side click-tracking guide](/docs/sdks/client-side/features/click-tracking) for more information.

> [!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

## Concepts

You can pass the following props to the `<Analytics />` component to customize its behavior:

**apiHost** `url` (default: [https://api.dub.co](https://api.dub.co))

The base URL for the Dub API. This is useful for [setting up reverse
proxies](/docs/sdks/client-side/features/reverse-proxy-support) to avoid
adblockers.

**attributionModel** `first-click | last-click` (default: last-click)

The attribution model to use for the analytics event. The following
attribution models are available:

* `first-click`: The first click model
  gives all the credit to the first touchpoint in the customer journey.
* `last-click`: The last click model gives all the credit to the last
  touchpoint in the customer journey.

**cookieOptions** `CookieOption Object`

**properties**

**domain** `string`

Specifies the value for the `Domain` Set-Cookie attribute. This is useful
for cross-domain tracking. Example: `.example.com`

**expires** `integer` (default: 90)

Specifies the `Date` object to be the value for the `Expires` Set-Cookie
attribute. Example: `new Date('2024-12-31')`

**expiresInDays** `integer` (default: 90)

Specifies the number (in days) to be the value for the `Expires`
Set-Cookie attribute. Example: `90`

**path** `string` (default: /)

Specifies the value for the `Path` Set-Cookie attribute. By default, the
path is considered the "default path". Example: `/`

**domainsConfig** `JSON-stringified object`

Configure the domains that Dub will track. The following properties are available:

**properties**

**refer** `string`

The Dub custom domain for [referral program client-side click tracking](http://d.to/clicks/refer)
(previously `shortDomain`).
Example: `refer.dub.co`

**site** `string`

The Dub short domain for tracking site visits.
Example: `site.dub.co`

**outbound** `string | string[]`

An array of domains for cross-domain tracking. When configured, the existing
`dub_id` cookie will be automatically appended to all outbound links
targeting these domains to enable cross-domain tracking across different
applications.
Example: `["dub.sh", "git.new"]`

**queryParams** `string[]` (default: \["via"])

An array of query parameters to listen to for client-side click-tracking (e.g.
`?via=abc123`).

**scriptProps** `HTMLScriptElement Object`

Custom properties to pass to the script tag. Refer to
[MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement) for
all available options.


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