The Call Center Doctors Logo Get Started

First-party data · 2026-05-25 to 2026-07-26

6,288,938 outbound dials, and which of the two levers actually moves

A caller controls two things: which attempt this is, and what time it is. Across 6,288,938 dial attempts placed by 17 campaigns over 9 complete weeks, the attempt number moves the chance of reaching a person about 1.68 times as much as the hour of day does -- a spread of 1.994x across attempts against 1.185x across the working hours.

And the peak is not where the training decks put it. It is not the opening dial. Attempt 2 out-answers attempt 1 by 4% in relative terms, on 947,653 and 1,458,092 dials, and it survives the objection you are about to raise.

What the height of this curve is not

It is not an industry answer rate, and it cannot be turned into one. Pooled across the whole corpus, 278,651 of 6,288,938 dials carry a human-answered disposition. That is 4.431%, and quoting it as what outbound calling achieves would be a fabrication of generality. The classes the numerator is measured against are set by an automated call-progress classifier, and that classifier was independently audited on this same estate against audio it did not write: its HUMAN class was wrong on 28 of 92 bridged calls. The LEVEL therefore describes one dial list and one classifier configuration.

What survives that bias is the ratio between buckets measured the same way, because a roughly constant misclassification divides out of a ratio. So every claim on this page is a comparison, never a level: attempt 2 against attempt 1, the attempt spread against the hour spread, the median campaign against the pool. Publish the shape, never the height.

It is also one estate. There is no second dialling operation in this dataset, so nothing here establishes what is normal, average or good for anybody else. It establishes what 6,288,938 dials did, in a stated window, with the dictionary and the disclosure rule behind every figure written down.

Finding one

The second dial beats the first, and survivorship is the reason to believe it

Attempt 2 answers at 5.663% against 5.443% for attempt 1, on 947,653 and 1,458,092 dials. The first objection any careful reader raises is selection, and it is the right objection -- so here it is, stated in the direction it actually runs.

A lead reached and closed on the first dial leaves the pool. The population still being dialled at attempt 2 is therefore enriched in people who did not answer the first time -- which should push attempt 2 DOWN, not up. The bias runs against the finding rather than producing it, and attempt 2 is nonetheless the peak. That is what makes it worth reporting; a selection effect pointing the other way would have made it worthless.

The same comparison inside each campaign, because a pooled result can be manufactured by mix

If attempt 2 simply contains proportionally more of the campaigns that answer well, the pooled rate rises while no campaign improved. So the identical comparison is re-run inside every campaign with at least 5,000 dials at both attempts. 8 qualify, 1 of which recorded no human-answered dial at either attempt and cannot answer the question -- reported as undefined rather than scored as a counter-example. Of the 7 comparable campaigns, attempt 2 is higher in 5. The counter-examples are in the table.

Campaign Attempt 1 dials Attempt 1 Attempt 2 dials Attempt 2 2 > 1
campaign-A 1,022,843 4.636% 659,330 5.219% yes
campaign-B 182,870 6.513% 112,818 7.072% yes
campaign-C 81,309 5.073% 68,017 5.013% no
campaign-D 81,270 6.546% 60,451 6.867% yes
campaign-E 31,471 3.193% 19,526 3.216% yes
campaign-F 14,765 7.443% 8,656 8.63% yes
campaign-G 6,136 0% 5,433 0% undefined
campaign-H 5,381 18.231% 5,047 15.792% no

Campaigns are anonymised in the shipped dataset and are never named here. Every dial in this corpus was placed on behalf of a client, so a campaign label is a client identifier: the check has to be publishable, the roster does not. The data module refuses to load a dataset whose labels are not anonymised, so this is a build failure rather than a house rule.

The attempt curve, with the median campaign beside the pool

The median campaign out-answers the pool at every attempt, and that is not decoration. It says the largest campaigns run below-median connect rates, so a pooled rate understates a typical campaign -- which is exactly the error a reader makes when a vendor publishes one number without the dispersion beside it. Both series are drawn on the same axis so the gap reads as a gap.

