DocsCall TrackingRTB (Real-Time Bidding) for Calls

RTB (Real-Time Bidding) for Calls

How real-time bidding works for pay-per-call campaigns in Lead Distro AI, and how to set it up. Send each inbound call to the highest bidder, either your own buyers bidding on rules you set, or external routers like Retreaver and Ringba bidding live. Step by step, in plain English.

Last updated:

Call Tracking is in beta, and RTB is the most advanced part of it. If you don't see Calls in your sidebar, or you don't see Real-Time Bidding or Add Dynamic Routing where this guide says to look, email support@leaddistro.ai and we'll switch it on for your account.

This guide explains what RTB (Real-Time Bidding) means for phone calls and walks you through setting it up. If you're brand new to call campaigns, read Call Tracking Setup first, then come back here to add bidding.


What is RTB, in plain English?

With a normal ring tree, you decide the order calls ring: buyer #1 first, then #2, then #3. RTB flips that around. Instead of a fixed order, every call is a tiny auction. The moment a call comes in, each buyer offers a price for it, and the call goes to whoever bids the most. The highest bidder wins the call, the same idea as ping-post for lead data, but for a live phone call.

Why use it? Because the value of a call changes call by call. A call from a buyer's best zip code, at their busiest hour, is worth more to them than a random call at midnight. RTB lets each buyer pay what a call is actually worth to them right now, so you earn more on your good calls instead of billing one flat price for everything.

Simple rule to remember: Ring Tree = fixed order you choose. RTB = the highest bid wins each call.


Two ways to run RTB

Lead Distro AI gives you two flavors of RTB. You can use either one on its own, or both together in the same campaign.

Built-in RTBDynamic Routing (external)
Who bidsYour own buyers, already in the appOutside networks like Retreaver, Ringba, or any webhook router
How the bid is decidedA base bid plus rules you set for each buyer (zip, time of day, and so on)The outside router replies with a live price for that exact call
SpeedInstant, nothing leaves Lead Distro AIWe send a quick request to the router and wait for its reply (a fraction of a second)
Best forSelling your own calls to buyers you managePlugging into a call marketplace or an existing Retreaver/Ringba setup
Where you set it upPick Real-Time Bidding when you create the campaignClick Add Dynamic Routing on the Call Flow tab

The rest of this guide covers each one. Do Part 1 for your own buyers, Part 2 to connect an outside router, or both.


How an RTB call flows

Here is the whole journey in one line: a caller dials your tracking number, we optionally grab the caller's zip, every buyer (yours and any outside routers) bids on the call at the same time, the highest bidder wins, the call connects to that buyer, and if it lasts past your minimum length it counts as a billable call.

  • Call arrives on one of your tracking numbers.
  • We gather signals about the call: the caller's number, their area and zip, and the line type. For outside routers you can ask the caller to punch in their zip, or use the zip the phone network provides with no prompt.
  • Everyone bids at once. Your own buyers compute a bid from their base price and rules. Any outside routers get a fast request and reply with their own price. A router that is slow or offline simply doesn't bid, so a bad connection never drops the call.
  • Highest bid wins. All the bids are ranked top to bottom and the call rings the winner. If the winner doesn't answer, we move down to the next highest bid.
  • The call connects and is billed the winning bid, once it passes the minimum duration you set.

Part 1: Built-in RTB (your own buyers bid)

