// snippet import removed // snippet import removed // snippet import removed // snippet import removed
However, there are times where signups alone might not be the clearest indicator of a lead conversion event. For instance, you might want to track a more meaningful lead event such as:
- A user completing their first meeting on Granola
- A user making their first search query on Perplexity
- A user dictating their first 2,000 words on Wispr Flow
In these cases, you can use deferred lead tracking to defer the actual lead event creation to a subsequent request:
![]()
Deferred lead tracking is particularly useful for tracking sales-qualified leads (SQLs) – both for marketing attribution purposes, as well as to make sure that you’re rewarding partners for qualified leads (instead of just pure signups) with Dub Partners .
Step 1: Track a deferred lead event
First, when the user completes the action that indicates interest in your product or service, you’ll need to track a deferred lead event. Examples include:
- Signing up for an account
- Booking a demo meeting on HubSpot
- Joining a mailing list
To do this, you’ll need to set the mode property to deferred when tracking the lead event. With this, Dub will still track the customer and the click ID they came from, but defer the actual lead event creation to a subsequent request.
import { Dub } from "dub";
const dub = new Dub();
const dubId = req.cookies["dub_id"];
if (dubId) {
await dub.track.lead({
clickId: dubId,
mode: "deferred",
eventName: "Sign Up",
customerExternalId: customer.id,
customerName: customer.name,
customerEmail: customer.email,
customerAvatar: customer.avatar,
});
// delete the dub_id cookie
res.cookies.set("dub_id", "", {
expires: new Date(0),
});
}Step 2: Track a qualified lead event
Once the user completes the action that makes them a qualified lead, you can then track a qualified lead event. To do this, you’ll repeat the same lead tracking request as before, but without the mode property and by setting the clickId property to an empty string.
import { Dub } from "dub";
const dub = new Dub();
await dub.track.lead({
clickId: "",
eventName: "Sign Up",
customerExternalId: customer.id,
customerName: customer.name,
customerEmail: customer.email,
customerAvatar: customer.avatar,
});