Skip to content
Skip to main content
← Back to Documentation

Warm-lead capture

VeritaMetrics can emit a cookieless, anonymous intent signal when a session looks ready to convert. Connect it to any tool: open a form, send the tier to your CRM or marketing platform, or POST it to your own endpoint. VeritaMetrics never sees the lead's details; it only says the session looks warm or hot. This guide uses KirokuForms (opens in a new tab) as a turnkey example.


The three pieces

Three things work together. Only the middle one is new code you add.

  1. VeritaMetrics is the signal. Its tracker, already on your page, fires a veritametrics:intent event in the visitor's browser when the session looks warm or hot. You turn it on by adding data-warm-lead="true" to the VeritaMetrics script tag.
  2. Your form or tool is the capture. KirokuForms, or any form, modal, or CRM, collects the email. This piece is yours; VeritaMetrics never touches it.
  3. The glue connects them. A few lines of JavaScript you paste once: they listen for the VeritaMetrics event and open your form (or send the tier to your own server). With KirokuForms this piece is built in: set the popup's trigger to intent:hot and there is no glue to write. For any other tool, the glue is the only new code, and it runs on your page.

The signal is a browser event, not a webhook: VeritaMetrics does not call your server for this, and the event carries no personal data. (That is separate from VeritaMetrics' outbound webhooks, which fire server-side for analytics alerts.)

How it works

The tracker already watches the session it runs on: page depth, engaged time, scroll, source, and clicks. With warm-lead capture enabled it scores the session into a tier (cold, warm, or hot) in the browser, with no network round-trip and nothing stored across sessions. When the session is warm or hot and the visitor shows exit intent (or lingers), the tracker fires one anonymous veritametrics:intent event. Your code listens for it and decides what to do: open a form, POST the anonymous tier to your CRM or marketing tool, or show a custom prompt. Any personal data the visitor then enters goes to that tool, under its own notice, not to VeritaMetrics.

This keeps the VeritaMetrics promise intact: we ship no popup ourselves. Any form or prompt is one you chose to arm, on your own site.

How good is the detection?

Treat the tier as a starting heuristic, not a verdict. The score comes from signals the tracker already collects (page depth, engaged time, scroll, source, and clicks), with thresholds carried over from our lead-quality scorer. It is directional: it reliably separates a quick bounce from an engaged, high-intent session, but it does not know a given visitor will convert. In practice you tune it: start on the warm tier, watch how often the form fires and how it converts, and move to hot if it shows too eagerly. A fitted per-site model that learns from real conversions is a planned next step; today's tier is a sensible default, not a trained prediction.

Turn it on

Add data-warm-lead="true" to your VeritaMetrics tracking script tag. That makes the tracker emit the signal. Then act on it in one of two ways.

With KirokuForms: no glue needed

KirokuForms has a built-in trigger for this signal. Set your popup form's trigger to intent:hot (or intent:warm) in its Display settings, or per placement with data-kiroku-trigger on the embed tag. KirokuForms listens for the signal and opens the form, so there is no glue script to write.

KirokuForms: the native intent trigger
<!-- 1. VeritaMetrics, warm-lead capture opted in -->
<script
  defer
  data-site-id="YOUR-SITE-ID"
  data-warm-lead="true"
  src="https://www.veritametrics.com/api/tracker.js?siteId=YOUR-SITE-ID"></script>
<noscript>
  <img
    src="https://www.veritametrics.com/api/track-pageview?siteId=YOUR-SITE-ID"
    referrerpolicy="unsafe-url"
    alt=""
    width="1"
    height="1"
    style="display: none"
    aria-hidden="true"
  />
</noscript>

<!-- 2. Your KirokuForms popup form, set to the intent trigger. No glue. -->
<script src="https://www.kirokuforms.com/embed.js"
  data-kiroku-form-id="YOUR_FORM_ID"
  data-kiroku-trigger="intent:hot"
  async></script>

With any other tool: a few lines of glue

For any other form, CRM, or endpoint, listen for the event yourself and do what you need. This example opens a form through KirokuForms' window.KirokuForms.open() API, but the same event drives anything.

Example: glue for any tool
<!-- 1. VeritaMetrics, warm-lead capture opted in -->
<script
  defer
  data-site-id="YOUR-SITE-ID"
  data-warm-lead="true"
  src="https://www.veritametrics.com/api/tracker.js?siteId=YOUR-SITE-ID"></script>
<noscript>
  <img
    src="https://www.veritametrics.com/api/track-pageview?siteId=YOUR-SITE-ID"
    referrerpolicy="unsafe-url"
    alt=""
    width="1"
    height="1"
    style="display: none"
    aria-hidden="true"
  />
</noscript>

<!-- 2. Your KirokuForms embed (from your KirokuForms dashboard) -->
<script defer src="https://www.kirokuforms.com/js/kiroku-embed.js"></script>

<!-- 3. Open your KirokuForms form on a warm or hot exit-intent signal -->
<script>
  document.addEventListener('veritametrics:intent', function (e) {
    if (window.KirokuForms && (e.detail.tier === 'hot' || e.detail.tier === 'warm')) {
      window.KirokuForms.open('YOUR_FORM_ID', { openNow: true });
    }
  });
</script>

What the signal carries

The event carries a tier (cold, warm, or hot), a 0 to 100 score, and a short list of reasons. There is no identifier and no personal data.

Example: e.detail
// e.detail
{
  tier: "hot",
  score: 82,
  reasons: ["scrolled halfway", "engaged time", "interacted"]
}

You choose which tier to act on; the snippet above fires on warm and hot. You can register a callback instead of, or alongside, the DOM event:

Programmatic hook
window.verita('onIntent', function (detail) {
  // detail = { tier, score, reasons }
});

Connect it to any tool

The event is a plain hook, so the handler can do anything: open a form, or send the anonymous tier to your own server, CRM, or marketing platform, which can then do whatever you need with it. KirokuForms is one turnkey option; here is the generic shape.

Send the signal to your own endpoint
document.addEventListener('veritametrics:intent', function (e) {
  // e.detail = { tier, score, reasons } (no personal data)
  fetch('/api/warm-lead', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(e.detail),
  });
});

Tuning

  • data-warm-lead-tier="hot" arms the signal only for hot sessions (the default is warm).
  • The signal fires at most once per page, on exit intent or after 30 seconds at or above the threshold. An SPA navigation counts as a new page and re-arms it.
  • Frequency-cap the popup itself in KirokuForms, which persists a short-lived do-not-reprompt window per form.

Privacy

With data-warm-lead absent, the tracker adds no listeners and stores nothing, so default installs are unchanged. When you opt in, the tracker keeps a session-scoped page count in sessionStorage so depth reflects the whole visit; it clears when the tab closes and holds no personal data. The tier decision uses no cross-session identity. Scoring a session and acting on it is still a decision about that one visitor, which goes beyond a bare statistics exception; get consent before arming this feature if your lawful basis depends on one. The capture is a visitor-initiated submission to KirokuForms, which handles that data under its own notice. See how a pageview works for the cookieless mechanism.

Explore the documentation

Jump to another guide.