Human-answered rate by dial attempt, pooled and median campaign
0% 1% 2% 3% 4% 5% 6% 7% 8% peak at attempt 2 12345678910 Dial attempt number solid = pooled, dashed = median campaign
Attempt Dials Reached a person Pooled Median campaign Campaigns 1k+ Top campaign share
1 1,458,092 79,362 5.443% 6.546% 11 70.15%
2 947,653 53,670 5.663% 6.97% 10 69.58%
3 734,307 37,229 5.07% 6.084% 9 69.07%
4 495,801 23,007 4.64% 5.754% 8 62.2%
5 397,812 16,586 4.169% 4.418% 7 50.55%
6 325,726 13,166 4.042% 4.942% 7 50.56%
7 274,891 9,991 3.635% 4.004% 7 48.19%
8 241,210 8,243 3.417% 3.82% 6 48.53%
9 214,257 6,663 3.11% 3.434% 5 44.79%
10 182,292 5,177 2.84% 3.207% 5 45.79%

The last two columns are the disclosure gate showing its work, not padding: they are the two clauses a reader cannot otherwise check. No published bucket rests on a thin cell -- the smallest holds 182,292 dials.

Where the curve stops, and why it is not where the data stops

Every dial in this corpus was placed on behalf of a client, so a bucket that one campaign dominates is that client's operating number wearing a pooled costume. A bucket is published only if no single campaign exceeds 75% of its dials, at least 5 campaigns contribute 1,000 dials each, and the bucket holds at least 100,000 dials. The threshold is not a round number chosen for comfort: the largest contributor to any published bucket is a shared campaign that many clients dial through, and it peaks at 70.15%. The gate sits above that and below the level at which a single client campaign starts to dominate.

22 attempt buckets and 15 hour buckets failed it. Together the withheld attempt buckets are 1,016,755 dials, 16.167% of the corpus -- so this page publishes 83.83% of the dials it measured. They are listed rather than deleted, with the clause each failed, because a truncated curve presented as a whole curve is its own kind of false statement and a reader is entitled to know the data goes further than the page does.

Withheld attempt buckets

Attempt Dials Clause failed
11 87,173
  • RULE A: one campaign is 84.7% of the bucket (max 75.0%)
  • RULE B: only 4 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 87173 dials is below the 100000 reporting floor
12 91,583
  • RULE A: one campaign is 82.5% of the bucket (max 75.0%)
  • RULE B: only 4 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 91583 dials is below the 100000 reporting floor
13 97,730
  • RULE A: one campaign is 83.6% of the bucket (max 75.0%)
  • RULE B: only 4 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 97730 dials is below the 100000 reporting floor
14 97,457
  • RULE A: one campaign is 81.0% of the bucket (max 75.0%)
  • RULE B: only 4 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 97457 dials is below the 100000 reporting floor
15 90,989
  • RULE A: one campaign is 83.8% of the bucket (max 75.0%)
  • RULE B: only 4 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 90989 dials is below the 100000 reporting floor
16 89,107
  • RULE A: one campaign is 94.1% of the bucket (max 75.0%)
  • RULE B: only 3 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 89107 dials is below the 100000 reporting floor
17 95,941
  • RULE A: one campaign is 96.4% of the bucket (max 75.0%)
  • RULE B: only 3 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 95941 dials is below the 100000 reporting floor
18 85,924
  • RULE A: one campaign is 99.0% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 85924 dials is below the 100000 reporting floor
19 82,489
  • RULE A: one campaign is 99.6% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 82489 dials is below the 100000 reporting floor
20 68,571
  • RULE A: one campaign is 99.6% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 68571 dials is below the 100000 reporting floor
21 66,481
  • RULE A: one campaign is 99.8% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 66481 dials is below the 100000 reporting floor
22 63,253
  • RULE A: one campaign is 99.8% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 63253 dials is below the 100000 reporting floor
23 16
  • RULE A: one campaign is 87.5% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 16 dials is below the 100000 reporting floor
24 11
  • RULE A: one campaign is 90.9% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 11 dials is below the 100000 reporting floor
25 7
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 7 dials is below the 100000 reporting floor
26 5
  • RULE A: one campaign is 80.0% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 5 dials is below the 100000 reporting floor
27 6
  • RULE A: one campaign is 83.3% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 6 dials is below the 100000 reporting floor
28 5
  • RULE A: one campaign is 80.0% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 5 dials is below the 100000 reporting floor
29 3
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 3 dials is below the 100000 reporting floor
30 1
  • RULE A: one campaign is 100.0% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 1 dials is below the 100000 reporting floor
31 1
  • RULE A: one campaign is 100.0% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 1 dials is below the 100000 reporting floor
32 2
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 2 dials is below the 100000 reporting floor

