Skip to main content

Outbound RTB Guide: Selling Calls via Real-Time Bidding

D
Written by Denise Abdullah
Updated over 2 weeks ago

Outbound RTB Guide v4: Selling Calls via Real-Time Bidding

Outbound RTB Guide v4: Selling Calls via Real-Time Bidding

Version: 4.0
Last Updated: March 13, 2026
Audience: Publishers/sellers auctioning calls to multiple buyers
Feedback: [email protected]


Quick Start TL;DR

Outbound RTB in 5 Bullets:

  1. You're the seller — You have calls and want to auction them to buyers

  2. More buyers = higher payouts — Competition drives up bids (1 buyer = discount, not auction)

  3. Start with a template — Use pre-built configurations for major RTB platforms

  4. Test with static values — Put real phone/zip when testing, NOT [CALLER_ID] brackets

  5. Save quickly — RTB Targets can't be saved without response mapping; use templates to avoid timeout issues


Table of Contents

  1. What is Outbound RTB?

  2. When to Use Outbound RTB

  3. Prerequisites

  4. How Outbound RTB Works

  5. Configuration Steps

  6. RTB Templates (Quick Start)

  7. Saving RTB Targets

  8. Testing with Static vs Dynamic Values

  9. Platform-Specific Configuration

  10. Lead Protection (Multi-Step RTB)

  11. Why You Need Multiple Buyers

  12. Real Revenue Example

  13. Timeout Trade-offs

  14. Self-Testing Your Configuration

  15. Monitoring Performance

  16. Optimization Tips

  17. Troubleshooting

  18. FAQ

  19. What's Next


What is Outbound RTB?

Outbound RTB (Real-Time Bidding) allows you to sell calls by auctioning them to multiple buyers in real-time. When you have a call available, you send bid requests to buyers, they respond with offers, and typically the highest bidder wins the call.

You Are the Seller/Publisher

In outbound RTB:

  • You have calls to sell (from marketing, publishers, campaigns)

  • You send bid requests to multiple buyers

  • Buyers respond with how much they'll pay

  • Highest bidder wins (or you can use other selection criteria)

  • You earn more than fixed-rate routing by creating buyer competition

Why It's Called "Outbound"

The RTB requests go OUT from your system to buyers. You're sending pings, not receiving them.


When to Use Outbound RTB

Use Outbound RTB When:

  • ✅ You have multiple buyers interested in the same call types (2+ buyers minimum)

  • ✅ You want to maximize revenue by creating buyer competition

  • ✅ Buyer demand fluctuates (some days/times they want more volume)

  • ✅ You want to reduce risk of a single buyer dropping out

  • ✅ You need intelligent routing based on bid price, buyer performance, caps

Skip Outbound RTB When:

  • ❌ You only have 1 buyer (no competition = no auction, just giving them a discount)

  • ❌ Your buyers can't respond quickly (slow responses lose auctions)

  • ❌ Your buyers don't have RTB infrastructure (requires technical capability on their side)

  • ❌ You have exclusive direct deals at higher rates than RTB would generate


Prerequisites

Before setting up outbound RTB, you need:

1. At Least 2 Buyers with RTB Endpoints

  • Minimum: 2 buyers (for basic competition)

  • Ideal: 3-5 buyers (for healthy competition)

  • Diminishing returns: 6+ buyers (good, but latency increases)

💡 Recommendation: Use RTB Groups for parallel bidding. Without RTB Groups, the system checks endpoints sequentially (slower). RTB Groups send bid requests to all buyers simultaneously, improving response time and win rates.

