The attribution journey
- A visitor opens a conversion-enabled Biqli link.
- Biqli records the click and adds
bq_idto the destination URL. - The browser SDK stores the click ID after consent is granted.
- Your application sends a lead or sale with that click ID.
- Biqli saves the event under the same workspace, customer, and link.
Customer identity
Every lead and sale includescustomerExternalId. Use the permanent ID from your own database, for example customer_1842.
Use the same value for that customer across devices, sessions, and future purchases. Do not generate a new value for every event. Avoid using an email address when your application has a permanent customer ID.
First-click and last-click models
Choose the browser attribution model in Workspace settings -> Tracking.- First click keeps the first eligible click already stored in that browser.
- Last click replaces the stored click when a newer eligible click arrives.
The model controls which click the browser retains. Server events can also reuse an eligible attribution already associated with the same workspace customer.
Direct attribution
SendclickId when your signup, order, or webhook still has the visitor’s bq_id.
Deferred attribution
After Biqli has attributed a customer, a later server-side event can omitclickId and use the same customerExternalId. This is useful for renewals and delayed payments.
For a sale, leadEventName can prefer a matching lead before Biqli applies the workspace attribution model.
Deleted links
Deleting a link does not erase existing customer or conversion history. Biqli freezes the link’s final short URL, destination, and title in an attribution snapshot. Customer timelines then show Deleted link while preserving the historical details. New visits cannot use the deleted link.Retry safety
A network timeout does not tell you whether the server accepted an event. Retry the same logical event with the same identifiers and the same payload:- Leads use a stable
eventId. - Sales should use a stable
paymentProcessorandinvoiceId. - Raw REST requests should also send a stable
Idempotency-Keyheader.
409 idempotency_conflict.