Withheld hour buckets

Hour Dials Clause failed
0 71
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 71 dials is below the 100000 reporting floor
1 48
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 48 dials is below the 100000 reporting floor
2 25
  • RULE A: one campaign is 80.0% of the bucket (max 75.0%)
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 25 dials is below the 100000 reporting floor
3 26
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 26 dials is below the 100000 reporting floor
4 16
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 16 dials is below the 100000 reporting floor
5 15
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 15 dials is below the 100000 reporting floor
6 26
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 26 dials is below the 100000 reporting floor
7 67
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 67 dials is below the 100000 reporting floor
8 194
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 194 dials is below the 100000 reporting floor
9 471
  • RULE B: only 0 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 471 dials is below the 100000 reporting floor
10 6,073
  • RULE B: only 2 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 6073 dials is below the 100000 reporting floor
20 271,674
  • RULE A: one campaign is 76.6% of the bucket (max 75.0%)
21 120,936
  • RULE A: one campaign is 77.8% of the bucket (max 75.0%)
  • RULE B: only 3 campaigns contribute >= 1000 dials (min 5)
22 6,619
  • RULE B: only 2 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 6619 dials is below the 100000 reporting floor
23 2,295
  • RULE A: one campaign is 86.4% of the bucket (max 75.0%)
  • RULE B: only 1 campaigns contribute >= 1000 dials (min 5)
  • RULE C: 2295 dials is below the 100000 reporting floor

Finding two

Inside the hours already being worked, the clock barely moves anything

This is a negative result and it is the point. The hypothesis going in was that the answer rate varies strongly by hour. Across the 9 publishable hours it spans 4.918% at hour 11 down to 4.151% at hour 19 -- a factor of 1.185, against 1.994 for the attempt number on the same corpus. Each hourly bucket holds between 120,684 and 791,683 dials, so this is not a small-sample flat line.

Human-answered rate by hour of day, dialler clock (America/New_York)
0% 1% 2% 3% 4% 5% 6% 7% 8% 11 12 13 14 15 16 17 18 19 Hour of day, dialler clock

Two limits that must travel with that sentence

