InboundXPublisher docs

On this page: Step 1 of 8 · Add a buyer

Connect Moja

Real-time bid (RTB) PPC: pays when the call qualifies 8 steps

Showing sample values. Sign in to use yours →

1

Add InboundX as a buyer

In Moja, add a new buyer for InboundX (some platforms call it a target) and choose the ping type, so Moja asks us before it sends each call.

From Moja's documentation Quoted as the platform documents it.

Where to add itCheck in your platform
Buyers → Create Buyer; Targets / RTBs → RTBs → Create RTB Target (older multi-step guide: Targets → RTBs).
The request editorCheck in your platform
Manual Setup: HTTP Method, Request URL, Params Tab, Headers Tab, Body Tab (form/JSON), Auth Tab. RTB Name, Buyer, Status are target fields.
Buyers › Create Buyer
Name
InboundX
Type
RTB ping
Ping URL
·
Dial
·
Illustration: the menu path is from a Moja guide that is not reviewed yet. Check it in your platform.
2

Paste your ping URL

Put this in the buyer's ping URL. Your key goes where the sample key is, and Moja fills in the bracketed tokens on every call.

Ping URL
https://app.inboundx.io/api/rtb/ping?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&caller_state=[STATE]
Keep the key secret: anyone who has it can ping as you.
Not confirmed for Moja. Where this goes in Moja's screens isn't documented. What its documentation does say is below; confirm the screen with Moja.

From Moja's documentation Quoted as the platform documents it.

Request methodsCheck in your platform
GETPOST
Caller number tokenNot confirmed: confirm with Moja
Caller state tokenNot confirmed: confirm with Moja
Caller ZIP tokenNot confirmed: confirm with Moja
Token examples in its guideCheck in your platform
caller: [CALLER_ID]state: [STATE]zip: [ZIP], [ZIP_CODE]source: [SOURCE]campaign: [CAMPAIGN_ID]
Testing from its editorCheck in your platform
Editor Send transmits literal macros; use concrete owned test values to test request/response mapping. Live-call substitution is a separate step.
3

Accept only when we bid

Tell Moja how to read our answer. We answer reserved in status when we take the caller; anything else means don't send the call.

Accept the bid when this field
status
equals
reserved
Price field
payout
Not confirmed for Moja. Where this goes in Moja's screens isn't documented. What its documentation does say is below; confirm the screen with Moja.

From Moja's documentation Quoted as the platform documents it.

How it reads our answerCheck in your platform
Map response fields to Phone Number, Payout and Duration; step variables can be used. Winning Step applies to RTB groups, not standalone RTB targets.
Fields its built-in template readsNot confirmed: confirm with Moja
Bid expiryCheck in your platform
Response Mapping → Expires At → [step1].expires_at; TTL Seconds is for relative expiry. Bid TTL has Minimum Bid TTL and Default Bid TTL.
Cached answersCheck in your platform
Outbound responses can be cached per call; expired cached bids are excluded.
4

Send the call to our address

This is our requirement, whatever platform you use: send the call to this exact address, with a real @ (not %40), within 15 seconds of the bid, with the caller's own number as the caller ID.

Send the call to
sip:YOUR_ROUTE@ADDRESS_FROM_YOUR_SETUP
This one is a sample. Copy yours from your setup message or the portal's Setup page.
Not confirmed for Moja. Where to enter it in Moja isn't confirmed. Confirm with Moja which field sends calls to a SIP address. If it fills the address in from our bid, check that it keeps the @.

From Moja's documentation Quoted as the platform documents it.

A fixed SIP addressNot confirmed: confirm with Moja
The SIP address from each bidNot confirmed: confirm with Moja
The sip: prefixNot confirmed: confirm with Moja
How it treats the @Not confirmed: confirm with Moja
5

Keep the caller's own number

Leave the caller ID as the caller's own number, and send the call within 15 seconds of our bid. We match the call to its bid by that number: your own number, or a hidden one, won't match.

Not confirmed for Moja. Where this goes in Moja's screens isn't documented. What its documentation does say is below; confirm the screen with Moja.