Your buyers must provide:

  • RTB endpoint URL (e.g., https://api.retreaver.com/rtb/bid)

  • Authentication (API key, bearer token, etc.) — if required

  • Request format (which parameters they expect)

  • Response format (recommended) — Moja's test request will show their actual response, but having their docs helps verify you're mapping correctly

Common Buyer Platforms:

  • Ringba

  • Retreaver

  • TrackDrive

  • Phonexa

  • 33 Mile Radius

  • LeadsPedia

  • Other call tracking platforms with RTB

2. Buyer Data in Moja

Create Buyer records in Moja:

  1. Go to Buyers → Create Buyer

  2. Enter buyer name and contact info

  3. You'll reference these buyers when creating RTB targets

3. Routing Plan to Trigger RTB

Outbound RTB is triggered within a Routing Plan. You need:

  • A Campaign (call flow is optional)

  • A Routing Plan where you'll add RTB as a routing destination

💡 Note: You can't hit a destination phone number without a routing plan, regardless of whether you use a call flow.


How Outbound RTB Works

The Flow

Call arrives in your Moja campaign
    ↓
Routing plan evaluates (filters, priority, etc.)
    ↓
RTB Group or RTB Target is selected
    ↓
Moja sends parallel bid requests to all buyers in the group
    (RTB Groups only - standalone RTB Targets are checked sequentially)
    ↓
Buyers respond with offers (phone number, payout, duration)
    ↓
Moja filters by minimum bid (RTB Groups only) and applies caps
    ↓
Highest valid bidder wins
    ↓
If winner has "Winning Step", execute it
    ↓
Route call to winning buyer's phone number
    ↓
You get paid the winning bid amount

Key Concepts

RTB Target: A single buyer's endpoint configuration (URL, auth, field mapping)

RTB Group: A collection of RTB Targets that compete in an auction

  • Set minimum bid (filter out low offers)

  • Set timeout (how long to wait for responses)

  • Set maximum bid per target (cap individual buyers)

Winning Step: Optional actions to execute AFTER winning (e.g., reserve inventory, confirm booking) — ⚠️ WARNING: Only works inside RTB Groups, FAILS if used standalone

Continue on Failure: Allow RTB to proceed to next step even if one fails (useful for non-critical requests)


Configuration Steps

Overview: Two Paths to RTB

You have two options for implementing outbound RTB:

Option A: RTB Groups (Recommended for Multiple Buyers)

When to use:

  • You have 2+ buyers

  • You want parallel bidding (auction format)

  • You want to set minimum bid thresholds

  • You need buyer competition to maximize revenue

Steps:

  1. Create RTB Targets for each buyer

  2. Create RTB Group to hold them

  3. Add RTB Group to routing plan

Benefits: Parallel bidding, true auction, highest revenue potential

Option B: Standalone RTB Target (Simple Routing)

When to use:

  • You have a single buyer

  • You want simple sequential routing without auction logic

  • You're testing a new buyer integration

  • You have specific routing requirements that don't need competition

Steps:

  1. Create RTB Target for buyer

  2. Add RTB Target directly to routing plan

Limitations:

  • No parallel bidding (sequential only)

  • No minimum bid filtering

  • Winning steps won't execute

  • No auction competition

💡 Recommendation: Even with one buyer initially, consider setting up RTB Groups from the start. It makes adding future buyers easier and enables parallel bidding when you're ready.


Step 1: Create RTB Targets (One Per Buyer)

For each buyer, create an RTB Target:

1.1: Navigate to RTB Targets

  1. Log into Moja

  2. Go to Targets / RTBs → RTBs

  3. Click Create RTB Target

1.2: Basic Configuration

RTB Name: Descriptive name (e.g., "Ringba - Insurance Buyer A")

Buyer: Select from your Buyer records (or create new)

Status: Set to "Active" when ready to use

1.3: Quick Start with Templates (Recommended)

⚠️ BEFORE configuring manually, check if we have a template for your buyer's platform. Templates skip most configuration headaches and avoid the session timeout issue entirely.

See RTB Templates section below for pre-built configurations for:

  • Ringba

  • Retreaver

  • TrackDrive

  • Phonexa

  • 33 Mile Radius

  • LeadsPedia

If you find a matching template, load it and skip to Step 1.6 (map your specific credentials). If not, continue with manual configuration below.

1.4: Manual Configuration (Step 1 - Request)

HTTP Method: Usually GET or POST (check buyer's documentation or template)

Request URL: Buyer's RTB endpoint (e.g., https://api.ringba.com/v2/rtb/bid)

Params Tab (Query Parameters):

Add parameters buyers expect. Common examples:

  • caller_id = [CALLER_ID] (or test with real number: +16067277702)

  • zip = [ZIP] or [ZIP_CODE]

  • state = [STATE]

  • source = [SOURCE]

  • campaign_id = [CAMPAIGN_ID]

⚠️ IMPORTANT: When testing/building, use REAL VALUES (see Testing with Static vs Dynamic Values)

Tag Formats: Moja accepts multiple formats for common tags:

  • Caller ID: [CALLER_ID], [caller_id], [CallerID], [callerid]

  • State: [STATE], [state], [State]

  • ZIP: [ZIP], [zip], [Zip]

  • Custom tags (other than the above) ARE case-sensitive — use exact spelling

Headers Tab:

Add authentication headers:

  • Authorization: Bearer YOUR_API_KEY

  • Or X-API-Key: YOUR_KEY

Body Tab (if POST):

Select body type:

  • x-www-form-urlencoded (most common)

  • json (for JSON requests)

  • form-data (less common)

💡 Note: Most RTB platforms accept parameters either in the request body OR as query parameters. Both methods are valid for key-value pairs. Choose based on your buyer's preference.

Add parameters:

  • caller_id = +16067277702 (test value)

  • zip = 90210 (test value)

  • state = CA

Auth Tab:

Quick authentication setup:

  • Bearer Token: Paste token

  • API Key: Choose header or query param, paste key

  • Basic Auth: Paste base64 credentials

1.5: Test the Request

Click "Send" button to test:

  • Sends request to buyer's endpoint

  • Displays response in collapsible panel

  • Verify you get valid response with phone number, payout, duration

Common Issues:

  • 401 Unauthorized: Check auth credentials

  • 400 Bad Request: Missing required parameters

  • Timeout: Buyer's endpoint is slow or down

1.6: Map Response Fields

After getting a valid response, map fields:

  • Phone Number: Select the field containing the routing phone number (e.g., data.phone_number)

  • Payout: Select the field containing the bid amount (e.g., data.payout or data.bid)

  • Duration: Select the field containing expected call duration in seconds (e.g., data.duration)

⚠️ CRITICAL: These mappings are REQUIRED. You cannot save without mapping all three (unless using "Use Predefined Phone Number" option).

1.7: Configure Settings

Target Selection: If buyer returns multiple targets, choose how to pick winner:

  • First (default)

  • Highest payout

  • Lowest payout

  • Highest duration

  • Lowest duration

  • Random

Hours of Operation: Set when this buyer accepts calls (default: 24/7)

Timezone: Set timezone for hours interpretation (default: America/New_York)

Max Concurrency: Limit simultaneous calls to this buyer (0 = unlimited)

1.8: Save RTB Target

Click "Save" — your RTB Target is now ready to use in RTB Groups or as a standalone target in routing plans.


Step 2: Create RTB Group (For Multiple Buyers)

Now that you have 2+ RTB Targets, create an RTB Group to auction them:

2.1: Navigate to RTB Groups

  1. Go to Targets / RTBs → RTB groups

  2. Click Create RTB Group

2.2: Basic Information

Group Name: Descriptive name (e.g., "Auto Insurance Buyers - National")

2.3: Bid Settings

Minimum Bid: Lowest bid you'll accept (filters out low offers)

Example: Set to $25.00 to reject any buyer offering less than $25

2.4: Timeout Settings

Ping Timeout (milliseconds):

How long to wait for each buyer to respond before timing out.

  • Default: 2000ms (2 seconds) — Recommended for most use cases

  • Maximum: 10000ms (10 seconds)

Trade-offs: See Timeout Trade-offs section

2.5: Select RTB Targets

Add your RTB Targets to the group:

  • Click "Add RTB Target"

  • Select from dropdown (e.g., "Ringba - Buyer A", "Retreaver - Buyer B")

  • Repeat for all buyers

2.6: Set Maximum Bid Per Target (Optional)

For each RTB Target in the group, you can set a maximum acceptable bid:

Example:

  • Track Drive - Buyer A: Max bid $50.00

  • Retreaver - Buyer B: Max bid $45.00

Purpose:

  • Protect against runaway bids

  • Enforce negotiated rate maximums

  • Test new buyers at limited rates

2.7: Save RTB Group

Click "Save" — your RTB Group is ready to use in Routing Plans.


Step 3: Add RTB to Routing Plan

Now add your RTB Group (or standalone RTB Target) to a campaign's routing plan:

3.1: Navigate to Campaign Settings

  1. Go to Campaigns → Select campaign

  2. Click Settings → Routing Plans

  3. Select a routing plan or create new

3.2: Add Route

  1. Click "Add Route"

  2. Action: Select "Route to RTB Group" (recommended) or "Route to RTB Target" (for standalone)

  3. RTB Group/Target: Select from dropdown

  4. Priority: Set priority (lower number = higher priority)

3.3: Save Routing Plan

Click "Save" — your RTB configuration is now live and will start auctioning calls.


RTB Templates (Quick Start)

The fastest way to configure outbound RTB is to use pre-built templates for common buyer platforms. Templates handle all the technical details (HTTP method, URL structure, parameter mapping) so you only need to provide your credentials.

Available Templates

  1. Ringba - Standard RTB

  2. Retreaver - Standard RTB

  3. TrackDrive - Standard Ping

  4. Phonexa - Store SetData

  5. 33 Mile Radius - Standard RTB

  6. LeadsPedia - Standard Ping


Template 1: Ringba - Standard RTB

Platform: Ringba
Use Case: Standard real-time bidding for call routing
Method: GET (99% of Ringba RTB implementations use GET)

Configuration

HTTP Method: GET

Request URL:

https://rtb.ringba.com/v1/production/##{{RINGBA_UUID}}.json

Query Parameters:

  • CID = [CALLER_ID]

  • zipcode = [ZIP_CODE]

  • exposeCallerID = yes

Placeholders to Replace:

  • ##{{RINGBA_UUID}} - Your 32-character hex UUID from Ringba campaign

Response Mapping:

  • Phone Number: phoneNumber

  • Payout: bidAmount

  • Duration: bidTerms[0].callMinDuration

Timeout: 10000ms (10 seconds)


Template 2: Retreaver - Standard RTB

Platform: Retreaver
Use Case: Standard RTB integration
Method: POST

Configuration

HTTP Method: POST

Request URL:

https://rtb.retreaver.com/rtbs.json?key=##{{RETREAVER_KEY}}

💡 CRITICAL: The API key MUST go in query parameters (this is non-negotiable with Retreaver). Other fields can go in parameters OR body.

Body (JSON):

{
  "publisher_id": "##{{PUBLISHER_ID}}",
  "caller_number": "[CALLER_ID]",
  "caller_zip": "[ZIP_CODE]"
}

Response Mapping:

  • Phone Number: inbound_number

  • Payout: retreaver_payout

  • Duration: retreaver_seconds


Template 3: TrackDrive - Standard Ping

Platform: TrackDrive
Use Case: Ping-based call routing with predefined numbers
Method: POST

Configuration

HTTP Method: POST

Request URL:

https://##{{TRACKDRIVE_SUBDOMAIN}}.trackdrive.com/api/v1/inbound_webhooks/ping/##{{TRACKDRIVE_ENDPOINT}}

Query Parameters (REQUIRED):

  • trackdrive_number = ##{{TRACKDRIVE_NUMBER}}

  • traffic_source_id = ##{{TRAFFIC_SOURCE_ID}}

Body (JSON):

{
  "caller_id": "[CALLER_ID]",
  "zip": "[ZIP_CODE]"
}

Response Mapping:

  • Phone Number: NOT MAPPED (use predefined)

  • Payout: buyers[0].offer_conversion_payout

  • Duration: buyers[0].current_conversion_duration

Special Configuration:

  • ✅ Enable "Use Predefined Phone Number"

  • Phone Number: ##{{TRACKDRIVE_NUMBER}} (same as parameter above)

⚠️ CRITICAL: TrackDrive ALWAYS uses a predefined phone number. The phone number serves as both a field value in the request AND the DID (destination) for routing. Do NOT attempt to map a phone number from TrackDrive's response.


Template 4: Phonexa - Store SetData

Platform: Phonexa
Use Case: Call tracking with setData API
Method: POST

Configuration

HTTP Method: POST

Request URL:

https://##{{PHONEXA_SUBDOMAIN}}.phonexa.com/store/setdata

Body (JSON):

{
  "apiId": "##{{API_ID}}",
  "apiPassword": "##{{API_PASSWORD}}",
  "productId": "##{{PRODUCT_ID}}",
  "clientNumber": "[CALLER_ID]",
  "centerCode": "##{{CENTER_CODE}}",
  "zipCode": "[ZIP_CODE]"
}

Response Mapping:

  • Phone Number: data.phoneNumber

  • Payout: data.price

  • Duration: data.callMinDuration


Template 5: 33 Mile Radius - Standard RTB

Platform: 33 Mile Radius
Use Case: Geographic-based call routing
Method: GET

Configuration

HTTP Method: GET

Request URL:

https://calls.33mileradius.com/api/v3/

Query Parameters:

  • password = ##{{33MILE_PASSWORD}}

  • zip = [ZIP_CODE]

  • duration = 1

Response Mapping:

  • Phone Number: NOT MAPPED (use predefined)

  • Payout: amount

  • Duration: duration

⚠️ CRITICAL: Like TrackDrive, 33 Mile Radius uses predefined phone numbers. You must obtain the routing number from 33 Mile Radius and configure it as a static value.


Template 6: LeadsPedia - Standard Ping

Platform: LeadsPedia
Use Case: Lead verification and call routing
Method: GET

Configuration

HTTP Method: GET

Request URL:

https://##{{LEADSPEDIA_SUBDOMAIN}}.leadspediatrack.com/call-preping.do

Query Parameters:

  • lp_campaign_id = ##{{CAMPAIGN_ID}}

  • lp_campaign_key = ##{{CAMPAIGN_KEY}}

  • caller_id = [CALLER_ID]

  • zip_code = [ZIP_CODE]

Response Mapping:

  • Phone Number: number

  • Payout: payout

  • Duration: duration


How to Use Templates

Step 1: Load Template

  1. When creating a new RTB Target, look for "Load Template" option

  2. Select your buyer's platform from the dropdown

  3. Template auto-populates method, URL structure, parameters, and response mappings

Step 2: Fill in Your Credentials

Replace all ##{{PLACEHOLDER}} values with your actual credentials:

  • API keys

  • Account IDs

  • Subdomain names

  • Campaign identifiers

Step 3: Test Request

  1. For testing, replace [CALLER_ID] and [ZIP_CODE] with real values:

    • Example: caller_id = +16067277702

    • Example: zip = 90210

  2. Click "Send" to test the request

  3. Verify you receive a valid response

Step 4: Restore Dynamic Tags

After successful testing, restore the dynamic tags:

  • Replace test phone number with [CALLER_ID]

  • Replace test zip with [ZIP_CODE]

Step 5: Save

Click "Save" — your template-based RTB Target is ready to use!


Template Benefits

  • Faster setup - Skip manual URL/parameter configuration

  • Fewer errors - Pre-validated configurations reduce mistakes

  • Avoid session timeout - Templates load instantly, no timeout risk

  • Industry best practices - Based on real production integrations

  • Regular updates - Templates maintained as platforms evolve


Saving RTB Targets

RTB Targets cannot be saved without response mapping. If you need more time to configure, start with a template that has pre-mapped responses, save it, then continue editing.


Testing with Static vs Dynamic Values

The Confusion

When building RTB, you configure fields using tags like [CALLER_ID], [ZIP], [STATE].

Question: During testing, should you use the literal tags [CALLER_ID] or actual values like +16067277702?

The Answer: Use Actual Values When Testing

❌ WRONG (during testing):

caller_id: [CALLER_ID]
zip: [ZIP_CODE]

✅ CORRECT (during testing):

caller_id: +16067277702
zip: 90210

Why?

When you click "Send" to test your configuration:

  1. Moja sends the literal content of the fields

  2. If you have [CALLER_ID], Moja sends the string "[CALLER_ID]" (not a real phone number)

  3. Your buyer receives an incomplete request and returns an error

  4. You can't map response fields without a valid response

During live execution (real calls), Moja replaces tags with actual values:

  • [CALLER_ID] → +16067277702

  • [ZIP] → 90210

  • [STATE] → CA

Testing Flow

Step 1: Test with Static Values

Put real values in fields:

  • caller_id = +16067277702 (real phone number)

  • zip = 90210

  • state = CA

Click "Send" → Get valid response → Map fields → Save

Step 2: Replace with Dynamic Tags

After saving, go back and replace with tags:

  • caller_id = [CALLER_ID]

  • zip = [ZIP_CODE]

  • state = [STATE]

Save again.

Step 3: Test with Real Call

Send a test call through your campaign to verify tags are replaced correctly.


Platform-Specific Configuration

General Caller ID Requirements

⚠️ CRITICAL: Caller ID is essential for RTB - 90% of buyers require it.

Without caller ID:

  • Most buyers will reject your bid requests

  • You'll see low fill rates and poor performance

  • Calls won't pair with RTB buyers effectively

NPANXX Lookup (Automatic)

If caller ID is present but ZIP code or state are missing, Moja automatically performs an NPANXX lookup to populate geographic data.

You do NOT need to configure this - it happens automatically.

Platform Notes

Ringba:

  • 99% of implementations use GET method (not POST)

  • Requires UUID in URL path

  • Most buyers require caller ID and zip code

Retreaver:

  • API key MUST be in query parameters (non-negotiable)

  • Other fields can be in query params OR body (both valid)

TrackDrive:

  • ALWAYS uses predefined phone numbers

  • Phone number serves as both field value and routing destination

Phonexa:

  • Uses POST with JSON body

  • Requires API credentials in every request

33 Mile Radius:

  • Geographic-focused routing

  • Predefined phone numbers (like TrackDrive)

LeadsPedia:

  • Campaign-based routing

  • GET method with query parameters


Lead Protection (Multi-Step RTB)

The Problem

In standard RTB, you send caller data (phone number, zip, state) to buyers during the bid request. A bad actor could:

  • Log your caller data without ever winning calls

  • Cherry-pick your best leads

  • Steal your lead data to contact directly

The Solution: Multi-Step RTB

Moja supports multi-step RTB to protect your leads:

Step

What's Shared

Buyer Action

Step 1: Ping

Anonymous data only (time, vertical, general geo)

Buyer indicates interest + max bid

Step 2: Post

Full caller data (only to winner)

Winner confirms acceptance

Step 3: Transfer

Call connected

Buyer receives call and pays

Lead Protection Best Practices

  1. Minimize data in initial ping:

    • Send state, NOT zip

    • Send time/day, NOT caller ID

  2. Vet buyers before sharing full data:

    • Start with ping-only relationships

    • Graduate to full data after trust is established

  3. Monitor for data leakage:

    • Track if buyers are contacting your leads directly

    • Watch for suspicious patterns


Why You Need Multiple Buyers

1 Buyer = Discount, Not Auction

Buyers

What Happens

Your Revenue

1 buyer

No competition → they bid minimum

❌ $25/call (floor price)

2 buyers

Basic competition

✅ $35/call (20% increase)

3-5 buyers

Healthy competition

✅ $40-50/call (competitive market price)

6+ buyers

Diminishing returns

⚠️ $50-55/call (marginal gains, increased latency)

Key insight: If you only have 1 buyer, you're not running an auction. You're just routing to them at whatever rate they decide to bid (usually minimum).

Goal: Aim for 3-5 active buyers in each RTB Group for optimal competition.


Real Revenue Example

Case Study: Home Services Publisher

Before RTB (Direct Routing):

Metric

Value

Routing method

Direct to single buyer

Fixed rate

$35/call

Monthly calls

2,400

Monthly revenue

$84,000

After RTB (+3 Buyers):

Metric

Value

Routing method

RTB Group with 4 buyers

Average winning bid

$47/call

Monthly calls

2,400

Monthly revenue

$112,800

Net difference: +$28,800/month (+34% revenue increase)


Timeout Trade-offs

Choosing Your Auction Timeout

Timeout

Pros

Cons

Best For

2 seconds

Fast caller experience

May exclude slow buyers

High-volume, general leads

5 seconds

More buyers can participate

Caller waits longer

Premium leads

10 seconds

Maximum competition

Poor caller experience

Very high-value calls only

Recommendation: Start with 2 seconds.


Monitoring Performance

Where to Check Performance

Location: Go to Reporting → RTB Requests → Outbound

Key Metrics to Monitor

  1. Bid Request Volume - How many auctions you're running

  2. Response Rate Per Buyer - Should be > 90%

  3. Average Winning Bid - Track trends over time

  4. Win Rate Per Buyer - Balance across buyers indicates healthy competition


Troubleshooting

Problem: Buyers Not Responding

How to Fix:

  1. Test buyer endpoint directly (click "Send" in RTB Target config)

  2. Check buyer's status with them

  3. Verify authentication

  4. Increase timeout if needed

Problem: All Buyers Rejecting Calls

How to Fix:

  1. Check required fields (caller ID, zip)

  2. Review buyer filters

  3. Check buyer capacity

  4. Lower minimum bid

Problem: Tags Not Resolving

How to Fix:

  1. If testing from config page: This is normal — use real values for testing

  2. If in live call: Check call logs, verify tag spelling

Moja accepts multiple formats for common tags:

  • Caller ID: [CALLER_ID], [caller_id], [CallerID], [callerid]

  • State: [STATE], [state], [State]

  • ZIP: [ZIP], [zip], [Zip]

  • Custom tags ARE case-sensitive

Problem: Winning Step Fails

⚠️ CRITICAL GOTCHA: Winning Steps ONLY work inside RTB Groups. If you use an RTB Target with a winning step as a standalone target in routing plan, IT WILL FAIL.


FAQ

Q: What's the difference between RTB Target and RTB Group?

RTB Target: Configuration for a single buyer's endpoint

RTB Group: Collection of RTB Targets that compete in auction

Analogy: RTB Targets are players. RTB Groups are teams.

Q: Can I use the same RTB Target in multiple RTB Groups?

A: Yes! This is common and recommended.

Q: What happens if no buyer meets the minimum bid?

A: Moja responds with "no bid" and the call proceeds to the next route in your routing plan.

Q: How do I prevent the same buyer from winning every time?

A: Set a Maximum Bid Per Target on individual RTB Targets within your RTB Group.

How to set up:

  1. Go to RTB Groups → Select your group

  2. For each RTB Target, set the Maximum Bid Per Target value (e.g., $55.00)

  3. Save

Q: Can I offer the same call to multiple RTB Groups sequentially?

A: Yes! Use routing plan priority.

Q: How do I test RTB without impacting live calls?

A: Create a test campaign with a dedicated test phone number.


What's Next

  1. Review Your RTB Performance - Go to Reporting → RTB Requests → Outbound

  2. Multi-Step RTB Workflows - Chain multiple requests for complex integrations

  3. Custom Tags and Variables - Pass data between steps

  4. Advanced Caps and Budgets - Daily revenue caps, hourly limits


Need Help?

Documentation:

  • Inbound RTB Guide

  • Webhooks Guide

Support:


Version: 4.0
Last Updated: March 13, 2026
Feedback: [email protected]

Did this answer your question?