InboundXPublisher docs

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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[tag:InboundNumber:Number-NoPlus]&request_id=[Call:InboundCallId]
WhatTheir macro
Caller number[tag:InboundNumber:Number-NoPlus]
Caller stateNone
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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[caller_number]&caller_state=[caller_state]&request_id=[call_uuid]
WhatTheir 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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[[tag:CallerId]]&caller_state=[[tag:InboundStateCode]]
WhatTheir macro
Caller number[[tag:CallerId]]
Caller state[[tag:InboundStateCode]]
Call IDNone

The call ID is created only when the call arrives, so send it with the call-ID endpoint.

URL · Your call ID
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[[tag:CallerId]]&request_id=CALL_ID_MACRO

The 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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[caller_id]&caller_state=[geo_state]&request_id=[call_uuid]
WhatTheir 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.

URL · Your call ID
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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&caller_state=[STATE]
WhatTheir macro
Caller number[CALLER_ID]
Caller state[STATE]
Call IDNone

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.

URL · Your call ID
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&request_id=CALL_ID_MACRO

The 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

Open the setup guide →

URL · Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=CALLER_NUMBER_MACRO&request_id=CALL_ID_MACRO
WhatTheir macro
Caller numberNone
Caller stateNone
Call IDNone

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.

URL · Your call ID
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=CALLER_NUMBER_MACRO&request_id=CALL_ID_MACRO

The 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

A phone number isn't a platform: any platform can send calls to one. Open the phone number (DID) guide. →

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.

Your ping keys come from the buyer you send calls to. Ask them for a key, or for help with your setup.© InboundX