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.

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.

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 slotWhat 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

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.