This is the simplest way to start. Your buyers are already in Lead Distro AI, and you let them compete for each call instead of ringing them in a fixed order.

  • Step 1: Create a Calls campaign. In the sidebar open Campaigns, click Create Campaign, and choose Calls as the type.
  • Step 2: Choose the routing method. In the "How are buyers matched?" dropdown, pick Real-Time Bidding instead of Static Ring Tree. (You can switch an existing calls campaign over later too.)
  • Step 3: Name it and create it. Give the campaign a name and vertical, then click Create Campaign.
  • Step 4: Add your buyers. On the campaign's Call Flow tab, click Add Target and pick a buyer, just like a ring tree. Add as many as you want to compete.
  • Step 5: Set each buyer's bid. In the buyer's Edit Target window, set a base bid (the price they'll pay for a normal call) plus optional rules that raise or limit their bid. Also set the minimum duration and forwarding phone as usual.
  • Step 6: Go live. Activate the campaign, put your tracking number on your traffic, and calls now go to the highest bidder automatically.

With built-in RTB the winning buyer is billed their bid from their prepaid wallet, exactly like a normal call. Make sure each buyer's wallet has a balance. See Wallet & Top-Ups.


Part 2: Dynamic Routing (connect an outside router)

Dynamic Routing lets an outside network bid on your calls in real time. It's built to plug straight into Retreaver, Ringba, or any router that speaks a simple web request. When a call comes in, we send the router the caller's details, it replies with a price and a number (or SIP address) to send the call to, and we connect it.

You add a router on the campaign's Call Flow tab by clicking Add Dynamic Routing. Here is what each part of that window does.

Start from a preset

At the top of the window are three preset buttons: Retreaver, Ringba, and Generic webhook. Click the one that matches your router and it fills in almost everything for you (the request style and the fields to read back from the reply). Start here, then just paste in your endpoint and any auth token.

The fields

FieldWhat to put in it
Router nameA name for this connection, shown in your reports and call trail. For example "Retreaver - Auto Accident".
ZIP sourceHow we get the caller's zip to send to the router. Choose Ask the caller (they punch it in), Use carrier ZIP (no prompt) (silent, from the phone network), or Ask, fall back to carrier ZIP.
Endpoint URLThe web address the router gave you for live bids. Pick POST or GET next to it (the preset sets this for you: Ringba uses GET, most others POST).
ZIP promptThe message the caller hears when you ask for their zip, for example "Please enter your 5 digit ZIP code." Only shown if you chose to ask the caller.
Auth token / Auth headerOptional. If your router needs an API key or bearer token (your "RTB key"), paste it here and set the header name it should be sent under (usually Authorization). See "What is an RTB Key?" below for a step by step.
Request fieldsThe details we send the router about each call. The preset fills these in. Each row maps the router's field name to a caller detail (caller number, zip, state, line type, and so on) or a fixed value.
Response fieldsHow we read the router's reply. These are the paths to the price, the number to dial, an optional SIP address, the qualifying duration, and the bid ID. The preset fills these in for you.
Floor price ($)A backup price billed if the router accepts a call but doesn't send back a specific bid amount.
PriorityWhere this router sits when bids tie. Lower rings first. Outside routers usually go ahead of your own buyers.
Timeout (ms)How long we wait for the router to answer before giving up and moving on. Default is 1500 (1.5 seconds). Keep it short so callers aren't left waiting.

Not sure the connection works? Click Test ping at the bottom. It sends the router one sample call and shows you whether the router answered, whether it accepted, and the price and number it returned. Fix any red result before you save.

When it looks right, click Save target. The router now takes part in every auction on this campaign.

Accepted, or accept-on-bid?

Some routers (like Retreaver) send back a clear yes or no on each call, plus a price. Others (like Ringba) don't send a separate yes/no, they just send a price: any price above zero means they want the call. Lead Distro AI handles both. If you started from a preset, this is already set correctly, so you don't have to think about it.

Outside routers settle payment on their own side, so a Dynamic Routing call does not draw down a Lead Distro AI wallet. You still pay the normal per-minute call time and monthly number rental.


What is an "RTB Key"? (and where you enter it)

If you're coming from Retreaver or Ringba, you've probably heard the term "RTB Key" or "RTB token." In plain English, it's just a password. When two systems talk to each other about live call bids, the key proves it's really you and not a stranger. Nothing more complicated than that.

In Lead Distro AI, you use this key inside the Add Dynamic Routing window you set up in Part 2. It's the Auth token field. You paste your router's key there so we can prove who we are each time we ask that router for a bid.

An RTB key can point in two directions, and Lead Distro AI does both. Connecting out to a router you already have, like Retreaver or Ringba, is what you set up above in Part 2 (the Auth token). Issuing your own key so an outside partner can send calls in to your campaign is the next section.

Setting up your RTB key (auth token)

  • Step 1: Get the key from your router. Log in to Retreaver or Ringba and copy your API key or RTB token from their settings. This is the string you'll paste into Lead Distro AI.
  • Step 2: Open Add Dynamic Routing. On your calls campaign, go to the Call Flow tab and click Add Dynamic Routing.
  • Step 3: Pick your preset. Click Retreaver, Ringba, or Generic webhook at the top so most of the fields fill in for you.
  • Step 4: Paste your endpoint, then your key. Paste the router's endpoint URL, then paste your key into the Auth token field. Set the Auth header name it should be sent under. This is almost always Authorization, and the value usually looks like Bearer your-key-here.
  • Step 5: Test it. Click Test ping. This sends the router one sample call and shows whether it answered and accepted. If anything comes back red, fix it before moving on.
  • Step 6: Save. Click Save target. Your router now bids on every call for this campaign, using your key each time.

If Test ping comes back with "unauthorized" or a 401 error, the key or the header name is wrong. Recopy the key from your router (watch for extra spaces), and double check whether the router wants it under Authorization or a custom header name.

Issuing your own RTB key to a traffic partner

This is the reverse direction. Instead of you connecting out to a router, you generate a key and hand it to an outside traffic partner (a publisher) so they can send calls into your campaign. When one of their callers is ready, their system asks yours for a live bid, your buyers compete in the same auction, and you hand back a price and a phone number for their caller to dial. This is the same idea as Retreaver's "RTB Key" or Ringba's inbound ring tree.

Inbound RTB Keys is in beta. You'll find it as the Inbound RTB Keys card on the Call Flow tab of a Calls campaign. If you don't see it there, email support@leaddistro.ai and we'll switch it on for your account.

  • Step 1: Open your Calls campaign and go to the Call Flow tab. Scroll to the Inbound RTB Keys card and click New Key.
  • Step 2: Name the key. Use something that says who it's for, like "Acme Media - Auto". This only shows up in your own list.
  • Step 3: Set the number to hand back. Enter an Inbound number, a tracking number that routes into this campaign, or a SIP address. This is what the partner's caller will dial once you accept their bid.
  • Step 4: Set the hold time and options. TTL is how long you hold the bid and number open for their caller (60 seconds is a good default). Leave Timeout as is. Add a Tag prefix (like pub_) if you want the partner's extra info kept separate from your own fields.
  • Step 5 (optional): Flip the toggles. "Route only to reserved buyer" rings just the winning buyer on the real call. "Return DBA" sends the buyer's business name back to the partner. The defaults are fine for most setups.
  • Step 6: Create the key. Click Create key. You'll see a POST URL and a secret token. Copy both now, the token is shown only once. If you lose it, delete the key and make a new one.
  • Step 7: Give the partner the details. Send the partner the POST URL and the token. They send the token in a header called x-rtb-key on each bid request.
  • Step 8: Test it. Back on the card, click the flask icon next to your key. It runs a pretend bid request and tells you whether a partner would get a bid right now, and for how much. Fix anything before you go live.

Here is what the partner sends and gets back, so you can pass it along to their tech team.

curl -X POST https://www.leaddistro.ai/api/v1/call-rtb \
  -H "x-rtb-key: rtb_your_secret_token" \
  -H "Content-Type: application/json" \
  -d '{ "caller_number": "+13055551234", "tags": { "state": "FL", "zip": "33101" } }'

# Response when a buyer bids:
# {
#   "accepted": true,
#   "bid": 12.50,
#   "number": "+13055559999",
#   "reservation_id": "...",
#   "expires_in": 60
# }
# The partner then sends their caller to the returned number before it expires.

Pass the caller's state and zip as tags (shown above). Your buyers' bid rules use them, so a partner that shares location usually gets a higher, more accurate bid. If the partner sends no bid-worthy call, they simply get accepted: false and route it elsewhere, nothing is charged.


Mixing your buyers and outside routers

You don't have to choose one or the other. On an RTB calls campaign you can have your own buyers AND one or more outside routers, and they all compete in the same auction. Every bid, from a buyer or a router, lines up in one list and the highest bid wins. A $12 bid from an outside router beats an $11 bid from one of your buyers, and the other way around.

  • One combined auction. All bids are ranked together, highest first, on every single call.
  • Always a fallback. If no outside router bids (they're slow, offline, or pass), your own buyers still compete, so the call is never lost.
  • Full record. Every call's log shows who bid, how much, and who won, so you can see exactly why a call went where it did.

When to use RTB instead of a Ring Tree

Use a Ring Tree whenUse RTB when
You want a set order (send to my best buyer first, then overflow)You want the market to decide, top dollar wins each call
Buyers all pay a similar flat priceBuyers value calls differently by area, hour, or source
You manage a small, fixed set of buyersYou're plugging into a call marketplace or network
Simplicity matters mostMaximizing revenue per call matters most

Frequently Asked Questions

What's the difference between built-in RTB and Dynamic Routing?
Both are RTB (highest bid wins each call). Built-in RTB is your own buyers, already in Lead Distro AI, bidding on rules you set. Dynamic Routing connects an outside network like Retreaver or Ringba that bids live over the internet. You can use either or both in the same campaign.
Do I need a Retreaver or Ringba account to use RTB?
No. Built-in RTB works entirely inside Lead Distro AI with your own buyers, no outside account needed. You only need Retreaver, Ringba, or a similar router if you want to use Dynamic Routing to let an outside network bid on your calls.
What happens if an outside router is slow or down?
Nothing bad. We wait only as long as the Timeout you set (1.5 seconds by default). If the router doesn't answer in time, it simply doesn't bid on that call, and the call goes to the next highest bidder, including your own buyers. A broken connection never drops a live call.
How is an RTB call billed?
The winner is billed the amount they bid, once the call passes your minimum duration. For your own buyers, that amount comes out of their prepaid wallet like any normal call. For outside routers, payment is settled on the router's side, so it does not touch a Lead Distro AI wallet. You still pay the usual per-minute call time and monthly number rental either way.
Can I collect the caller's zip for better bids?
Yes. When you connect an outside router you choose a ZIP source: ask the caller to punch it in, use the zip the phone network already provides with no prompt, or ask and fall back to the network zip. Sharing the zip usually gets you higher, more accurate bids because the router knows where the caller is.
Does RTB support SIP, not just phone numbers?
Yes. If your router returns a SIP address instead of a phone number, Lead Distro AI connects the call over SIP automatically. The Ringba preset already turns SIP on. If the router sends back both a number and a SIP address, we use the SIP address.
Can I switch an existing calls campaign to RTB?
Yes. Open the campaign, edit it, and change the routing method from Static Ring Tree to Real-Time Bidding. Your existing buyers stay in place, they just start competing on bid instead of ringing in a fixed order. You can switch back at any time.
What's an RTB key and do I need one?
An RTB key is just the password (API key or token) from your outside router, like Retreaver or Ringba. You paste it into the Auth token field when you set up Dynamic Routing. You only need a key if you connect an outside router. Built-in RTB with your own buyers needs no key at all.
Can I give a partner a key to send me calls?
Yes. On a Calls campaign, open the Call Flow tab and use the Inbound RTB Keys card to create a key, then hand the partner the POST URL and token. Their system asks yours for a live bid, your buyers compete, and you return a price plus a number for their caller to dial. It's in beta, so if you don't see the card, email support@leaddistro.ai to switch it on.
Is my RTB key token safe to share?
The token is a password, so treat it like one. We show it only once when you create the key, and we only store a scrambled version, so no one (including us) can read it back later. Share it privately with your partner. If it ever leaks, delete the key and issue a new one, the old one stops working right away.

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