Campaigns
Have an agent call a list of contacts on a schedule, retry the ones who do not answer, and stop on its own when something goes wrong.
A campaign is one agent calling a set of contacts during hours you choose. Dialgem places the calls, keeps within the concurrency you set, retries people who did not pick up, and pauses the campaign by itself if calls start failing or your credit runs out. You create and run campaigns from Campaigns in the dashboard.
Campaigns place many calls for you, so they are switched on per organization. If the Campaigns page says they are not enabled, ask Dialgem to turn them on.
You are responsible for who you call. Creating a campaign requires you to confirm that the people on the list agreed to receive these calls, that the number you call from is registered with its carrier and shows a caller ID that identifies you, and that the campaign follows the calling, consent and do-not-call laws that apply to you. Dialgem enforces the limits below, but they are not legal advice and not a substitute for that: the rules where you call may be stricter, and they depend on facts Dialgem does not have, such as what kind of call it is.
Create and start a campaign
In the dashboard, choose Campaigns, New campaign and fill in:
| Setting | What it does |
|---|---|
| Name | A label for you, for example "Spring renewal reminders". |
| Agent | The agent that makes the calls. |
| From number | One of your numbers. It must be registered with its carrier and show a caller ID that identifies you. |
| List | The contacts to call. Leave it empty to call every contact in the organization. |
| Schedule | Time zone, days of the week, and the hours calls may be placed. |
| Concurrency | The most calls in progress at once. |
| Retry policy | How many attempts each person gets, and the wait between them. |
| Variables | Values that fill {{placeholders}} in the agent's prompt, for example an offer. |
| Frequency cap | The most calls one person can receive per day and per week. |
| Confirmations | You confirm the people agreed to be called, and that the caller ID identifies you. |
Press Start when you are ready.
A new campaign is a draft; nothing is dialled until you start it. Leave out list_id to call every contact in the organization. When you start, the audience is copied into the campaign, so contacts you add afterwards are not called by this campaign. Anyone already on your do-not-call list is recorded as such and skipped. A campaign can call up to 50,000 people.
You can change a draft freely. Once it has started you can still change its name, schedule, concurrency, retry policy, variables and frequency cap, but not the agent, phone number or list.
When calls are made
Calls are made only on the days you choose, between start and end, in the contact's own time zone when the contact has one (timezone on the contact) and in the campaign's timezone otherwise. So "9 to 5" means 9 to 5 where the person is. Someone whose morning has not started yet is simply tried later; it does not use up an attempt.
Whatever a campaign asks for, calls are never made before 08:00 or after 21:00 local time, and none are started in the last minute of a window. A schedule outside those hours is refused when you save it. start_at and end_at (UTC timestamps) bound the whole campaign: when end_at passes, anyone not yet called is dropped and the campaign completes.
Stricter state hours
For a US number, Dialgem reads the state from the area code and, where that state allows calls for a shorter part of the day, narrows the hours for that person. These are built in as a conservative starting point, and the dashboard shows the rules in force:
| State | Hours (local) |
|---|---|
| AL, FL, LA, MD, MS, OK, WA, WY | 08:00 to 20:00 |
| CT | 09:00 to 21:00 |
| TX | 09:00 to 21:00, and not before 12:00 on Sundays |
This table is a starting point, not legal advice. States change these rules, some apply them only to certain kinds of call, and others have rules this table does not include (day-of-week limits, holidays, registration). The state comes from the number's area code, which can differ from where the person is. Check the rules that apply to you.
Limits per person
A campaign never calls the same number more than frequency_cap.per_day times in 24 hours or per_week times in 7 days (platform ceilings: 3 and 10; a campaign may set lower numbers, not higher). The count covers every outbound call your organization placed to that number, including other campaigns and calls made through the API, so several campaigns cannot each stay within a limit and together exceed it. Someone at a limit is skipped for now without using an attempt and tried again once the count drops.
Concurrency and retries
max_concurrency (1 to 50) is the most calls the campaign has in progress at once. A separate organization-wide ceiling applies across all of your campaigns together.
Each call ends in one outcome, and the retry policy decides what happens next:
| Outcome | Meaning | Default |
|---|---|---|
answered | A person picked up and the call ran. | Done. |
voicemail | Answering-machine detection reached voicemail. | Retry. |
no_answer | It rang out. | Retry. |
busy | The line was busy. | Retry. |
failed | The call could not be connected. | Retry. |
do_not_call | The person asked not to be called, during the call. | Done, never retried. |
max_attempts (1 to 10) is the most calls to one person, and retry_delay_minutes (at least 5) is the wait between them. retry_on lists the outcomes worth another try. A person who is out of attempts is marked exhausted.
What the agent knows about each call
Every call gets your campaign variables plus the contact's own fields as dynamic variables: contact_first_name, contact_last_name, contact_name, contact_email, contact_phone, and one contact_<field> for each custom attribute. Use them in the agent's prompt as {{contact_first_name}}. The call's metadata carries dialgem_campaign_id, dialgem_campaign_target_id and dialgem_campaign_attempt, so you can find a campaign's calls in your call history and webhooks.
It stops itself
A campaign pauses (it does not fail) and emails your owners and admins when:
- the organization ran out of call credit, or is suspended, or outbound calling was switched off;
- at least half of its last 20 or so calls failed to connect (
high_failure_rate); - several calls in a row could not be placed at all (
origination_errors); - its phone number or agent is no longer available.
Calls already in progress are never cut off, and nobody on the list is lost: fix the cause and resume. The campaign page shows why it paused.
The exception is a number that was released or an agent that was deleted. A started campaign's number and agent cannot be changed, so cancel it and create a new one.
Webhooks
Subscribe a webhook endpoint to campaign_started, campaign_paused, campaign_resumed, campaign_completed and campaign_cancelled (or *). Each body is { "event", "campaign_id", "agent_id", "reason", "campaign": { ... } }, where campaign is the campaign with its progress at that moment, and reason is the pause reason on campaign_paused (user, or why Dialgem paused it) and null otherwise. A campaign belongs to no call, so these go to your organization's endpoints only, never to an agent's own webhook.
Controls
| Pause | Stop placing calls. Calls in progress finish. |
| Resume | Carry on with everyone still waiting. |
| Cancel | Stop for good. People not yet called are dropped. |
| Progress | Status and progress, counted from the call list. |
| People | Each person, their attempts and last result, filterable by status and outcome. |
| Delete | Remove a draft, finished or cancelled campaign. The calls stay in your history. |
Campaigns can be managed by organization owners and admins.