@dub/analytics
is a client-side script for tracking conversion events with Dub.
By default, the script handles the detection of the dub_id
query parameter and storing it as a first-party cookie:

dub_id
cookie and attribute the conversion to the original click by tracking a lead event.


Quickstart
1
Generate your publishable key
Before you can track conversions on the client-side, you need to generate a publishable key from your Dub workspace.To do that, navigate to your workspace’s Analytics settings page and generate a new publishable key under the Publishable Key section.

2
Allowlist your site's domain
Then, you’ll need to allowlist your site’s domain to allow the client-side conversion events to be ingested by Dub.To do that, navigate to your workspace’s Analytics settings page and add your site’s domain to the Allowed Hostnames list.This provides an additional layer of security by ensuring only authorized domains can track conversions using your publishable key.
You can group your hostnames when adding them to the allow list:

example.com
: Tracks traffic only fromexample.com
.*.example.com
: Tracks traffic from all subdomains ofexample.com
, but not fromexample.com
itself.
When testing things out locally, you can add
localhost
to the Allowed
Hostnames list temporarily. This will allow local events to be ingested by
Dub. Don’t forget to remove it once you’re ready to go live!3
Install @dub/analytics package
Next, install the Dub analytics script in your application.You can install the You must configure the publishable key you generated in step 1 when installing the analytics script. Without this key, client-side conversion tracking will not work.
@dub/analytics
script in several different ways:React
Add Dub Analytics to your React app
Manual installation
Add Dub Analytics to your website
Google Tag Manager
Add Dub Analytics via GTM
Framer
Add Dub Analytics to your Framer site
Shopify
Add Dub Analytics to your Shopify store
WordPress
Add Dub Analytics to your WP site
Webflow
Add Dub Analytics to your Webflow site
Client-side lead tracking
Once the analytics script is installed, you can start tracking lead events in your application on the client-side. Here are the quickstart examples for tracking lead events:Property | Required | Description |
---|---|---|
clickId | Yes | The unique dub_id parameter that the lead conversion event is attributed to. |
eventName | Yes | The name of the event. Example: “Sign up”. |
customerExternalId | 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. |
- User registration or account creation
- Newsletter subscription
- Contact form submission
- Demo request or trial signup
- Download of gated content
Client-side sale tracking
Once the analytics script is installed, you can start tracking sale events in your application on the client-side.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, 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. |
- Completing a checkout or order
- Subscription payment
- Invoice payment
- Any paid trial or demo conversion