Skip to content

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”

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.

  • 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

  1. Navigate to Targets / RTBs

  2. Click Create RTB Target (or edit an existing one)

  3. Click Load Template

  4. Select your platform

  5. Enter your platform-specific credentials

  6. 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-platforms

Release Notes: 2026-03-13 — Routing — Sticky Caller Routing

Section titled “Release Notes: 2026-03-13 — Routing — Sticky Caller Routing”

Release Date: March 2026


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.


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


  1. Enable Sticky Caller Routing on your campaign

  2. Set your lookback window (e.g., 30 days)

  3. When a repeat caller dials in, the platform checks if they have called this campaign before

  4. 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.


  1. Go to Campaigns and select your campaign

  2. Click Settings

  3. Scroll to Duplicate Call Routing Settings

  1. Toggle Enable Sticky Caller Routing to On

  2. Select the action: Route to Same Buyer

  1. Enter the lookback value (e.g., 30)

  2. Select the unit: Hours, Days, or Months

  3. Click Save

Default configuration: 30-day lookback window


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.


  • 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


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-routing

Release 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.

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.

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.

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.

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.

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.

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.

  1. Navigate to Agents in the sidebar

  2. Click Create Agent

  3. 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)

  4. 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

  5. Use the Knowledge Base and Tools tabs if needed for your use case

  6. Save the agent

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.

  1. Request access: Contact your account manager to enable Conversational AI Agents for your organization

  2. Create your agent: Follow the steps above to configure voice, prompt, tags, and model

  3. Test: Place test calls to verify the agent collects the right data and handles conversations as expected

  4. Review: Check the Call Life Log to confirm captured tags and handover data appear correctly

  5. Go live: Work with your account team to add the agent to your call flow

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.

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-agents

Release Notes: 2026-03-27 — Platform — Release Update — March 27, 2026

Section titled “Release Notes: 2026-03-27 — Platform — Release Update — March 27, 2026”

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.


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.


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-2026

Release 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”

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.

  • update_fields Webhook 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.

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.

  • 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

  1. Navigate to Webhooks → Incoming → Create

  2. Select type update_fields

  3. Copy the generated auth key and endpoint URL

  4. Configure your external system to send POST or GET requests with the call identifier and fields to update

  5. 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 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.

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}

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.

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.

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