From Moja's documentation Quoted as the platform documents it.

Passing the caller ID throughNot confirmed: confirm with Moja
Ping timeoutCheck in your platform
conflict: trueguidecontrol: Ping Timeout (milliseconds)context: RTB group / auction timeoutdefault_ms: 2000maximum_ms: 10000api_groupschema: RTBGroupCreate.ping_timeoutunit: millisecondsdefault_ms: 5000maximum_ms: 30000api_targetschema: RTBCreate.rtb_timeoutdefault: 5000maximum: 30000unit: not stated in this propertyapi_per_target_overrideschema: RTBGroupFormulaInput.ping_timeout_per_targetunit: millisecondsmaximum_ms: 30000null_means: inherit RTB group default
The timeout your account usesNot confirmed: confirm with Moja
The caller's number on a SIP transferNot confirmed: confirm with Moja
6

Send your call ID once the call starts

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.

This is our requirement: once the call reaches your platform, call this URL with the caller's number and your platform's own call ID.

Call ID URL
https://app.inboundx.io/api/rtb/call-id?key=YOUR_PING_KEY&caller_number=[CALLER_ID]&request_id=CALL_ID_MACRO
We find the call by the caller's number, so send the same number you pinged with.
Not confirmed for Moja. How Moja sends a request when a call arrives isn't confirmed. Confirm with Moja that it can call this URL, and that its call ID exists by then.

From Moja's documentation Quoted as the platform documents it.

Call ID tokenNot confirmed: confirm with Moja
Call ID at ping timeNot confirmed: confirm with Moja
7

Don't convert on call length

This campaign pays when the call qualifies, not after a number of seconds. Turn off any duration conversion for InboundX in Moja, and ignore seconds in our bid. The postback in the next step tells Moja which calls paid.

Ignore this bid field
seconds
Not confirmed for Moja. How Moja turns off a duration conversion isn't confirmed. Confirm with Moja that only the postback marks a call as paid.
8

Tell your platform which calls paid

When a call pays, we call a URL on your platform with these tokens filled in. Here's where to find that 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.

Your call ID
{CALL_ID}
What the call earned, in US dollars
{PAYOUT}
The caller's number
{PHONE}
It should end up like this
https://your-platform.example/conversion?call={CALL_ID}&phone={PHONE}&payout={PAYOUT}
Required: it's the only way Moja learns which calls paid.

From Moja's documentation Quoted as the platform documents it.

Where conversions are set upCheck in your platform
Webhooks → Incoming → Create → update_revenue. Generated endpoint uses moja_auth_key in the query, with GET or POST supported.
Conversion URL templateCheck in your platform
https://webhooks.moja.cloud/update-revenue?moja_auth_key={POSTBACK_KEY}&call_log_id={CALL_ID}&revenue_paid_out={PAYOUT}
Conversion caveatsCheck in your platform
Call must be completed and connected or update can return 422. phone_number fallback can update multiple calls within the configured match window; prefer call_log_id.
Webhooks › Incoming › Create › update_revenue
Name
InboundX
Conversion URL
https://your-platform.example/conversion?call=…
Illustration: the menu path is from a Moja guide that is not reviewed yet. Check it in your platform.

Test my setup

One test ping through your Moja setup. We show what arrived, and what to change, as it happens.

Test my setupNo login
Not started

Check your Moja setup with one test ping

We'll give you a temporary ping URL. Put it in your platform in place of your real one, call your tracking number from any phone, and see what arrived, in plain words.

  • Your ping arrives
    waiting
  • The caller's number is filled in
    waiting
  • The caller's state is readable
    waiting
  • Every field is under a name we read
    waiting
  • The call arrives inside the hold
    not tested yet
  • The call's caller ID matches the ping
    not tested yet
Nothing is billed and no agent is held: every ping gets a test bid that can't be dialled.
Still stuck? of your setup and we'll point at the wrong field.Every platform at a glance
Your ping keys come from the buyer you send calls to. Ask them for a key, or for help with your setup.© InboundX