Real-Time Bidding (RTB)

Turn every inbound call into a live auction across your buyers, route to the highest bid, and never strand a call.

What RTB does

Real-Time Bidding turns every inbound call into a live ping-post auction. When a caller hits the RTB step in your call flow, CallScaler pings every active buyer in parallel with the caller's phone, ZIP, and a unique reference ID. Each buyer responds — accept or reject, plus a bid amount — usually inside one second. CallScaler filters out rejections and bids below your minimum, then routes the call to the highest remaining bid. If no buyer clears the minimum, the call goes to your configured failover so callers are never stranded.

  • One step in your call flow, unlimited buyers
  • Parallel ping-post — total auction completes in about a second
  • Works with MarketCall, Arroyo Media, Ringba, TrackDrive, and any custom ping endpoint
  • AI buyer autofill imports an endpoint config from a pasted curl or spec in seconds
The expanded Real-Time Bidding step in the call flow editor with four active bidders, minimum bid of $15.00, and a zip code prompt configured.

Pricing

RTB is a $39/mo account-level extension with a 14-day free trial. There are no per-call fees, no per-buyer fees, and no cap on the number of buyers in an auction. Enable it from Extensions — the trial starts automatically and you'll only be charged after the 14 days if you don't cancel.

On the Pay Per Call plan, RTB is included free. The card shows Included with your plan instead of a price and enabling it never adds a charge, so networks get real-time bidding as part of the subscription.

If the extension is off, RTB steps in your existing flows skip the auction entirely and route the call straight to your configured fallback destination. Re-enable the extension and the same flow starts auctioning again — no edits required.

How an auction works

When a call reaches an RTB step, this happens in order:

Buyers that don't respond within 12 seconds are treated as a no-bid. Most networks respond in 200-600ms — long timeouts usually mean a buyer endpoint is down or misconfigured.

  • Zip prompt — the caller is asked to enter their 5-digit ZIP code on the keypad. CallScaler retries up to 3 times on invalid input.
  • Hold music — while bidding runs, the caller hears your hold message (default CallScaler audio or your own upload).
  • Parallel ping — every active buyer is POSTed at the same time with caller, zip, and ref_id. Each buyer has up to 12 seconds to respond.
  • Filter — rejected bids and bids below your Min bid are dropped.
  • Winner — the highest remaining bid wins. CallScaler dials the destination number the buyer returned in their post response.
  • Failover — if no bid clears the minimum (or every buyer times out), the call goes to your fallback destination. Callers are never just dropped.

Setting up an RTB step

RTB lives inside any call flow as a step type. To add one:

RTB usually works best as the second or third step in a flow: a short Greeting first, then RTB. Skip prompts and intros that delay the auction — callers are most willing to enter their ZIP right after a quick "thanks for calling."

  • Open or create a call flow in Call Flows.
  • Click Add Step, choose More options, and select Real-time bidding (RTB).
  • Confirm or edit the zip code prompt (default: "Please enter your 5 digit zip code."). You can switch to an uploaded MP3/WAV file instead of text-to-speech.
  • Pick a hold music source: keep the CallScaler default or upload your own.
  • Add your bidders (next section).
  • Set your Min bid in dollars — bids below this are filtered out automatically.
  • Set a Fallback destination phone number for calls that don't win any bid above the minimum.

Three kinds of bidder

The Add bidder menu on an RTB step gives you three ways to put demand into the auction. You can mix all three in the same step.

Explicitly-added Buyer cards take priority over group membership, so a campaign in both never bids twice.

  • Ping/Post — an outside buyer's ping endpoint. This is the classic setup: MarketCall, Arroyo Media, Ringba, TrackDrive, or any custom endpoint.
  • Buyer — one specific buyer campaign on your own account, added by hand. Use it when you want a named buyer in this flow and nowhere else.
  • Vertical group — "all {vertical} buyers". Pick a vertical and every active campaign on your account tagged with it bids automatically.

Two-step ping/post (ping, then accept)

Ping-post APIs come in two shapes. One-shot APIs return the bid and the transfer number in the same ping response — nothing extra to configure. Two-step APIs (TrackDrive inbound webhooks and similar ping-tree platforms) return a bid plus a request id on the ping, and require a second accept (or "post") request echoing that id before they hand over the routable number. CallScaler supports both.

To configure a two-step buyer, expand the bidder's Advanced section, check Two-step ping/post (ping, then accept), and paste the buyer's accept URL. The request id in the ping response is detected automatically (request_id, ping_id, try_all_buyers.ping_id, and other common fields) — if your buyer uses something unusual, set the optional Request id field to its exact path.

