Saaya Campaigns

Million-call scale. One playbook.

Bulk outbound voice, WhatsApp, and SMS — driven by the same Saaya agent runtime. Upload a CSV, define a channel cascade, set retry and time-of-day rules, hit launch. Live ops dashboard watches every dispatch in flight.

What it is

A dispatch engine, not a dialer.

Saaya Campaigns turns a CSV into a million conversations without anyone touching a phone. Voice first, with WhatsApp and SMS as cascading fallbacks — same agent definition, three channels, automatic hand-off based on reachability, consent, and outcome.

It is not a dumb dialer. The runtime is the same Saaya Agent that picks up your inbound calls — versioned, knowledge-grounded, tool-using, multilingual. The only difference is who initiates the conversation: this time, it is you.

Production discipline is baked in. Retry policies on busy/no-answer/voicemail. Time-of-day windows by region. Opt-out lists and DNC registries respected automatically. Throttle and pacing per region so you never trip carrier rate-limits. Every state change emits a webhook and a row in the live ops dashboard.

Capabilities

What ships with Campaigns.

The pieces every outbound program needs in week one — and the ones most teams discover they need in week six.

CSV ingest with templates

Drop a CSV with phone, name, and any custom fields. Map columns to template variables. Validate against E.164, region, and DNC lists before a single call goes out.

Channel cascades

Voice first. If unreachable, fall through to WhatsApp. If still no answer, SMS. Configure the order, the wait between hops, and the per-hop opt-out behavior.

Retry & time-of-day windows

Per-outcome retry rules — busy, no-answer, voicemail, machine-detected. Region-aware time-of-day windows so you never call a US lead at 2am India time.

Live ops dashboard

Pacing, completion, delivery, opt-out, and conversion in real time. Drill into any in-flight call, see live transcript, override or pause without redeploying.

Opt-out & DNC

Per-org opt-out list, plus carrier DNC registries by region (TCPA, DPDP, GDPR, OFCOM). Suppression is automatic; an opt-out on voice propagates to WhatsApp and SMS instantly.

Throttle & rate-limits per region

Concurrency caps and per-second pacing per region and per carrier. Prevents carrier blocks, smooths spikes, and keeps deliverability scores healthy across millions of dispatches.

How it works

Three steps from CSV to in-flight.

Most teams launch their first production campaign on day one.

  • 01

    Upload list

    Drop a CSV. Saaya validates phone numbers (E.164), de-duplicates, scrubs against opt-out and DNC lists, and maps custom fields to template variables.

  • 02

    Configure cascade

    Pick the agent, the channel order (voice → WhatsApp → SMS), retry rules, time-of-day windows, and concurrency caps. Preview a dry-run against five rows.

  • 03

    Launch & monitor

    Hit launch. Watch the live ops dashboard — pacing, completion, conversion. Pause, throttle, or amend mid-flight. Webhooks fire on every state change.

  • For developers

    Launch a campaign from code.

    The dashboard and the API do the same things. Use whichever fits your workflow.

    TypeScript SDK
    import { saaya } from '@saaya/sdk'
    
    // 1. Create the campaign
    const campaign = await saaya.campaigns.create({
      name: 'q2-renewal-outreach',
      agentId: 'agent_renewals_v3',
      list: { type: 'csv', url: 's3://acme-leads/q2.csv' },
      cascade: [
        { channel: 'voice',    waitAfterSeconds: 0 },
        { channel: 'whatsapp', waitAfterSeconds: 3600 },
        { channel: 'sms',      waitAfterSeconds: 14400 },
      ],
      retry: {
        busy:      { maxAttempts: 3, backoffMinutes: 30 },
        noAnswer:  { maxAttempts: 2, backoffMinutes: 60 },
        voicemail: { maxAttempts: 1, backoffMinutes: 0  },
      },
      windows: { 'US': '09:00-19:00', 'IN': '10:00-20:00' },
      pacing:  { concurrency: 500, perSecond: 50 },
    })
    
    // 2. Start it
    await saaya.campaigns.start(campaign.id)
    
    // 3. Watch it
    const live = await saaya.campaigns.list({ status: 'running' })
    Pricing

    On every tier — what you get.

    Campaigns sits on top of the Agents runtime. Voice and WhatsApp minutes are billed at usage rates; the dispatch engine itself is free below the included quota.

    Free

    Not available on Free. Campaigns require Growth or higher.

    Growth

    Up to 50K dispatches/month · channel cascades · retry & TOD rules · live ops dashboard · opt-out & DNC · webhooks on every state change.

    Enterprise

    Million-call scale · dedicated carrier routes · region-pinned dispatch · BYO SIP trunk · SOC2 + DPA · priority support during launches · 99.95% SLA.

    See it in context

    Pair this with the right Solution.

    FAQ

    Frequently Asked Questions.

    Final step

    Launch your first campaign.

    CSV in, calls out — in under thirty minutes. Growth and Enterprise plans include the dispatch engine; voice and WhatsApp minutes billed at usage.

    Get started with CampaignsSee it on Sales

    Free plan · No credit card · 15-min setup