First-party data · three corpora · version 0.9-draft
A roofing conversation that books is almost always one that got past two minutes
Across 94,349 engaged conversations drawn from 7,132,360 outbound dials, 38.9% of the 2,974 that ran 120 seconds or longer ended in a booked appointment. Of the 91,375 that ran shorter, 0.195% did. That is a factor of 199.5, and it reproduces independently in all three campaigns in the corpus.
This page is the study we could not find. Almost everything published about phone answering in the home-services trade is a vendor stat block with no denominator. Every figure here carries its numerator, its denominator and its window -- including the ones that make us look bad, which are the ones we would most want a reader to check.
Three corpora, and they are never pooled
Part A
89,858
inbound calls
2026-05-03 to 2026-08-01
Part B
10,794
fully transcribed outbound calls
February-March 2026
Part C
7,132,360
outbound dials on three roofing campaigns
2026-05-23 to 2026-08-15
Different directions, different windows, different denominators. No ratio may be formed across them and no chart on this page contains two of them. The rule is code rather than intention: the module that loads this dataset refuses at build time to serve a version in which two of the three corpora report the same size.
And a dial is not a conversation. The gap between a live person and an engaged conversation is the immediate hangups and the wrong numbers. It is the single most important thing to know before reading any rate on this page: a dial from a predictive dialler and a conversation are not the same event. On this corpus the two differ by a factor of about 75, so every Part C rate below is computed against engaged conversations and never against dials.
Part C · 7,132,360 outbound dials · 2026-05-23 to 2026-08-15
The share of conversations that book, by how long the agent talked
94,349 engaged conversations, bucketed by agent talk time. The rate is flat and near zero for the first minute, moves at 120-179s, and is above 73.08% by ten minutes.
This is a correlation on outcome-labelled conversations, not a lever. A conversation runs long because it is going well. Staying on the phone does not cause a booking, and nothing on this page should be read as advice to hold somebody there.
It is not one client's artifact
The largest campaign in this corpus is 62.79% of the dials, so a pooled finding could be one account wearing a pooled costume. The split is therefore re-run inside each campaign independently. It survives in all three, at different levels.
| Campaign | Booked, conversations 120s and over | Booked, conversations under 120s |
|---|---|---|
| campaign-A | 33.384% (657 of 1,968) | 0.107% (73 of 67,971) |
| campaign-B | 53.829% (478 of 888) | 0.491% (105 of 21,377) |
| campaign-C | 18.644% (22 of 118) | 0% (0 of 2,027) |
| Pooled | 38.9% | 0.195% |
Campaign identities are stripped. The mapping from a label to an account is not published and is not derivable from anything on this page.
Where 7,132,360 dials went
Read this before reading any rate on this page. Each tier is nested inside the one above it and is defined by what it excludes.
| Tier | Count | Share of dials |
|---|---|---|
| dials one outbound dial attempt | 7,132,360 | 100% |
| reached an agent the dial produced an agent leg with talk time above zero | 419,373 | 5.88% |
| a live person was on the line reached an agent, and the outcome was not an answering machine, a fax, dead air, a no-answer or a ringing line | 261,342 | 3.664% |
| engaged conversation a live person, excluding the immediate hangups and the wrong numbers -- the population a transcript corpus would actually contain | 94,349 | 1.3228% |
63.9% of the live contacts were an immediate hangup or a wrong number, and mean talk time across every live contact was 26.0 seconds. Of the 94,349 engaged conversations, 1,335 ended in a booked appointment -- 1.415%.
Two appointment counts exist over this window and they are different quantities. 38 appointment dispositions in the window carry no engaged-conversation row with recorded agent talk, so they sit outside the denominator used here. Two appointment counts exist over this window and they are different quantities. The disposition count over the whole window is larger than the count that sits inside an engaged conversation with recorded agent talk; the difference is carried here rather than reconciled away, and every rate published on this page uses the conversation-level numerator against the conversation-level denominator.
One further count is carried rather than absorbed. Exactly 1 dial in the window carries two agent legs, so a join-based count returns one row more than a direct count. The published corpus size is the direct count.
Homeowners are reached in the morning, not the evening
Live contact rate by the LEAD's own local hour, on the 3,965,858 dials whose stored timezone agrees with the state the lead lives in. The shaded band is the 95% Wilson interval. The band drawn is 10:00 to 19:00; the thinner edge hours of the dialling day are plotted as points and are not ranked beside a half-million-dial hour.
A morning and midday plateau, a mid-afternoon dip, a partial recovery, then a real evening decline. It is NOT monotonic -- 15:00 and 16:00 both sit above 13:00 and 14:00 -- and describing it as a steady fall through the day would be wrong.
The timezone correction is the method
The lead record stores its own UTC offset, and on 8.49% of dials that offset disagrees with the timezone the lead's own state implies. Every hour figure on this page is computed on the subsample where a single-zone state and the stored offset agree, because the full set is contaminated by a field that is wrong at scale. The effect is larger on the clean subsample than on the contaminated one, which is what a mislabelling that blurs hours into each other predicts.
A negative control, for scale
the last digit of the internal lead id splits the corpus into 10 groups and cannot cause anything. Its live contact rate spans 0.081 percentage points. The hour effect spans 1.05 (13x the control) and the weekday effect 0.499 (6.2x).
And Tuesday beats Friday
| Weekday | Dials | Live contact rate | 95% interval |
|---|---|---|---|
| Monday | 1,306,395 | 3.763% | 3.73 to 3.796 |
| Tuesday | 1,342,741 | 3.923% | 3.89 to 3.956 |
| Wednesday | 1,501,685 | 3.677% | 3.647 to 3.707 |
| Thursday | 1,556,372 | 3.591% | 3.562 to 3.621 |
| Friday | 1,342,238 | 3.424% | 3.394 to 3.455 |
Saturday and Sunday are not listed. The dialler is off on Sundays -- eight dials in 85 days -- and Saturday's appointment numerator is below the reporting floor. The dialler is off on Sundays and light on Saturdays, which is why 85 calendar days hold 68 dialling days.
Persistence gets harder. It does not get less valuable.
Contact rate peaks at the 2nd dial at 4.767% and falls to 1.932% by attempt 22. The share of CONVERSATIONS that book does not fall with it. The appointment rate is published only to the attempt at which its numerator clears the reporting floor; deeper rows carry a contact rate and no booking rate rather than a faint one.
| Attempt | Dials | Live contact rate | Booked per conversation |
|---|---|---|---|
| 1 | 1,848,220 | 4.371% | 1.41% |
| 2 | 1,150,490 | 4.767% | 1.304% |
| 3 | 832,436 | 4.171% | 1.218% |
| 4 | 545,754 | 3.625% | 1.433% |
| 5 | 410,564 | 3.338% | 1.648% |
| 6 | 333,321 | 3.254% | 1.543% |
| 7 | 273,170 | 2.993% | 1.666% |
| 8 | 240,680 | 2.709% | 1.78% |
| 9 | 202,073 | 2.567% | below the reporting floor |
| 10 | 179,618 | 2.336% | below the reporting floor |
| 11 | 85,044 | 2.559% | below the reporting floor |
| 12 | 89,111 | 2.298% | below the reporting floor |
| 13 | 96,923 | 2.292% | below the reporting floor |
| 14 | 93,744 | 2.238% | below the reporting floor |
| 15 | 90,651 | 1.945% | below the reporting floor |
| 16 | 97,925 | 1.973% | below the reporting floor |
| 17 | 107,475 | 1.961% | below the reporting floor |
| 18 | 103,315 | 1.805% | below the reporting floor |
| 19 | 99,933 | 1.719% | below the reporting floor |
| 20 | 96,468 | 1.781% | below the reporting floor |
| 21 | 80,579 | 1.824% | below the reporting floor |
| 22 | 74,789 | 1.932% | below the reporting floor |
Across the 8 attempts where the booking rate is reportable it runs 1.41% on the first dial against 1.78% on the 8th. A survivorship note that runs against that reading, stated because it is the first objection a careful reader will raise: a lead booked on attempt 1 leaves the pool, so the deeper buckets are a surviving population enriched in people who did not book earlier. That selection pushes the deep buckets down, so it cannot be what produces a flat booking rate.
A pooled figure over three campaigns ships with its spread or it does not ship
| Campaign | Share of dials | Conversations | Booked per conversation |
|---|---|---|---|
| campaign-A | 62.79% | 69,939 | 1.092% |
| campaign-B | 34.36% | 22,265 | 2.636% |
| campaign-C | 2.84% | 2,145 | 1.026% |
The range is 1.026% to 2.636% and the largest campaign is 62.79% of the volume, so any pooled conversion figure over this corpus is substantially that one campaign. The appointment counts in this table are every appointment disposition in the campaign, including the ones that carry no engaged-conversation row, so the pooled rate here runs marginally above the 1.415% published against the talk-time table. Both numerators are stated rather than one being quietly restated as the other. What the table is for is the spread, not the pooled figure: a pooled rate over campaigns that run from 1.026% to 2.636%, with the largest campaign supplying 62.79% of the volume, must ship with its dispersion or not at all.
Part A · 89,858 inbound calls · 2026-05-03 to 2026-08-01
Of 89,858 inbound calls, 48,761 reached a live agent
9 client queues, 90 days. The denominator is calls that arrived at a number we operate -- not calls that reached a queue, which is a smaller population and a different question.
6,529 calls routed toward a queue left no queue record at all, so any figure computed on the queue log alone is blind to them. That is why every inbound rate here carries two denominators.
The answer rate, on both denominators
54.3% of inbound calls reached a live agent (48,761 of 89,858). 61.3% of the calls that reached an agent queue did (48,761 of 79,553). We publish both because each answers a different question, and the gap is the 10,305 calls that arrived and never got a queue record. A vendor quoting only the second is not lying, but they are answering a question the buyer did not ask.
Half of every answered call is a hang-up
48,761 answered calls. Mean length across all of them: 23.8 seconds. An answered call is not a lead. The four segments sum to exactly 48,761, which is why a stacked bar is legitimate here and forbidden on the outbound endings further down.
Nobody is on hold, and that cuts both ways
0s
median wait to a live agent
90.1%
of answered calls had no measurable hold (43,926 of 48,761)
38
unanswered callers in the whole quarter waited 30 seconds or more
We expected to find impatient callers abandoning a queue. That is not what the data shows. Of 23,562 unanswered calls with a recorded wait, 50.1% ended within five seconds. The platform's own status on them is "Agent Not Available". The system refuses the call when no agent is free rather than holding the caller.
When somebody is there, the phone is answered instantly. When nobody is there, the caller is not put on hold. They are dropped.
Neither half of that sentence is publishable without the other. The wait figure describes only the 54.3% that were answered, so on its own it is survivorship. And The clock starts when the call reaches our switch, not when the caller dials. Carrier ring time before that is invisible to every instrument we own.
The consequence is definitional rather than rhetorical: an abandonment rate computed the usual way describes a mechanism that does not operate on this floor.
No single answer rate describes a multi-client floor
Seven queues carried 100 or more calls. Two of them had zero agents assigned across the entire window -- they are routing destinations, not queues that failed, and counting an unstaffed drop target as a 0% queue is a category error. They are shown rather than dropped, because the point of the chart is what happens when they are removed.
Removing the two unstaffed routing destinations (1,550 calls, 1.9% of queue records) moves the POOLED rate from 61.3% to 62.5% and the MEDIAN from 11.5% to 49.2%. That is the cleanest demonstration in this study of why a pooled rate and a median answer different questions. Two queues carry 84.9% of all volume, so anyone quoting the pooled figure as "what a client gets" is quoting those two.
39.7% of calls arrive after hours. That is demand, not coverage.
31,134 of 78,435 inbound calls whose timezone resolved, computed in the CALLER's local time rather than the floor's, because the two give different answers and only the caller's describes a homeowner ringing at seven in the evening. Unresolved rows are kept visible rather than dropped, so the figure is bounded 39.1% to 40.6%.
The right-hand panel is what stops this being a self-serving chart and the left panel is never published without it. It is also not a robocall artifact: the junk-disposition share of answered calls is 20.1% after hours against 18.8% in business hours, which is statistically the same call mix.
What this inbound corpus is not
At least 31.2% of it is our own outbound dialling coming back. In the week of 2026-07-25, 2,871 of 9,210 inbound calls came from a lead we had already dialled -- and that is a floor rather than a ceiling, because only about five weeks of outbound lookback existed to match against. This is not a measurement of organic inbound demand to an advertised contractor line, and a reader comparing it with a pure inbound answering service is comparing two different things.
Part B · 10,794 fully transcribed outbound calls · February-March 2026
How 10,794 cold calls to homeowners ended
Every call in this corpus was transcribed in full and analysed. 10,848 were transcribed in total and 54 belonged to a non-roofing list and were removed. It is a FIXED window and nothing refreshes it.
The six enumerated codes cover 5,058 of the 10,794 calls (46.9%). They do not partition the corpus. The unenumerated bar is drawn first and at full size for exactly that reason: this is not a pie, a donut or a stacked bar, and rendering it as one would assert a whole that the source documents do not describe.
The load-bearing row is the do-not-call request. 4.1% of the homeowners we dialled asked to be removed from the list. That is a first-party measurement of consumer hostility to cold calling, taken from the caller's side.
The booking rate, on both denominators
2% of dials booked an inspection (212 of 10,794). 3.6% of calls where a person was actually reached booked (210 of 5,772). These two are NOT nested. The per-contact figure sums the eleven published agent scorecards, which cover 10,703 of the 10,794 calls; the per-dial figure covers the whole corpus. "Contact" here means a call where a person was reached; it is not a qualified lead, so a true qualified rate would be higher rather than lower.
A booked call and a failed call are different events
The booked arm is the FULL booked population and carries no sampling error; the two failure arms are random samples and their n is printed on the mark. Never publish the booked figure alone -- on its own it says only that long calls exist. Paired with the 20-second hang-up it says the real thing.
209 of the 212 booked calls (98.6%) ran past the first minute. In a 60-call sample of calls ending "not interested", 5 did (8.3%). Same caveat as the two-minute finding in Part C: this is a correlation on outcome-labelled calls, not a lever. An internal summary of this corpus stated 6.7%. That figure is the 60-120 second bucket alone and omits the 120-180 second bucket. The correct figure is 8.3%.
82% of calls that booked contained an objection. So did 78% of calls that were lost.
Measured on 635 substantive conversations (211 booked plus 424 "not interested" calls running over 40 seconds). The similarity is the finding, so there is no delta callout here and there should never be one: the two sides are within four points of each other.
Booked calls are 33% of this set against 2.0% of the corpus, an enrichment of roughly 17x, and the losing side is only long "not interested" calls -- hang-ups are excluded entirely. Neither figure is a population rate.
What homeowners object to
| Objection | Count |
|---|---|
| Cost or price | 234 |
| "Not interested" | 200 |
| "No damage" | 110 |
| "My roof is fine" / new roof | 105 |
| "Not right now" | 98 |
950 objections across 20 types, an average of 1.5 per conversation. These five are not the whole taxonomy -- 15 further types are not shown. Of the 200 flat "not interested" objections, 21 occurred in a call that booked anyway. That is an existence proof on an enriched set, not a recovery rate.
What this page does not report, and why
An omission a reader cannot see is indistinguishable from a measurement. Each of these was computed and is deliberately not published.
Appointments per dial, and its reciprocal
True, reproducible and unfavourable, and it is the arithmetic consequence of a predictive dialler working normally rather than a fact about roofing. Every rate on this page is computed per conversation instead, so nothing here is rescaled to look better -- the figure is simply not published.
The share of dials our dialler classified as reaching a machine
It rests on an automated call-progress verdict that is not validated here against recordings, so it supports no claim about the world.
Any breakdown by state
It discloses the operating footprint. Held internal.
Any per-client, per-queue-identity or per-agent table
Dispersion is published as a range and a median across queues and campaigns. The mapping from a rank or a label to an account is not published and is not derivable from anything here.
A vertical cut of the inbound corpus
The largest queue is a shared multi-tenant group spanning 184 lists, and the queues that are single-contractor are 75.8% one contractor. A "roofing answer rate" from that corpus would be one client's operational figure wearing a pooled costume.
A monthly inbound answer-rate trend
Monthly volume swings by a factor of 3.5 and two queues are 84.9% of volume, so the series substantially tracks which large account was busiest that month.
What this data cannot say
This section is deliberately longer than any finding section. If a reader wants one part of the study to check us on, this is it.
- · This is one floor and one operator. It is not an industry benchmark, a market study, or a sample of anything.
- · The three parts are three populations and they must never be pooled. Different directions, different windows, different denominators. No ratio may be formed across them.
- · Carrier ring time is invisible. Every inbound wait figure starts when the call reaches our switch.
- · The inbound queue log is a subset of arrivals, which is why every inbound rate carries two denominators.
- · "Answered" means a named agent leg on the call record. It does not mean the agent spoke, and it does not mean the caller got what they wanted.
- · No causal claim anywhere. The talk-time finding and the first-minute finding are correlations on outcome-labelled calls; a conversation runs long because it is going well.
- · No trend claim. The monthly inbound answer-rate series is confounded with account mix at a magnitude that swamps it.
- · No abandonment claim in the usual sense. Callers on this floor are refused rather than held, so an abandonment rate computed the usual way would describe a mechanism that does not operate here.
- · No industry comparison. We could not verify the denominators behind the published vendor numbers, so we do not benchmark against them.
- · Appointment show rate is excluded entirely. A booked disposition means a setter clicked a button and carries no evidence anyone was home; confirming it needs contractor-side data we do not hold.
- · Share of calls handled in Spanish is unmeasured. What exists is a disposition an agent selected, which is a different quantity.
- · Speed to lead is not in this study. We hold no measurement of it that survives the standards used here.
- · Cost per booked appointment is not in scope. It would need billing data joined per account and would only be publishable as a range.
Method
- Reads
- read-only, SELECT-only, aggregate queries. No query in this study wrote to any production system.
- Windows
- Part A, 2026-05-03 to 2026-08-01 (90 days). Part B, February-March 2026 (fixed, does not refresh). Part C, 2026-05-23 to 2026-08-15 (85 calendar days holding 68 days with any dial and 66 with at least 1,000). None of the three refreshes. A figure from this study quoted without its window is a claim about today that nobody measured.
- Intervals
- Every rate carries a 95% Wilson score interval. Wald would leave the [0,1] range on the small appointment cells.
- Reporting floor
- A ratio is published only if its denominator is at least 1,000 and its numerator at least 30. Rows that fail are carried in the extraction and dropped from publication rather than printed faintly.
- Anonymisation
-
- · No client is named, anywhere. Queues are referred to by rank and campaigns by an anonymised label, never by identity.
- · No per-client table is published.
- · No agent is named and no per-agent figure is published.
- · No homeowner, phone number, address or lead identifier appears in any form. No transcript text is quoted verbatim.
- · Small-cell suppression: any breakdown whose smallest cell is small enough to identify an account is suppressed rather than rounded.
- · A rate whose own extraction marked it below the reporting floor -- fewer than 1,000 in the denominator or fewer than 30 in the numerator -- is not published as a rate.
- · Aggregates only. Nothing published here is row-level.
- Reproducing it
- We cannot publish the underlying rows -- they are client call records containing lead phone numbers -- so this study is reproducible by us against the same window, and independently checkable in its internal consistency. Those checks are stated so a reader can run them: the inbound funnel stages must decrease monotonically and its composition must sum to the answered total; the talk-time bands must sum to 94,349 conversations; and the outbound endings including the unenumerated bar must sum to 10,794. All three are asserted at build time. The machine-readable dataset is at /research/roofing-appointment-benchmark.json.
- A correction carried rather than hidden
- Two inbound denominators appear in the manuscript, 79,553 and 79,591, and the gap is unexplained rather than resolved. It does not move the language figure at the precision printed, and it is recorded here rather than smoothed over.
Every headline figure on this page, with its source
The three call corpora behind the roofing appointment benchmark
89,858 inbound calls across nine client queues (2026-05-03 to 2026-08-01), 10,794 fully transcribed outbound calls to homeowners (February-March 2026), and 7,132,360 outbound dials on three roofing campaigns producing 94,349 engaged conversations (2026-05-23 to 2026-08-15)
CCDocs call records, February-August 2026 · 2026-02/2026-08-15
What separates a roofing conversation that books from one that does not
Two minutes of agent talk. Of 2,974 conversations running 120 seconds or longer, 38.90% ended in a booked appointment; of the 91,375 running shorter, 0.195% did -- a factor of 199.5. It reproduces independently in all three campaigns: 33.384%, 53.829% and 18.644% above the threshold against 0.107%, 0.491% and 0.000% below it.
CCDocs call records, May-August 2026 · 2026-05-23/2026-08-15
Why a dial and a conversation cannot be counted as the same event
7,132,360 dials produced 419,373 that reached an agent (5.880%), 261,342 that put a live person on the line (3.664%) and 94,349 engaged conversations (1.323%). 63.9% of the live contacts were an immediate hangup or a wrong number, and mean talk time across all live contacts was 26.0 seconds.
CCDocs call records, May-August 2026 · 2026-05-23/2026-08-15
When a homeowner is actually reachable, in the homeowner own local time
Morning and midday, not evening. Live contact runs 4.014% at 10:00 local against 2.964% at 19:00, a span of 1.05 percentage points with non-overlapping 95% intervals, on the 3,965,858 dials whose stored timezone agrees with the state the lead lives in. Tuesday reaches 3.923% against Friday 3.424%, also non-overlapping.
CCDocs call records, May-August 2026 · 2026-05-23/2026-08-15
What happens to an inbound caller when no agent is free
The call is refused, not queued. 90.1% of answered calls connected with no measurable hold and the longest wait in 90 days was 53 seconds; of the 23,562 unanswered calls with a recorded wait, 50.1% ended within five seconds and 38 in the whole quarter waited 30 seconds or more.
CCDocs call records, May-August 2026 · 2026-05-03/2026-08-01
Whether a homeowner objection means the call is lost
It does not. In a 635-call set of substantive conversations, 82% of the calls that booked contained at least one homeowner objection and 78% of the calls that were lost did -- within four points of each other. 950 objections across 20 types, led by cost or price (234) and a flat "not interested" (200), of which 21 occurred in a call that booked anyway.
CCDocs call transcripts, February-March 2026 · 2026-02/2026-03
Questions this data answers
What separates a roofing appointment-setting call that books from one that does not?
Two minutes of agent talk time, and the gap is not subtle. Across 94,349 engaged conversations on 7,132,360 outbound dials, 38.9% of the 2,974 conversations that ran 120 seconds or longer ended in a booked appointment, against 0.195% of the 91,375 that ran shorter -- a factor of 199.5. It reproduces independently in all three campaigns in the corpus, so it is not one client's artifact. IT IS A CORRELATION AND NOT A LEVER: a conversation runs past two minutes because it is going well, and keeping somebody on the phone does not cause a booking. The defensible sentence is that a conversation that books is almost always one that got past two minutes.
When is a homeowner actually reachable?
Morning and midday, in the homeowner's own local time -- not evening, which is the folklore. Live contact runs 4.014% at 10:00 local against 2.964% at 19:00, a span of 1.05 percentage points with non-overlapping 95% intervals. The shape is not a steady decline and should not be described as one: it is a morning plateau, a mid-afternoon dip, a partial recovery, then a real evening fall. The timezone correction is the method rather than a detail -- the stored offset on the lead record disagrees with the timezone the lead's own state implies on 8.49% of dials, so every hour figure here is computed on the 3,965,858 dials where the two agree.
Why is every rate on this page computed per conversation instead of per dial?
Because a dial and a conversation are not the same event, and on this corpus they differ by a factor of about 75. Of 7,132,360 dials, 419,373 reached an agent, 261,342 put a live person on the line, and 94,349 were an engaged conversation -- 63.9% of the live contacts were an immediate hangup or a wrong number, and mean talk time across all live contacts was 26.0 seconds. A transcript corpus counts conversations; a dialler log counts dials. Quoting a rate from one against the other is wrong by that factor, which is the single most common error in published dialling statistics.
What happens to an inbound caller when no agent is free?
The call is refused, not queued -- which was the finding that surprised us most. 90.1% of answered calls connected with no measurable hold, the 99th percentile waited 4 seconds and the longest wait in 90 days was 53 seconds. On the other side, of 23,562 unanswered calls with a recorded wait, 50.1% ended within five seconds and 38 in the entire quarter waited 30 seconds or more. Neither half of that is publishable without the other. It also means an abandonment rate computed the usual way describes a mechanism that does not operate on this floor.
Does a homeowner objection mean the call is lost?
No, and the numbers are close enough that the similarity is the finding. In a 635-call set of substantive conversations, 82% of the calls that booked contained at least one homeowner objection and 78% of the calls that were lost did. Two selection artifacts travel with that pair and neither may be dropped: the set is enriched about 17x for booked calls, and the losing side is only long "not interested" calls with hang-ups excluded entirely. What it supports is that an objection tells you a conversation is happening, not that it is failing.
Is this an industry benchmark?
No, and a page that implied it was would be overreaching. This is one floor and one operator, measured in three fixed windows. There is no second contact centre in any of the three corpora, so nothing here establishes what is normal, average or good for anybody else. Two further boundaries matter: at least 31.2% of the inbound corpus is our own outbound dialling coming back, so it is not a measurement of organic demand to an advertised contractor line; and the pooled inbound answer rate hides a six-fold spread across queues, so no single answer rate describes a multi-client floor.
What does this study deliberately not report?
Six things, each named on the page with its reason rather than quietly missing. Appointments per dial and its reciprocal are not published -- true, reproducible and unfavourable, and the arithmetic consequence of a predictive dialler working normally rather than a fact about roofing. The share of dials our own dialler classified as reaching a machine is not published, because it rests on an automated verdict not validated here against recordings. There is no state-level table, no per-client or per-agent table, no vertical cut of the inbound corpus, and no monthly trend. Appointment show rate is excluded entirely: a booked disposition means a setter clicked a button and carries no evidence anyone was home.
Can I cite or reuse this data?
Yes, under CC BY 4.0 with a link back to this page, and the machine-readable version of every series is at /research/roofing-appointment-benchmark.json. One condition, and it is the reason the study exists: any figure reused from it must carry its DENOMINATOR and its WINDOW, both of which are printed beside every number here. A figure from this study quoted bare is being quoted wrong. We will not licence a redraw that drops the denominator, that pools two of the three corpora, or that renders the outbound endings as a whole -- those six codes cover 46.9% of the corpus and do not partition it.
Cite it, reuse it, check it
Published under CC BY 4.0 with a link back to this page. Any figure reused from it must carry its denominator and its window -- both are printed beside every number here for exactly that reason. A figure from this study quoted bare is being quoted wrong.
We publish this because we needed the numbers to run the business and nobody else has published them. It is one floor and one operator, and the section on what the data cannot say is the longest section on the page.
Book a Call