Skip to content
Skip to main content
European Data Processing
← 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 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: no cookie banner, and no popup shipped by us. 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://veritametrics.com/tracker.js"></script>

<!-- 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://veritametrics.com/tracker.js"></script>

<!-- 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, so deciding to show the form needs no consent. 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.