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.
| 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 |
|
| 12 | 91,583 |
|
| 13 | 97,730 |
|
| 14 | 97,457 |
|
| 15 | 90,989 |
|
| 16 | 89,107 |
|
| 17 | 95,941 |
|
| 18 | 85,924 |
|
| 19 | 82,489 |
|
| 20 | 68,571 |
|
| 21 | 66,481 |
|
| 22 | 63,253 |
|
| 23 | 16 |
|
| 24 | 11 |
|
| 25 | 7 |
|
| 26 | 5 |
|
| 27 | 6 |
|
| 28 | 5 |
|
| 29 | 3 |
|
| 30 | 1 |
|
| 31 | 1 |
|
| 32 | 2 |
|
Withheld hour buckets
| Hour | Dials | Clause failed |
|---|---|---|
| 0 | 71 |
|
| 1 | 48 |
|
| 2 | 25 |
|
| 3 | 26 |
|
| 4 | 16 |
|
| 5 | 15 |
|
| 6 | 26 |
|
| 7 | 67 |
|
| 8 | 194 |
|
| 9 | 471 |
|
| 10 | 6,073 |
|
| 20 | 271,674 |
|
| 21 | 120,936 |
|
| 22 | 6,619 |
|
| 23 | 2,295 |
|
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.
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.
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.