FP FINGERPRINT

Advertising guide

Use fingerprint.dev when you need a stable visitor signal across ad clicks, landing pages, and conversion events without writing a cookie or local-storage identifier.

  1. Capture campaign metadata from the landing URL.
  2. Call /identify on the landing page.
  3. Store visitor_id, confidence, campaign fields, and the landing event ID in your own analytics or warehouse.
  4. Call /identify again on conversion.
  5. Attribute or dedupe conversions when the conversion visitor matches a prior landing visitor at a confidence level you trust.

Browser integration

import { identify } from "fingerprint.dev";

let result = await identify({
  apiKey: "fp_live_...",
});

if (result.visitor_id !== null) {
  await fetch("/events/ad-landing", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({
      visitor_id: result.visitor_id,
      confidence: result.confidence,
      campaign_id: new URLSearchParams(location.search).get("utm_campaign"),
      click_id: new URLSearchParams(location.search).get("click_id"),
    }),
  });
}

Call the same flow on the conversion page or after the conversion action completes. Store the returned visitor_id with the conversion event instead of trying to keep an identifier alive in the browser.

Attribution rules

Treat visitor_id as attribution metadata, not as the whole attribution model. A typical rule is:

  • exact customer account match wins first.
  • same visitor_id and high confidence can dedupe repeated conversions.
  • same visitor_id and medium confidence can mark a likely assist.
  • low confidence should stay eligible for review or fall back to your existing attribution rules.

What to store

Store only the data you need to join events:

{
  "visitor_id": "550e8400-e29b-41d4-a716-446655440000",
  "confidence": 0.92,
  "event": "conversion",
  "campaign_id": "spring_launch",
  "click_id": "clk_123",
  "occurred_at": "2026-05-01T12:00:00Z"
}

Do not store raw browser signals in your analytics tools. The JavaScript SDK hashes browser evidence before sending it to fingerprint.dev.