Publisher docs
Platform tokens
Where each piece goes on the platform you use. Your buyer's setup message has the same ping URL, with your key already in it.
Step-by-step guides
Answer three questions and get one page of steps for your platform, with the values ready to copy.
Every platform at a glance
Ringba
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[tag:InboundNumber:Number-NoPlus]&request_id=[Call:InboundCallId]| What | Their macro |
|---|---|
| Caller number | [tag:InboundNumber:Number-NoPlus] |
| Caller state | None |
| Call ID | [Call:InboundCallId] |
The call ID exists when you ping, so it goes on the ping.
The usual mistake
Ringba's usual setup looks for bidAmount and sipAddress. We don't send those. Accept the bid when status is reserved, read the price from payout and dial sip_address. Also add exposeCallerId=yes to the ping, or Ringba hides the caller's number.
Your postback URL
In Ringba, open Integrations, then Webhooks, and copy the webhook URL. Put {CALL_ID} where it says [callUUID] and {PAYOUT} where it says [conversionAmount].
Retreaver
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[caller_number]&caller_state=[caller_state]&request_id=[call_uuid]| What | Their macro |
|---|---|
| Caller number | [caller_number] |
| Caller state | [caller_state] |
| Call ID | [call_uuid] |
The call ID exists when you ping, so it goes on the ping.
The usual mistake
Retreaver's buyer template reads the number from inbound_number. We don't send one. Set the target to dial the "Send the call to" address directly, with sip: in front. Don't dial the [retreaver_rtb_<buyer id>_sip_address] tag: Retreaver URL-encodes it (the at-sign becomes %40), so the call never reaches us. Route the call only when status is reserved (a no-bid carries no payout), before the bid expires, with the caller's own number as caller ID.
Your postback URL
In Retreaver, open your conversion postback key and copy its URL. Put {PHONE} where it says CALLER_NUMBER, {PAYOUT} as the value and {CALL_ID} as call_uuid.
CallGrid
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[[tag:CallerId]]&caller_state=[[tag:InboundStateCode]]| What | Their macro |
|---|---|
| Caller number | [[tag:CallerId]] |
| Caller state | [[tag:InboundStateCode]] |
| Call ID | None |
The call ID is created only when the call arrives, so send it with the call-ID endpoint.
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[[tag:CallerId]]&request_id=CALL_ID_MACROThe usual mistake
CallGrid's partner templates read target_number. We don't send one. Use Manual mode: accept when status is reserved and dial sip_address.
Your postback URL
CallGrid takes buyer-confirmed conversions by webhook. Ask your CallGrid contact for that URL, then put {CALL_ID} where the call ID goes and {PAYOUT} where the amount goes.
TrackDrive
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[caller_id]&caller_state=[geo_state]&request_id=[call_uuid]| What | Their macro |
|---|---|
| Caller number | [caller_id] |
| Caller state | [geo_state] |
| Call ID | [call_uuid] |
We don't know when this platform creates its call ID. If it has one when you ping, put it on the ping; if not, send it with the call-ID endpoint.
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[caller_id]&request_id=[call_uuid]The usual mistake
Use a custom buyer ping: accept when status is reserved, read the price from payout and dial sip_address. Keep the real caller ID. Confirm that [call_uuid] is filled on the ping; if it is blank, send the call ID through the call-ID URL before the call ends.
Your postback URL
Ask your TrackDrive contact for a conversion URL that accepts GET, with {CALL_ID} for the call UUID and {PAYOUT} for revenue. TrackDrive's documented call-update API requires an authenticated JSON POST, so it cannot be pasted directly here.
Moja
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&caller_state=[STATE]| What | Their macro |
|---|---|
| Caller number | [CALLER_ID] |
| Caller state | [STATE] |
| Call ID | None |
We don't know when this platform creates its call ID. If it has one when you ping, put it on the ping; if not, send it with the call-ID endpoint.
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&request_id=CALL_ID_MACROThe usual mistake
Accept the bid only when status is reserved and read the price from payout. Set the destination to the exact "Send the call to" SIP address, with a literal @, entered as a fixed value, not filled from sip_address in our bid response. Confirm with Moja whether its SIP field keeps @; until confirmed, enter the address fixed. The public docs do not identify which SIP field accepts this address; confirm the fixed SIP field with your Moja contact. Never replace @ with %40. Dial before the bid expires, with caller ID equal to the number sent in the ping. No IP allowlist or SIP login is needed. Moja documents [CALL_ID] for outgoing webhooks, but its RTB call-ID token and availability at ping time are unknown; ask your Moja contact before replacing the call-ID blank.
Your postback URL
In Moja, go to Webhooks → Incoming → Create, choose update_revenue and copy the generated endpoint URL. Moja documents GET with call_log_id={CALL_ID} and revenue_paid_out={PAYOUT}; keep the generated moja_auth_key on the URL. Use {PHONE} as phone_number only if you intend to update every matching call in the configured window. Send test before using it for completed calls.
Another RTB platform
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=CALLER_NUMBER_MACRO&request_id=CALL_ID_MACRO| What | Their macro |
|---|---|
| Caller number | None |
| Caller state | None |
| Call ID | None |
We don't know when this platform creates its call ID. If it has one when you ping, put it on the ping; if not, send it with the call-ID endpoint.
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=CALLER_NUMBER_MACRO&request_id=CALL_ID_MACROThe usual mistake
Many platforms don't pass the real caller's number through. The caller ID on the call must be the caller's own number, or we can't match the call to your bid.
Your postback URL
Find your platform's URL for conversions from a buyer. It may be called a postback, a pixel or a webhook. Put {CALL_ID} where the call ID goes and {PAYOUT} where the amount goes.
A phone number
If your buyer gave you a phone number instead of a ping key, you don't ping: dial the number, with the caller's own number as the caller ID.
The usual mistake
Don't mask the caller ID. The call must show the caller's own number.
Your postback URL
If your platform takes conversions by URL, send it to us with {CALL_ID} or {PHONE} to name the call and {PAYOUT} for the amount.