Fields the buyer only wants on the accept (TrackDrive's ping_id, for example) are added as normal extra parameters with the value {request_id}: CallScaler holds them back from the ping and sends them on the accept automatically. The accept reuses the same request format, headers, and remaining fields as the ping.

The Autofill from specs helper understands two-step posting instructions — paste a TrackDrive-style spec and it fills the accept URL and the {request_id} field for you.

  • The accept fires only for the winning bidder, after the auction — losing bids are never accepted, so your buyer is never committed to a call they didn't win.
  • If the winner's accept fails, the call falls to the next-best bidder automatically.
  • The same two-step option is available on a buyer campaign's Ping/Post destination in Pay Per Call networks (both the buyer's own editor and the network-admin editor).
  • Test ping runs both requests and shows both raw responses, plus the extracted request id — verify the whole handshake before going live.
  • Field names don't have to match ours. The bid, the success flag, the request id, and the transfer number are detected under any common name and spelling — tracking_number, trackingNumber, forwarding_number, transfer_phone_number, phone_number all work — including when the buyer wraps the whole response in a data (or result/response) object.
  • Transfer numbers are accepted in any format — 9062087982, 13303254938, (906) 208-7982, +1 906 208 7982 — and dialed as E.164.

Vertical groups: stop hand-wiring every buyer

Adding buyers one at a time means every new buyer is an edit to every call flow they should bid on. A Vertical group replaces that with a standing rule.

Tag each buying campaign with a vertical (Plumbing, Roofing, Pest Control, HVAC, and so on — a searchable list of around 75), then drop a single vertical group into the flow. Every active campaign carrying that vertical bids from then on, and a campaign tagged tomorrow joins the auction with no edit to the flow. The card shows how many campaigns currently match and expands to list them.

Control a group by pausing individual campaigns or by their bid floors.

Vertical matching is exact and flat, with no hierarchy. A Remodeling group does not pick up Kitchen Remodeling or Bathroom Remodeling campaigns — add those as their own groups if you want them in the auction.

Selling a call without an auction

You do not need an RTB step to send a call to a buyer. On the Forward, Multi-Ring, Phone Menu, and Business Hours steps, every destination slot has a Phone / Buyer toggle. Switch it to Buyer, pick the buyer, and set the price for that slot.

The call routes to that buyer's saved destination at your fixed price, with no ping and no bidding. This is the right tool when you have one buyer for a line and the auction would just be overhead.

See the auction behind any call

Open a call in the Call Log and look for the Ping Details tab, next to Details and Notes. It replays that call's auction: how many bidders were pinged, your floor, who won, what each bidder bid, and why any bidder was rejected.

Use it when a call went somewhere you did not expect, or when a buyer insists they never got pinged. The tab only appears on calls that have an auction log.

Calls priced from an earlier ping-time price check do not always carry a per-bidder log, so the tab will not appear on every auctioned call.

AI buyer autofill

Most buyer networks publish a ping-post spec — a curl command, raw HTTP request, or JSON example. Instead of mapping fields by hand, click Autofill from specs on any new bidder and paste the spec. CallScaler runs it through an AI extractor (Claude) and fills in the endpoint URL, request format, headers, and body params for you. You only need to paste the values that were left blank, like API keys.

If your buyer doesn't publish a spec, you can still copy the curl from their browser's network tab — autofill handles that just as well.

  • Supports curl, raw HTTP, JSON examples, and copy-pasted help-doc text
  • Pre-baked for the common networks — MarketCall, Arroyo Media, Ringba, TrackDrive
  • Maps each network's placeholder syntax (%CALLER_ID%, [tag:gather:zipcode], {{phone}}, etc.) to CallScaler's {caller}, {zip}, {ref_id} template variables automatically
  • Returns notes about anything ambiguous, missing, or skipped (state is dropped by design — most buyers don't require it)
The AI autofill modal showing a MarketCall bid request spec pasted into a textarea, ready to be parsed by the Autofill button.

Minimum bid + fallback

Your Min bid is the floor: any bid below it is filtered out, even if it's the only bid. Set this to your true break-even — calls below it cost you more to route than the buyer pays you. Your Fallback destination is where calls go when no buyer clears the minimum, or when every buyer times out or rejects. This is typically your own sales line, voicemail, or a lower-paying always-on buyer.

If you leave the fallback destination blank, no-winner calls will be hung up. Always set a fallback unless that's actually what you want.

Hold music

The auction itself runs in the background while the caller hears hold music. By default CallScaler plays a short "thank you, please hold" message followed by piano. You can upload your own MP3 or WAV file from the step editor — useful for brand consistency or for explicitly setting expectations ("Please hold while we find the best agent for your call").

Testing a buyer endpoint

Each bidder has a Test button in its expanded view. CallScaler sends a real ping with synthetic caller + zip data to that buyer's endpoint and shows you the parsed response — accept/reject, bid amount, and the raw JSON. Use this to verify a new buyer is configured correctly before it goes live in real auctions.

If a test returns accept but the buyer's reported bid is 0, check your endpoint config — most networks need a campaign or offer ID that wasn't autofilled. The raw response panel usually tells you exactly what's missing.