Skip to main content

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.
GIF media slot 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 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.