> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamfollowup.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public API base URL: https://api.teamfollowup.ai/api.
> Authenticate public API requests with Authorization: Bearer YOUR_API_KEY.
> Use product-owned terms: agents, campaigns, projects (GoHighLevel sub-accounts), contacts, calls, outcomes, skills, cadences, phone numbers.
> Scope requests by locationId rather than projectName.
> Read the guide linked from each API reference group before recommending an endpoint.

# Speed to lead and power dialer

> The dialing field decides when a campaign calls: the moment a lead arrives, on a schedule of follow-ups over days, or both. Pick it by what the lead is doing when they enter.

Two things make a campaign call. A **speed-to-lead** campaign calls the moment
a lead enters. A **power-dialer** campaign works through a schedule of
follow-ups over days. One campaign can do both. The `dialing` field on the
campaign picks which.

## The three modes

| `dialing` | What happens when a contact gets the trigger tag                                                                                  |
| --------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `s2l`     | One call, straight away. If the lead does not pick up, that is the end unless a callback or a workflow sends them somewhere else. |
| `pd`      | The contact joins the campaign's [cadence](/power-dialer/overview) and is called at each step, on the cadence's schedule.         |
| `s2l_pd`  | Both. One call straight away, and if that does not settle it, the cadence takes over from step one.                               |

Pick `s2l` when the lead has just raised their hand and speed is what wins,
such as a form fill or a missed call. Pick `pd` when the list is people who
need working over days, such as a reactivation list. Pick `s2l_pd` for new
leads you also refuse to give up on after one try.

If you omit `dialing` when creating an outbound campaign, it defaults to `pd`.

Two retired values remain in the response schema and cannot be set.
`reactivation` is still reported by campaigns created before it was retired,
which keep dialling exactly as before. `confirmation` has no campaigns left and
no longer appears in reads. An update that re-sends either value is refused,
so change the mode to a supported one in the same request.

## Tuning the first call

All of these live under `config` on the campaign.

* `s2lDelaySeconds`: wait this long after the trigger before dialling. Use it
  to let a "thanks, calling you now" text land first. This supersedes
  `s2lDelayMinutes`, which reads still carry for older campaigns.
* `s2lDelayHaltOnReply`: if the lead replies to that text during the delay, do
  not place the call. A person is already in the conversation.
* `s2lDoubleDial`: if the first attempt is not answered, dial again
  immediately. Two rings in a row get more pickups from people who ignore
  unknown numbers once.
* `callNowSkipTags`: contacts carrying any of these tags skip the immediate
  call and, on an `s2l_pd` campaign, go straight into the cadence.

## When the lead calls back

Someone the agent could not reach may ring the campaign's number back. Two
settings decide what happens.

* `callbackDoubleDial` on the campaign `config` applies the double-dial rule to
  the agent's own return call.
* `callbacksHandledByHuman` on the [project](/concepts/projects) routes
  callbacks to your team instead of the agent. The workflow's `callbackMode`
  (`ai` or `human`) is the same switch seen from the
  [campaign workflow](/campaign-workflows/overview).

## Outside the calling window

A trigger can land at 2 a.m. The [calling window](/campaigns/calling-window)
decides whether the campaign may dial right now.

* By default the lead is **parked** and dialled when the window next opens.
  Parked speed-to-lead leads are listed by the power dialer's
  [parked leads](/api-reference/power-dialer/list-parked-speed-to-lead-leads)
  endpoint, so you can see who is waiting and why.
* With `dropOutsideWindow: true` the lead is dropped instead. Use it when a
  late call is worthless, such as a "we'll call you in five minutes" promise
  that means nothing the next morning.

If [contact timezone](/campaigns/timezones) is on, the window is judged in the
lead's own timezone rather than the sub-account's.

## Boundaries

* `dialing` is set per campaign. Two campaigns on one project can run
  different modes.
* A `pd` or `s2l_pd` campaign needs a `cadenceId` in `config`. Without one
  there is nothing to schedule and the campaign cannot go live.
* A speed-to-lead call obeys the calling window. Speed never overrides quiet
  hours.
* Changing `dialing` on a live campaign affects contacts that enter after the
  change. Contacts already in a cadence keep their place.

## In the API

* [Update campaign](/api-reference/agents/update-campaign) sets `dialing` and
  the `config` fields above
* [Enroll existing leads](/api-reference/agents/enroll-existing-leads) pushes
  contacts already in the CRM through the same entry
* [List parked speed-to-lead leads](/api-reference/power-dialer/list-parked-speed-to-lead-leads)
* Every field above is defined in the [Glossary](/glossary#campaigns)

## Related

* [Cadences, steps and the queue](/power-dialer/overview) is what `pd` hands
  leads to.
* [Calling window](/campaigns/calling-window) is the clock every mode obeys.
