March 2026
Release Notes: 2026-03-10 — RTB — RTB Templates: One-Click Setup for Major Platforms
Section titled “Release Notes: 2026-03-10 — RTB — RTB Templates: One-Click Setup for Major Platforms”Overview
Section titled “Overview”Setting up Real-Time Bidding (RTB) connections just got dramatically easier. We’ve added pre-built configuration templates for the industry’s most popular platforms, letting you go live in minutes instead of hours.
Supported Platforms
Section titled “Supported Platforms”-
Ringba — Full ping/post configuration with SIP routing support
-
Retreaver — Standard RTB endpoint with bid response mapping
-
TrackDrive — Complete request/response configuration
-
Phonexa — Pre-configured for Phonexa RTB endpoints
-
33 Mile — Ready-to-use 33 Mile integration
Getting Started
Section titled “Getting Started”-
Navigate to Targets / RTBs
-
Click Create RTB Target (or edit an existing one)
-
Click Load Template
-
Select your platform
-
Enter your platform-specific credentials
-
Save and test
Questions? Contact your account manager or reach out to support@mojaai.com.
Originally published at https://help.mojaai.com/en/articles/14025800-release-notes-2026-03-10-rtb-rtb-templates-one-click-setup-for-major-platformsRelease Notes: 2026-03-13 — Routing — Sticky Caller Routing
Section titled “Release Notes: 2026-03-13 — Routing — Sticky Caller Routing”New Feature: Sticky Caller Routing
Section titled “New Feature: Sticky Caller Routing”Release Date: March 2026
Overview
Section titled “Overview”Sticky Caller Routing automatically routes returning callers to the same buyer they previously connected with — ensuring continuity and a better caller experience. When a caller dials back within your configured time window, the platform recognizes them and routes directly to their original buyer, bypassing the standard routing logic.
Why This Matters
Section titled “Why This Matters”In high-value verticals like insurance, home services, and financial services, repeat callers often represent warm leads returning to complete a purchase or follow up on a quote. Routing these callers back to the same buyer:
-
Increases conversion rates — buyer already has context from the previous call
-
Improves caller experience — continuity with the same company
-
Reduces friction — no need to re-qualify or re-route
How It Works
Section titled “How It Works”-
Enable Sticky Caller Routing on your campaign
-
Set your lookback window (e.g., 30 days)
-
When a repeat caller dials in, the platform checks if they have called this campaign before
-
If a match is found within the lookback window, the call routes directly to the original buyer
The feature works alongside your existing routing configuration — it only activates for callers who have a previous call history within the time window you define.
Getting Started
Section titled “Getting Started”Step 1: Navigate to Campaign Settings
Section titled “Step 1: Navigate to Campaign Settings”-
Go to Campaigns and select your campaign
-
Click Settings
-
Scroll to Duplicate Call Routing Settings
Step 2: Enable the Feature
Section titled “Step 2: Enable the Feature”-
Toggle Enable Sticky Caller Routing to On
-
Select the action: Route to Same Buyer
Step 3: Configure the Lookback Window
Section titled “Step 3: Configure the Lookback Window”-
Enter the lookback value (e.g., 30)
-
Select the unit: Hours, Days, or Months
-
Click Save
Default configuration: 30-day lookback window
Example Use Case
Section titled “Example Use Case”Auto Insurance Campaign: A caller requests a quote on Monday but needs to discuss with their spouse. Three days later, the caller calls back. With Sticky Caller Routing enabled (30-day window), the call automatically routes to the same buyer — maintaining continuity and increasing the chance of conversion.
Important Notes
Section titled “Important Notes”-
Priority routing: When a repeat caller is detected, the call routes directly to the original buyer — even if that buyer is outside their normal hours of operation or has reached other caps
-
Campaign-level: This feature is configured per campaign. Different campaigns can have different lookback windows based on your sales cycle
-
Call logs: Repeat caller routing events are logged in your call details, showing why the call was routed to that specific buyer
Questions?
Section titled “Questions?”Contact your account manager or reach out to support@mojaai.com for help configuring Sticky Caller Routing for your campaigns.
Originally published at https://help.mojaai.com/en/articles/14062706-release-notes-2026-03-13-routing-sticky-caller-routingRelease Notes: 2026-03-24 — AI Agents — Conversational AI Agents
Section titled “Release Notes: 2026-03-24 — AI Agents — Conversational AI Agents”Release Announcement: Conversational AI Agents (Early Access)
Section titled “Release Announcement: Conversational AI Agents (Early Access)”Release Date: March 2026
Availability: Early access — contact your account manager to enable this feature for your organization.
Overview
Section titled “Overview”Moja now supports Conversational AI Agents — voice-based AI that can answer inbound calls, have natural conversations with callers, and collect structured data as tags. When the agent has gathered the information it needs, it hands the call off with the captured data attached for routing and reporting.
Why This Matters
Section titled “Why This Matters”Collecting caller information before routing has traditionally meant IVR menus or live agents. Conversational AI Agents add a third option: a natural voice conversation that gathers the data you need — without the rigidity of keypress menus or the cost of a human on every call.
The agent collects information as structured tags, which means the data flows directly into your existing routing logic and call reporting.
What’s Included
Section titled “What’s Included”AI-Powered Tag Collection
Section titled “AI-Powered Tag Collection”Define the tags you want collected — caller name, zip code, service type, or any custom field. The AI agent asks callers naturally and captures their responses as structured key/value pairs. You provide descriptions for each tag to guide the agent’s questions.
Multiple LLM Model Options
Section titled “Multiple LLM Model Options”Choose from 40+ language models across providers including OpenAI, Anthropic (Claude), Google (Gemini), and others. The model picker displays estimated latency and cost per minute to help you balance conversation quality with response speed.
Agent Handover with Captured Data
Section titled “Agent Handover with Captured Data”When the agent finishes collecting information, it triggers a handover that passes the captured tags along with the call. The data is available for downstream routing decisions and appears in your call records.
Tag Visibility in Call Life Log
Section titled “Tag Visibility in Call Life Log”Agent-captured tags appear directly in the Call Life Log. You can see exactly what the AI collected during the conversation and what was applied to the call — displayed as a clear key/value table with both the agent’s raw captures and the final applied tags.
Creating an Agent
Section titled “Creating an Agent”-
Navigate to Agents in the sidebar
-
Click Create Agent
-
On the Agent tab, fill in the following:
-
Name — a descriptive name for your agent
-
Description — internal notes about this agent’s purpose
-
First Message — the greeting callers hear when the agent picks up (e.g., “Hi, thanks for calling! How can I help you today?”)
-
System Prompt — instructions for how your agent should behave, what to ask, and how to respond
-
Language — select from 30+ supported languages
-
Collection Tags — the data you want collected from callers. Each tag has a name and optional description to guide the agent
-
Voice — choose from a library of natural-sounding voices
-
TTS Model — select a text-to-speech model family
-
LLM Model — choose the AI model powering the conversation (40+ options with latency and cost estimates)
-
Temperature — adjust how creative vs. consistent the agent’s responses are
-
Max Duration — set the maximum call length (default: 10 minutes)
-
-
Under Advanced Settings, optionally configure:
-
Turn Eagerness — how quickly the agent responds (Eager, Normal, or Patient)
-
Interruptible — whether callers can interrupt the agent mid-sentence
-
Stability and Speed — fine-tune voice output
-
Audio Tags — vocal characteristics like accents or tone
-
-
Use the Knowledge Base and Tools tabs if needed for your use case
-
Save the agent
Adding an Agent to a Call Flow
Section titled “Adding an Agent to a Call Flow”Once your agent is created, work with your account team to add it to a call flow. Your agent can be used as a primary destination, a fallback for missed calls, or an after-hours handler within your existing routing logic.
Getting Started
Section titled “Getting Started”-
Request access: Contact your account manager to enable Conversational AI Agents for your organization
-
Create your agent: Follow the steps above to configure voice, prompt, tags, and model
-
Test: Place test calls to verify the agent collects the right data and handles conversations as expected
-
Review: Check the Call Life Log to confirm captured tags and handover data appear correctly
-
Go live: Work with your account team to add the agent to your call flow
Example
Section titled “Example”An insurance network handling 500+ daily calls configures an AI agent with three collection tags: Insurance Type, Zip Code, and Current Coverage Status. When a caller reaches the agent, it has a brief conversation to gather this information, then hands the call off with the captured data as tags — visible in the Call Life Log and available for routing. No IVR trees, no hold queues.
Questions?
Section titled “Questions?”Reach out to your account manager or contact support for help getting started with Conversational AI Agents.
Originally published at https://help.mojaai.com/en/articles/14183680-release-notes-2026-03-24-ai-agents-conversational-ai-agentsRelease Notes: 2026-03-27 — Platform — Release Update — March 27, 2026
Section titled “Release Notes: 2026-03-27 — Platform — Release Update — March 27, 2026”VICIdial CSV Availability Check Support
Section titled “VICIdial CSV Availability Check Support”Enhancement
What changed: Added support for parsing CSV/delimited responses in buyer availability checks. Previously, availability checks only supported JSON responses. Now the system can parse CSV, pipe-delimited, and tab-delimited responses — enabling integrations with VICIdial and other legacy telephony APIs.
Why it matters: Buyers using VICIdial (very common in pay-per-call) can now use real-time agent availability routing without needing a custom middleware proxy. Field extraction like agents_waiting > 0 works directly on CSV responses.
Legacy Cap Settings UI Removal
Section titled “Legacy Cap Settings UI Removal”Fix (cleanup)
What changed: Removed the old/legacy cap settings from the UI for Target, Campaign, RTB, and Buyer. These were replaced by Advanced Caps but the old UI elements were still visible, causing confusion.
Why it matters: Cleaner UI — users only see Advanced Caps now, reducing confusion about which cap settings are active.
Deactivate Inbound RTB Endpoints
Section titled “Deactivate Inbound RTB Endpoints”Enhancement
What changed: Added the ability to deactivate an inbound RTB endpoint (publisher) on a campaign without deleting the configuration. Previously, the only workaround was cloning the campaign and making the clone inactive.
Why it matters: Customers can now quickly stop traffic from a specific inbound RTB source with one click, while preserving the configuration for easy reactivation later.
Originally published at https://help.mojaai.com/en/articles/14302121-release-notes-2026-03-27-platform-release-update-march-27-2026Release Notes: 2026-04-03 — Webhooks — Webhook Postbacks: Multi-Field Call Updates
Section titled “Release Notes: 2026-04-03 — Webhooks — Webhook Postbacks: Multi-Field Call Updates”FEATURE ENHANCEMENT RELEASE
Section titled “FEATURE ENHANCEMENT RELEASE”Location: Webhooks → Incoming
Release Date: March 27, 2026
We’ve introduced a powerful new webhook type — update_fields — that lets you update multiple call record fields in a single postback request. No more chaining separate revenue and tag updates — handle everything in one call.
What’s New
Section titled “What’s New”update_fieldsWebhook Type — A new unified incoming webhook type that accepts any combination of field updates in one request.
The following fields can be updated on an existing call record:
-
converted(boolean) — Mark a call as converted or remove conversion status -
call_converted_at(datetime or null) — Set an explicit conversion timestamp -
revenue_paid_out(number) — Override the revenue payout amount -
publisher_paid_out(number) — Override the publisher payout amount (completed calls only) -
reason(string or null) — Set or clear the call reason/disposition -
no_payout_reason— Set or clear a payout hold reason. Values: Campaign preconversion, Condition not met, Caps exceeded, or null (completed calls only) -
add(object or array) — Add or update tags on the call -
remove(string or string[]) — Remove tags by key
GET and POST Support — Send postbacks via POST (JSON body) or GET (query parameters). GET support is useful for simple integrations, tracking pixels, or systems that can only fire a URL. GET is also now available on the existing update_revenue and update_tags endpoints.
Flexible Payload Structure — Fields can be sent at the top level or nested inside a fields object — both formats work. Calls can be identified by call_log_id or phone_number.
Live and Completed Call Support — Postbacks work regardless of call state. Completed calls are updated directly. For live/active calls, updates are queued and applied when the call completes.
Why This Matters
Section titled “Why This Matters”Handle conversion + revenue + disposition + tags in a single request instead of managing multiple webhook configs. GET support opens the door to simpler integrations that don’t require building a POST request.
Example Use Cases
Section titled “Example Use Cases”-
A lead management system sends a single postback when a lead converts: sets converted, revenue, and reason — all in one request
-
A tracking pixel fires a GET URL with revenue and conversion data as query parameters
-
A CRM updates publisher payouts and hold reasons on completed calls for billing reconciliation
Getting Started
Section titled “Getting Started”-
Navigate to Webhooks → Incoming → Create
-
Select type
update_fields -
Copy the generated auth key and endpoint URL
-
Configure your external system to send POST or GET requests with the call identifier and fields to update
-
Test with a completed call to verify fields are updated correctly
Note: The existing update_revenue and update_tags webhook types continue to work exactly as before.
Batch Updates — Now Available
Section titled “Batch Updates — Now Available”Batch updates are here. As of April 3, 2026, the update_revenue, update_tags, and update_fields postback types accept an array of call_log_id values — letting you update up to 50 calls in a single request.
Existing single-ID requests are unchanged. Batch support is fully backward-compatible.
What’s new
Section titled “What’s new”Previously, each postback request updated exactly one call. Now you can pass call_log_id as a JSON array to apply the same update to multiple calls at once.
Before (single — still works):
{ “call_log_id”: “abc-123”, “converted”: true, “revenue_paid_out”: 25.50}
Now (batch):
{ “call_log_id”: [“abc-123”, “def-456”, “ghi-789”], “converted”: true, “revenue_paid_out”: 25.50}
Key details
Section titled “Key details”| Supported postback types | update_revenue, update_tags, update_fields |
| Maximum calls per request | 50 |
| HTTP method required | POST with a JSON body. (GET continues to work for single-ID requests only.) |
| call_log_id and phone_number | You cannot pass an array call_log_id together with phone_number in the same request. Use one or the other. |
| Same values applied to all calls | The field values in the request body are applied to every call in the array. To set different values per call, send separate requests. |
Response
Section titled “Response”The response for a batch request includes:
-
call_log_ids— IDs that were successfully updated. -
failed_call_log_ids— IDs that could not be updated. Empty if all succeeded.
{ “call_log_ids”: [“abc-123”, “def-456”], “failed_call_log_ids”: [“ghi-789”]}
A failed ID does not block the rest of the batch. Check failed_call_log_ids on every response and retry individually if needed.
Examples
Section titled “Examples”Batch update_revenue:
POST {base_url}/update-revenue?moja_auth_key={auth_key}{ “call_log_id”: [“abc-123”, “def-456”, “ghi-789”], “revenue_paid_out”: 25.50}
Batch update_tags:
POST {base_url}/update-tags?moja_auth_key={auth_key}{ “call_log_id”: [“abc-123”, “def-456”, “ghi-789”], “add”: [{“customer_type”: “premium”}], “remove”: [“old_tag”]}
Batch update_fields:
POST {base_url}/update-fields?moja_auth_key={auth_key}{ “call_log_id”: [“abc-123”, “def-456”, “ghi-789”], “converted”: true, “revenue_paid_out”: 25.50, “disposition”: “sale”}
Originally published at https://help.mojaai.com/en/articles/14311640-release-notes-2026-04-03-webhooks-webhook-postbacks-multi-field-call-updates