1. It is the dialler's clock, not the recipient's. Times are stored in America/New_York (the dialler's own clock; call_date is stored in it). A national list spans four US timezones, so "answer rate by hour" and "answer rate by the called party's local hour" are different questions with different answers. Answering the second one needs the lead's timezone offset, which this replica does not carry -- so it is left unanswered here rather than estimated.

2. It is bounded by the hours this operation dials. 15 hour buckets are withheld above, most of them because almost nothing is dialled then. An unmeasured hour is unknown, not flat, and nothing here says anything about the hours nobody works.

The five citable statements, with their sources

Each of these is an entry in this repository's fact registry, carrying its own value, source and window. They are the form to quote, because the caveat travels with the number.

6,288,938 outbound dial attempts across 17 campaigns over 9 complete weeks, 2026-05-25 to 2026-07-26 inclusive; 278,651 of them (4.431%) carry a human-answered disposition
The outbound dial corpus behind the call-attempt study apps/ccdocs-astro/src/data/dial-cadence-study.json (`universe`), generated by apps/ccdocs-astro/scripts/dial-cadence/dial_cadence_distribution.py from the vicidial_log history replica, 2026-05-25/2026-07-26
Across attempts 1 to 10 the human-answered rate runs 5.443%, 5.663%, 5.070%, 4.640%, 4.169%, 4.042%, 3.635%, 3.417%, 3.110% and 2.840%. Highest to lowest is a factor of 1.994, and the median campaign in each bucket tracks it: 6.546% at attempt 1, 6.970% at attempt 2 and 3.207% at attempt 10.
How the chance of reaching a person changes with the dial attempt number apps/ccdocs-astro/src/data/dial-cadence-study.json (`byAttempt.emitted` and `spread.attempt`), generated by apps/ccdocs-astro/scripts/dial-cadence/dial_cadence_distribution.py, 2026-05-25/2026-07-26
The second. Attempt 2 answers at 5.663% against 5.443% for attempt 1, a relative gain of 4.0%, on 947,653 and 1,458,092 dials. Re-run inside each campaign large enough to carry it, attempt 2 is higher in 5 of the 7 comparable campaigns.
Whether the first dial or the second dial is the one most likely to reach a person apps/ccdocs-astro/src/data/dial-cadence-study.json (`byAttempt.emitted` and `robustness`), generated by apps/ccdocs-astro/scripts/dial-cadence/dial_cadence_distribution.py, 2026-05-25/2026-07-26
Much less than the attempt number does. Across the publishable operating window the hourly human-answered rate spans 4.918% to 4.151%, a factor of 1.185, against 1.994 for the attempt number over the same corpus.
How much the hour of day moves the chance of reaching a person, compared with the attempt number apps/ccdocs-astro/src/data/dial-cadence-study.json (`byHourOfDay.emitted` and `spread`), generated by apps/ccdocs-astro/scripts/dial-cadence/dial_cadence_distribution.py, 2026-05-25/2026-07-26
A client-disclosure gate, not the end of the data. 22 attempt buckets were computed and withheld because one campaign supplied more than 75% of the dials in each -- up to 99.8% at the deepest, where a single campaign is the only one above 1,000 dials.
Why the published attempt curve stops at the tenth dial apps/ccdocs-astro/src/data/dial-cadence-study.json (`gate` and `byAttempt.withheld`), enforced by apps/ccdocs-astro/scripts/dial-cadence/dial_cadence_distribution.py, 2026-05-25/2026-07-26

Methodology

The grain and the label

one row per outbound dial attempt, read from vicidial_log joined to vicidial_statuses and vicidial_campaign_statuses. The numerator is human_answered='Y', campaign dictionary first, then system dictionary -- the campaign's own status dictionary is consulted first because a campaign may redefine a status code, then the system dictionary. An UNMAPPED bucket is emitted even when it is zero: 535 rows (0.0085% of the corpus) matched neither dictionary. They are counted as not-answered and they stay visible, because a status nothing describes must never be silently folded into a class.

Why whole weeks

Monday to Sunday, whole weeks only, so no weekday is over-represented. The window runs 2026-05-25 to 2026-07-26 inclusive, 9 complete weeks, and it is trimmed inside the replica's range at both ends so no partial day is counted. An hour-of-day cut over a ragged window measures the calendar as much as the clock.

Where the two cuts do not reconcile, and by how much

The hour cut closes exactly: its published and withheld buckets sum to 6,288,938 dials, the whole corpus. The attempt cut does not. Its buckets sum to 6,288,796, leaving 142 dials -- 0.002% of the corpus -- carrying no usable attempt counter and therefore sitting in no attempt bucket at all. It moves no published rate and it is stated because a page whose argument is that distributions should reconcile has to reconcile in public.

The disclosure gate

Every dial was placed for a client. A bucket one campaign dominates is that client's operating number, not a pooled statistic. Withheld buckets are listed rather than deleted so the published curve is not mistaken for the whole curve. The thresholds are 75% maximum single-campaign share, 5 campaigns at 1,000+ dials, and a 100,000-dial floor. They are enforced in the generator and re-checked in the page's data module at build time, so a bucket that violates one cannot be rendered even by hand.

The window is fixed

Nothing refreshes it. A dataset that silently re-derives itself lets a published figure change underneath a citation, so re-running the queries produces a new dataset with a new window rather than an update to this one.

Privacy

Aggregate only. Every query aggregates in SQL and returns counts; no dialled number, lead identifier or free-text comment is in the shipped dataset, and the generator sweeps every string it emits for phone, email and identifier shapes before writing. No campaign is named. No bucket one campaign dominates is published. The same three rules govern the sibling inbound answer-rate benchmark.

What this dataset cannot see

  • This is one dial estate. There is no second estate in this dataset, so nothing here establishes what is normal, average or good for anybody else. It is a shape, measured once, on stated data.
  • The height of the curve is not an industry answer rate. The classes the numerator is measured against are set by an automated call-progress classifier that was independently audited on this same estate against audio it did not write, and its HUMAN class was wrong on 28 of 92 bridged calls. Only the ratio between buckets measured the same way survives that bias.
  • The hour cut is the dialler's own clock, America/New_York. It is NOT the called party's local hour. A national list spans four US timezones and the two questions have different answers; the replica does not carry the lead's offset, so the local-hour version is unanswered here rather than estimated.
  • The hour cut is bounded by the hours this operation actually dials. It says nothing about hours nobody dials -- an unmeasured hour is unknown, not flat.
  • The attempt curve stops at the tenth dial because of a client-disclosure rule, not because the data stops. Every withheld bucket is listed below with the clause it failed, and together they are a sixth of the corpus.
  • Reaching a person is not booking one. This study counts whether a dial reached a human at all. What happened next -- whether the call qualified, booked or sold -- is a different measurement on a different corpus, and none of it is on this page.
  • It is a fixed window, not a live feed. Nothing refreshes it, deliberately: a dataset that silently re-derives itself lets a published figure change underneath a citation.

Using this data

Published under CC BY 4.0. Quote it, chart it, argue with it -- with a link back to this page, and with the window and the caveat attached to any figure you take from it. Every series above is also available as a JSON file, so it can be checked rather than retyped out of an SVG. If you run an outbound estate and can produce the equivalent cuts, that would make this comparable to something for the first time, and we would rather link to yours than be the only number in the room.

Questions

Is the first dial the one most likely to reach a person?

No. On 6,288,938 outbound dials over 9 complete weeks, the SECOND dial answers at 5.663% against 5.443% for the first -- a relative gain of 4%, on 947,653 and 1,458,092 dials. The obvious objection is survivorship, and it runs the other way: a lead reached and closed on the first dial leaves the pool, so the attempt-2 population is enriched in people who did not answer the first time. That selection should DEPRESS attempt 2, and attempt 2 is still the peak. Re-run inside each campaign large enough to carry the comparison, attempt 2 is higher in 5 of the 7 comparable campaigns. The two counter-examples are published on this page rather than dropped.

What time of day should you make outbound calls?

Within the hours this operation already dials, the clock barely matters. The hourly rate spans 4.918% to 4.151%, a factor of 1.185, against a factor of 1.994 across the attempt number on the same corpus -- so which dial it is moves the outcome about 1.68 times as much as what time it is. Two limits travel with that, and neither is optional. The clock is the DIALLER's own (America/New_York), not the called party's local hour; a national list spans four US timezones and the two questions have different answers. And the window is bounded by the hours actually worked, so it says nothing about hours nobody dials -- an unmeasured hour is unknown, not flat.

How many times should you call a lead before giving up?

This dataset cannot tell you that, and a page that answered it from these numbers would be overreaching. What it shows is that the rate falls monotonically after the second dial, from 5.663% down to 2.84% by the tenth, and that the published curve stops at ten because of a client-disclosure rule rather than because the data stops -- 22 deeper buckets were computed and withheld, and they are listed on this page with the clause each failed. The other half of the answer is not here at all: reaching a person is not booking one, and nothing on this page measures what happened after the pickup.

Is 4.431% the industry answer rate for outbound calls?

No, and it must not be quoted as one. The numerator is the dialler's own human_answered dictionary, and the classes it is measured against are set by an automated call-progress classifier. That classifier was independently audited on this same estate against audio it did not write, and its HUMAN class was wrong on 28 of 92 bridged calls. So the LEVEL is a property of one configuration on one dial estate. What survives that bias is the RATIO between buckets computed the same way, because a roughly constant misclassification divides out of a ratio. Publish the shape, never the height.

Why does the published curve stop at the tenth dial?

A client-disclosure gate, not the end of the data. Every dial in this corpus was placed on behalf of a client, so a bucket one campaign dominates is that client's operating number wearing a pooled costume. A bucket is published only if no single campaign supplies more than 75% of its dials, at least 5 campaigns contribute 1,000 dials each, and the bucket holds at least 100,000 dials. Past the tenth attempt one campaign runs from 82.5% up to 99.8% of the bucket. Those 22 buckets are 16.167% of the corpus and they are LISTED here with the rule each failed, because a truncated curve presented as a whole curve is its own kind of false statement.

Can I cite or reuse this data?

Yes. It is published under CC BY 4.0 with a link back to this page, and the machine-readable version of every series on it is at /outbound-dial-cadence-benchmark.json. The window, the source table, the label dictionary, the bucket counts and the withheld buckets are all on this page, so the figures can be checked rather than taken on trust. If you quote a rate, quote its window and its denominator with it, and quote the median campaign beside the pooled figure -- the median campaign out-answers the pool at every attempt, so a pooled rate understates a typical campaign.

If you want a cadence built on your own numbers

The reason we can publish this is that the dialling is instrumented. Most operations cannot answer "which attempt is our best one" about their own list at all, which means the cadence is inherited from whoever wrote the training deck. That is the conversation worth having, and it is cheaper to have before the list is burned than after.

Call Now Book a Call