Hooman Labs DocsGuideReference

Campaigns

Campaigns automate outbound calling at scale. Each phone number you supply becomes an individual task that your agent will dial.

There are two campaign types:

  1. Batch – Upload a CSV of contacts and launch calls in bulk.

  2. Realtime – Create a persistent campaign and push tasks via API as they arise.

Batch campaigns

Use when you have a static list of numbers to call.

Steps to create

  1. Go to Campaigns → Batch and click + Create Campaign.

  2. Fill out basics

    Field

    Purpose

    Name

    Internal label (e.g., Abandoned Cart Recovery 12 Jan)

    Agent

    Which AI agent will place the calls

    Calling Number

    Caller ID shown to recipients

    Priority

    Normal (default) or Low ,High

  3. Upload CSV (up to 5K rows).:
    • First column header must be phone and phone numbers must have respective country codes.
    • Provide context to agent in other columns as per your requirements and reference them in your prompt using column headers. (e.g., ${name}, ${orderId}).

  4. Time settings
    Timezone: Controls schedule & calling hours.
    Start Time: Start now or schedule to start later.
    End Time: Campaign stops and archives any pending tasks.
    Calling Hours: Daily calling window (e.g., 10:00–20:00). Calls pause outside this window.

  5. Follow up settings

    Setting

    Purpose

    Retries

    0 = single attempt. ≥1 = additional attempts allowed.

    Retry Interval

    Gap from the last attempt’s end‑time before the next retry.

    Retry Conditions

    Which call outcomes should be retried (see table below).

Every CSV row becomes a task with identical config (agent, caller ID, retry rules, etc.) only the callee’s number and context differs.

Realtime campaigns

Ideal for on‑demand or event‑driven calls (e.g., instant lead follow‑up).

Steps to create

  1. Go to Campaigns → Realtime and click + Create Campaign.

  2. Fill the same Basics (Name, Priority, Timezone).

  3. Click Create – this generates a Campaign ID and a sample JSON body for create task API input.

  4. Use the Create Task API to push tasks dynamically (check API reference)

{
  "phone": "+9189xxxxxxxx",      //phone number to call
  "from": "+9180xxxxxxxx",       //your agent's number
  "agent": "agent_id",
  "start": 1000,                 //10 AM
  "end": 1800,                   //06 PM
  "timezone": "Asia/Kolkata",
  "startAfter": 1748629800000,   //start time for 1st attempt
  "endAfter": 1748629800000,     //end time for this task
  "priorities": [                //attempt wise priority
    100,
    50,
  ],
  "retries": 2,                  //total attempts
  "intervals": [                 //gap between attempts
    180000
  ],
  "retryOutcomes": [             //outcomes for re-attempt
    "voicemail"
  ],
  "context": {                   //context for agent
    "name": "Tarun"
  },
  "campaign": "campaign_id"
}

JSON generated while creating a realtime campaign on dashboard is just a sample and can be changed at task level. Only campaign id and status are maintained at campaign level.

Batch vs realtime campaigns

Aspect

Batch

Realtime

Campaign creation

CSV upload (bulk)

2 Steps:

  • Create campaign from dashboard

  • Create task one by one using API

Task config

Same for all rows, except phone and context

Only campaign id is same, rest of the config can vary per task (agent, caller ID, context)

Ideal for

Static lists

Continuous lead streams, immediate follow up post form fill on website

Understanding follow-up settings

Retry outcome options

Outcome(s)

Auto‑included?

Notes

no_answer ,busy ,failed ,init_failed

Yes

User did not pick or call could not be placed.

busy_callback

Yes (if agent uses this outcome)

User provides a specific time for callback.

voicemail

No

Voicemail detected.

no_response

No

Call connected but user silent.

Any custom outcome

No

Defined in call analysis.

Retry intervals

  • Next attempt time = last_attempt + retry_interval.

  • If that time falls outside Calling Hours, the attempt waits until the next window starts.

The interval array length in create task API is always retries - 1.

Understanding priority

Tasks follow a two‑layer priority system:

  1. Between attempts (within a task)

    • In batch campaigns, first attempt of every task has the highest priority. Then second attempts share the next level, then third attempts, and so on.

    • In batch campaigns, you cannot customise attempt level priority.

    • In realtime campaigns, you can define a priority array for each task. Here the array length should be equal to number of attempts and each value in array corresponds to priority of that specific attempt.

  2. Between tasks (within a campaign or across campaigns)

    • In batch campaigns, all tasks within a campaign share same priority level. However, High‑priority campaigns pre‑empt Normal campaigns.

    • If two tasks share the same priority level, the one with earlier start time is given higher priority.

Example
Your workspace has a concurrency limit (e.g., 5 simultaneous calls) and you upload 100 numbers in a batch campaign.

  • The system randomly selects five tasks for their first attempt (equal priority).

  • After any call ends, another first‑attempt task starts until all first attempts are done, then second attempts begin.

Callback override
If a user requests a specific callback time, that task becomes top priority at the scheduled moment, outranking all other tasks.

Campaign statuses

Campaigns display these statuses:

Status

Meaning

scheduled

Waiting for start time, all tasks in queue

running

Active calling, at least 1 task started

paused

Manually paused, at least 1 task in paused status

completed

All tasks completed or archived due to end time

archived

Manually archived

Campaign monitoring

Once a campaign is created, you can monitor all individual tasks within it. From the Campaigns page, clicking on a campaign opens the Task view, where each row corresponds to a task generated from your CSV (in batch campaigns) or API call (in realtime campaigns).

Calls

This tab displays a table listing all call attempts for the selected task.

Each row in the table includes:

  • Call ID

  • Start Time

  • Attempt number

  • Status

Clicking to expand any row opens full call details—just like the Call Logs page. This includes:

  • Call metadata (agent, from/to, timestamp, duration, provider, cost, etc.)

  • Audio recording and playback

  • Transcript of the conversation

  • Conversation analysis and outcome

Task details

This tab displays the configuration used for the task. It's helpful for:

  • Verifying what was submitted via CSV or API (context variables, retry intervals, max retries, retry conditions, etc.)

  • Troubleshooting call behavior (e.g., priority mismatch, retry delay)

Task statuses

Each task can be in one of several states:

Status

Meaning

queued

Task is waiting for its scheduled time

running

A call attempt is currently being made

completed

Task finished, either successfully or after all retries

paused

Task paused manually

archived

No further call attempts will be made, task archived manually or campaign end time crossed

Campaign-level controls

From the task monitoring screen, you can also:

  • Pause campaign – Marks all non-completed, non-running tasks as paused.

  • Resume campaign - Moves all paused tasks to queued.

  • Archive campaign – Marks all non-completed, non-running tasks as archived, ending the campaign permanently.

  • Update campaign – Adjust settings for non-completed, non-archived campaigns.