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

# Number rotation

# Number rotation (performance-weighted pool)

In the product, **rotation** is not a separate toggle. It is how the **campaign number pool** works on **Create campaign / Edit campaign → Step 2: Telephony** (the Telephony step of the new-campaign flow): each dial attempt picks a number from the pool using **performance-weighted** selection, with extra rules for geography and spam (see that step’s copy and expandable **How the number pool works**).

![Campaign setup showing a rotated number pool.](https://mintcdn.com/callaro-docs/1fJs_sKJdgiwY8nj/images/phone-numbers/rotation.png?fit=max\&auto=format\&n=1fJs_sKJdgiwY8nj\&q=85\&s=5d9224afb6a113b935594844d81eda38)

**What the static should show:** Telephony step with **Primary From Phone Number**, **Number Pool** chip count, pool chips (primary badge), **+ Add another number to pool...**, and the **How the number pool works** details block expanded through **Performance-weighted rotation**.

## Where you configure the pool

1. Open **New campaign** (or edit a draft) and go to the Telephony step.
2. Go to **Telephony** (step 2 in the wizard).
3. Choose **Primary From Phone Number \*** — required; also seeds the pool UI.
4. Add more numbers with **+ Add another number to pool...** (searchable; same loader as primary).

Intro copy on that step: *“The primary number is always used; add more to build a pool that rotates across numbers, providers, or countries.”*

The **Number Pool** summary line (small gray text) states:

* The campaign picks one number per attempt using **performance-weighted rotation**.
* Contacts typically keep the **same number across retries (sticky)**.
* **Spam-flagged** numbers are **skipped automatically**.

![GIF media slot](https://mintcdn.com/callaro-docs/1fJs_sKJdgiwY8nj/images/phone-numbers/slot-01.gif?s=9d22d8189ffb46944510dac802ed703d)

**What the GIF should show:** Adding three numbers to the pool, toggling **Prefer country-matched numbers for each contact**, and opening **How the number pool works** to scroll the numbered rules.

## How rotation behaves (UI-documented)

Expand **How the number pool works** on the Telephony step. The implementation’s own explanations include:

1. **Pick per attempt** — One active number per attempt; empty pool falls back to **primary**.
2. **First call = weighted random** — Not strict round-robin; not “primary first.” Fresh numbers with equal weight behave roughly uniform; two consecutive contacts can share a number.
3. **Sticky contacts** — After a number **successfully reaches** a contact, later attempts for that contact reuse it.
4. **Performance-weighted rotation** — Weight is multiplied by live **answer rate** (answered ÷ attempted); better performers get more share over time; new numbers start neutral.
5. **Country & timezone filtering** — Optional **Prefer country-matched numbers for each contact** narrows by contact country, then timezone, then full pool.
6. **Spam & compliance skips** — Numbers flagged past platform threshold or not allowed to dial the contact’s country are skipped (including the first call).
7. **Capacity-aware parallelism** — Dispatcher respects per-connection limits and tenant cap (see pool capacity breakdown on the same step).
8. **Exhaustion & reset** — If every number was tried for a contact, rotation resets for later retries.
9. **Mixed providers** — Numbers can use different telephony connections; each call routes via the selected number’s provider.

Optional checkbox (only when **more than one** pool number):

* **Prefer country-matched numbers for each contact** — Subtext: *(falls back to timezone match, then full pool)*.

## Where you monitor weights and performance

* **Campaign detail**: **Number Pool Health** table — per-number **Attempts**, **Answered**, **Answer rate**, **Weight**, **Status**, link to the number detail page.
* **Phone number detail**: **Campaign Health** — per campaign **Pool Status**, same metrics, link back to campaign.

![Video media slot](https://mintcdn.com/callaro-docs/1fJs_sKJdgiwY8nj/media/phone-numbers/slot-01.mp4?fit=max\&auto=format\&n=1fJs_sKJdgiwY8nj\&q=85\&s=77953cfa28b118fc3b17ddf123876665)

**What the video should show:** Live campaign page **Number Pool Health** updating after calls, then opening a number’s **Campaign Health** for the same campaign.

## Operational guidance (beyond the UI)

* **Adding numbers** — Use **Add number** (Connectivity → **Phone numbers**) so new lines enter the pool searchable from the wizard.
* **Primary is still required** — Even with a large pool, the wizard treats primary as the default pool entry and fallback when the pool selection logic yields none.

## Related articles

* [Assigning phone numbers to a campaign](https://help.callaro.ai/campaigns/assigning-phone-numbers.md)
* [Sticky number assignment](https://help.callaro.ai/phone-numbers/sticky-number-assignment.md)
* [Adding phone numbers](https://help.callaro.ai/phone-numbers/adding-phone-numbers.md)
* [What to do if a number gets flagged as spam](https://help.callaro.ai/phone-numbers/spam-flagged-numbers.md)
* [Wizard Step 2: Telephony](https://help.callaro.ai/campaigns/wizard-step-2-telephony.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.