DocsCall TrackingWarm Transfer (Pre-Call Data)

Warm Transfer (Pre-Call Data)

Send a caller's details right before a warm or live transfer and Lead Distro AI attaches them to the matching call automatically — for reporting, reconciliation, dispute review, and delivery on to your destination while the call is live. Works with any dialer that can send a quick GET or POST.

Last updated:

Call Tracking is in beta and turned on per account. If you don't see Calls in your left sidebar (or it shows a "Soon" tag), email support@leaddistro.ai and we'll switch it on for you.

A warm transfer (also called a live transfer) is when your source pre-qualifies a caller and then bridges the live call to your tracking number, instead of the caller dialing in cold. This guide shows how to send that caller's details a moment before the transfer, so Lead Distro AI can attach them to the call. For the basics of a call campaign first, see Call Tracking Setup.


When to use it

  • Your buyer pays per qualified or passed call, not per lead, so each call needs to be tied to who the caller was.
  • You want the caller's details (name, state, case type, TrustedForm, your own lead id) on the call record for reporting, reconciliation, and dispute review.
  • Your source runs a warm or live transfer through a dialer that can send a quick web request before it bridges the call.

How it works

  • Your source sends the caller's details to the call enrichment endpoint (a quick GET or POST) right before the transfer.
  • Your source bridges the live call to your campaign's tracking number.
  • Lead Distro AI matches the two by the caller's phone number and shows the details on the call record.

The one requirement: the transfer has to show the consumer's phone number as the caller ID (this is called ANI passthrough). That number is how we match the details to the call. If your dialer can only show its own number, email support@leaddistro.ai and we'll set you up with a dedicated number per lead instead.


Step 1: Turn on Pre-call Data and choose your fields

Open your call campaign, go to Settings, and turn on Pre-call Data. A Fields tab appears where you choose which parameters to accept: add whatever your vertical needs (first name, state, case type, ZIP, your own lead id, anything). There is no fixed list. We always keep the caller's name, phone, and email; the Fields tab is for the extra fields you want stored and shown on the call.

Give a field the ZIP / Postal Code or State type and it does double duty: we store it AND can route the call by territory. See Geographic Routing.

Step 2: Send the caller details

Send the fields to the enrichment endpoint using the same API key your source already uses. You can send them as a POST with a JSON body, or as a GET with query values, whichever your dialer supports. The callerid is the consumer's phone in E.164 format (like +13105551234) and is required, since it's the key we match on.

curl -X POST https://app.leaddistro.ai/api/v1/calls/enrich \
  -H "x-api-key: YOUR_SUPPLIER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "flo_campaign_id": "YOUR_CAMPAIGN_ID",
    "flo_supplier_id": "YOUR_SUPPLIER_ID",
    "callerid": "+13105551234",
    "first_name": "Maria",
    "state": "TX",
    "case_type": "MVA",
    "trustedform_url": "https://cert.trustedform.com/...",
    "lead_id": "YOUR-LEAD-ID"
  }'

Prefer a simple GET? Send the same values as query parameters (send the x-api-key as a header, and URL-encode the + in callerid as %2B):

https://app.leaddistro.ai/api/v1/calls/enrich?flo_campaign_id=YOUR_CAMPAIGN_ID&flo_supplier_id=YOUR_SUPPLIER_ID&callerid=%2B13105551234&first_name=Maria&state=TX&case_type=MVA&lead_id=YOUR-LEAD-ID

On success you get back a confirmation of exactly what we stored and will match on:

{
  "success": true,
  "mode": "call_enrichment",
  "stored": true,
  "caller_phone": "+13105551234",
  "fields_stored": ["first_name", "state", "case_type", "trustedform_url"],
  "external_lead_id": "YOUR-LEAD-ID",
  "expires_at": "...",
  "match_window_hours": 48
}

Testing your setup? Add test=true and we'll reply with exactly what we parsed, without storing anything, so you can confirm the wiring before going live. You have 48 hours from sending the details to bridge the call.

Step 3: Bridge the live call

Send the live call to your campaign's tracking number, passing the consumer's phone number as the caller ID. When the call lands, we match it to the details you sent and attach them.

Step 4: Set the destination to bill on connect

Because your buyer pays for a passed transfer rather than talk time, set the destination to bill when the call connects. Open the destination in Edit Target, set billing to bill on connect with a 1 second minimum, and save. If a transfer doesn't qualify, refund that call from the call's page and it shows as Returned. See Wallet & Top-Ups.

Step 5: Send the details on to your destination (optional)

The details are on your call record either way. If your destination wants them too — in their CRM, or in an inbox while the call is still live — you have two options, and you can use both.

  • Data Delivery (per destination). Open the destination in Edit Target, turn on Data Delivery, and fill in the endpoint URL, method, any custom headers, and the body template. The moment that destination answers, we post the caller's phone and location plus every pre-call field to their endpoint. It fires only to the destination that actually took the call. Send Test fires a sample so you can validate their endpoint before a real call rings.
  • A Call Connected automation (campaign-wide). On the campaign's Overview tab, go to Triggers & Automations, add an automation with the Call Connected trigger, and choose the Email, Webhook, Slack, or Google Sheet action. The Fields picker includes a Pre-Call Data group, so you can drop the caller's fields straight into an email to your client.

If the source posts the details after the call already started, the Pre-Call Data Received Late trigger fires with the updated info, and Data Delivery re-sends too — so a late post still reaches your destination.

Where the data shows up

Open the call from the Calls page. The Pre-call data card shows your lead id and every field you sent, tied to that exact call, ready for reporting, reconciliation, or a dispute.


Limits to know

  • Matching needs the consumer's caller ID. If the transfer shows the dialer's own number instead, we can't match on the phone. Ask support about a dedicated number per lead.
  • You have 48 hours from sending the details to bridge the call, then the saved details expire.
  • The destination only gets the fields if you send them. The details always land on your call record. To pass them into the destination's own system, turn on Data Delivery or a Call Connected automation (see the step below).

FAQ

Frequently Asked Questions

Do I need a new API key or a different endpoint?
A new endpoint, /api/v1/calls/enrich, but the same API key your source already uses for this account. We always keep the caller's name, phone, and email; to store any extra fields, add them once in the campaign's Fields tab (after turning on Pre-call Data).
Can my dialer send a GET instead of a POST?
Yes. Send the fields as query parameters on a GET, or as a JSON body on a POST, whichever your dialer supports. Both work the same way.
What if the transfer can't pass the consumer's caller ID?
Email support@leaddistro.ai. We can set you up with a dedicated tracking number per lead so the match doesn't depend on the caller ID.
How long do I have to bridge the call after sending the details?
48 hours. In a warm transfer the call usually follows within seconds, so this is plenty of room.
Does my destination get the caller's details too?
Yes, if you set it up. Two ways: Data Delivery on the destination (Edit Target → Data Delivery) posts the caller's info to that destination's endpoint the moment they answer, and only to the one who actually took the call. Or a campaign-wide Call Connected automation, which can email the details to your client or post them to any URL. Without either, the details stay on your call record for your own reporting and disputes.
How is a passed versus an unqualified call billed?
Set the destination to bill when the call connects, so every passed transfer bills. If a transfer isn't qualified, refund that call and it shows as Returned.

If you have any questions, send us an email at support@leaddistro.ai