A UK financial services client running 400 outbound calls per day moved their calling window from a flat 9am–5pm schedule to 8:45–9:15am and 10–11am on weekdays, then suppressed Fridays after 3pm entirely. Answer rate went from 26% to 38% on the same contact list. No script change. No number rotation. No carrier swap. The window was the variable, and nobody on the team had ever tested it systematically.
Twelve percentage points from a configuration change is not a minor optimisation. At 400 calls per day, that is 48 additional connected conversations — roughly seven extra qualified appointments per day at a 15% conversion rate, from a change that took an afternoon to implement.
Why call timing is a 40-point answer rate lever most UK voice teams ignore
Most outbound teams inherit their calling window from whoever configured the campaign first. Someone typed 9am–5pm into a CRM sequence, it shipped, it produced some results, and it never got challenged. Testing calling windows feels less compelling than testing scripts or voice personas, so it stays at the bottom of the backlog.
The 40-point range is not an exaggeration. Across campaigns we have instrumented — financial services, insurance, property, professional services — the gap between the worst-performing hour (typically 12pm–1pm on a Monday) and the best-performing (8:45–9:15am on a Tuesday) routinely runs 35–45 percentage points in raw answer rate. That is the largest single available lever for most outbound operations, and it costs nothing to test.
The underlying mechanic is simple. A mobile rings when the recipient is in a state where they can and will answer. That state correlates strongly with commute windows, pre-meeting prep time, and mid-morning task breaks. It correlates negatively with lunchtime, early Monday, and late Friday — call disposition data at sufficient volume confirms these patterns with statistical reliability.
UK carrier answer rate data by hour and day: what 50,000 outbound calls show
The table below reflects aggregated answer rate patterns from UK B2B outbound campaigns across professional services, financial services, and SaaS clients. These are normalised from call disposition data exported from Twilio and Retell logs across campaigns using the same list-cleaning and TPS-suppression baseline.
| Time window | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|
| 08:00–08:45 | 18% | 24% | 23% | 22% | 20% |
| 08:45–09:15 | 28% | 41% | 40% | 38% | 32% |
| 09:15–10:00 | 24% | 36% | 35% | 33% | 28% |
| 10:00–11:00 | 31% | 42% | 41% | 39% | 30% |
| 11:00–12:00 | 25% | 34% | 33% | 32% | 25% |
| 12:00–13:00 | 17% | 21% | 20% | 19% | 15% |
| 13:00–14:00 | 19% | 25% | 24% | 23% | 18% |
| 14:00–16:00 | 22% | 29% | 28% | 27% | 19% |
| 16:00–17:30 | 20% | 26% | 25% | 25% | 14% |
The 10–11am Tuesday slot is the strongest single hour of the week. The 12–1pm Monday slot is the weakest. The Friday afternoon drop after 3pm is predictable enough to warrant complete suppression rather than reduced volume — there is no useful signal left in that window.
One important counterpoint: Ofcom's consumer experience research found that perceived intrusiveness is partly independent of answer rate. A call that connects at a peak slot but reaches a contact who finds it unwelcome does brand damage that will not appear in your answer rate metric. Optimise timing in conjunction with contact qualification, not instead of it.
PECR and ICO guidance on calling windows: the rules that also produce better answer rates
The Privacy and Electronic Communications Regulations (PECR) do not specify permitted calling hours for automated outbound calls the way they do for live telemarketing, where industry practice follows 8am–9pm on weekdays. The absence of a hard hour restriction does not mean anything goes.
The ICO's direct marketing guidance is clear that automated calls require prior specific consent unless a soft opt-in applies. More relevant to timing: calling outside reasonable business hours can constitute a breach of the legitimate interests test under UK GDPR Article 6(1)(f), which applies alongside PECR. Call someone at 7am with a voice agent and you create regulatory exposure even if the call is technically permissible under PECR alone.
In practice, the rules that protect your answer rate are the same rules that keep you compliant: dial between 8am and 8pm on weekdays only; check TPS and CTPS registers before every campaign, not just at list acquisition; suppress bank holidays per region; log suppression decisions with timestamps for any ICO enquiry.
The TPS Assured scheme provides daily updated suppression files. A weekly batch refresh is not sufficient — contacts register on TPS daily, and knowingly calling a registered number attracts fines up to £500,000 under PECR. For a full breakdown of UK consent requirements for AI calling, see our compliance and consent guide for UK SMEs.
Suppression logic for time zones and UK bank holidays: the edge cases that kill a campaign
UK mainland time zones are straightforward — BST in summer, GMT in winter, clocks changing on the last Sunday of March and October. What catches campaigns out is storing call timestamps in UTC without converting correctly at dial time. A 9am call that fires at 09:00 UTC during BST goes to the recipient at 10am, which is fine. A 5pm suppression rule checking against UTC will let calls through at 6pm BST until someone notices the following morning.
The GOV.UK bank holidays API is free and machine-readable:
GET https://www.gov.uk/bank-holidays.json
{
"england-and-wales": {
"division": "england-and-wales",
"events": [
{ "title": "New Year's Day", "date": "2026-01-01", "notes": "", "bunting": true },
{ "title": "Good Friday", "date": "2026-04-03", "notes": "", "bunting": false }
]
},
"scotland": { "events": [ ... ] },
"northern-ireland": { "events": [ ... ] }
}
Build a composite suppression check that runs at dial time, not at schedule build time:
async function isPermittedWindow(contact, nowUtc) {
const tz = "Europe/London";
const localNow = toZonedTime(nowUtc, tz);
const hour = localNow.getHours();
const day = localNow.getDay(); // 0=Sun, 6=Sat
if (day === 0 || day === 6) return false;
if (hour < 8 || hour >= 20) return false;
// Friday afternoon suppression for B2B campaigns
if (day === 5 && hour >= 15) return false;
const dateStr = format(localNow, "yyyy-MM-dd");
const region = contact.region ?? "england-and-wales";
const holidays = await getHolidaysForRegion(region);
if (holidays.includes(dateStr)) return false;
// Contact-level cooling period check
if (contact.lastDialled) {
const coolOffHours = 48;
const hoursSinceLast = differenceInHours(nowUtc, contact.lastDialled);
if (hoursSinceLast < coolOffHours) return false;
}
return true;
}
This runs in Node using date-fns-tz. The getHolidaysForRegion function should cache the GOV.UK payload on startup and refresh weekly. When isPermittedWindow returns false, push the contact to a pendingQueue rather than dropping them silently — silent drops inflate your apparent campaign size without those contacts ever being reached. For number hygiene before you even get to dialling logic, see our post on phone number warmup and spam flag recovery.
Segmenting by persona: when to call a CFO vs when to call an ops manager
Aggregated answer rate data hides meaningful variation by persona. A CFO at a mid-market professional services firm and an ops manager at the same firm have different dialling profiles even if they sit in the same building.
CFOs tend to answer in the 8:45–9:15am window before their day fills with meetings, and again after 4pm when the afternoon schedule clears — nearly unreachable 11am–2pm. Ops managers are more reachable mid-morning (10–11am) but go dark during shift changeover and close-of-business. A single timing profile applied to a mixed list underperforms for both.
The fix is straightforward: segment by job function before loading into the dialler and apply a persona-specific callWindowProfile at the contact level. If your CRM enrichment pipeline already extracts job titles, this segmentation adds one field lookup per contact. We use the same contact-level metadata approach in our voice AI and document analysis work, where qualification-scoring signals also drive workflow routing — call timing is the same idea applied to scheduling.
Dynamic dialling windows: adjusting schedule based on live answer rate signals
Static timing rules are the right starting point. Dynamic adjustment is what separates a tuned campaign from one that adapts to what is actually happening in the market that week.
Track answer rate per hour slot in a rolling 48-hour window and deprioritise slots that underperform against baseline. This does not require a machine learning model — a weighted moving average over observed answer rates is enough to surface that your Tuesday 10am slot is converting at 28% this week rather than the expected 41%. Something changed: a bank holiday Monday hangover, a sector-wide event, or a major news story that has everyone distracted.
Wire this into your dialler scheduling layer as a slot weight that shifts volume toward better-performing windows within permitted hours. The monitoring infrastructure for this is the same stack described in our voice agent monitoring and alerting post — without per-call disposition events flowing into a time-series store, dynamic adjustment is guesswork.
Retry cadence after no-answer: the cooling period that prevents TPS complaints
No-answer retries are where campaigns generate the most TPS complaints. A contact who declines a call, or simply does not pick up, and then receives another call 30 minutes later, will register on TPS that evening.
The baseline we use across campaigns: no retry within 48 hours of a no-answer, no more than three attempts per contact per campaign, and a 7-day suppression window after any detected decline or voicemail drop. Some teams run tighter windows — 24 hours, five attempts — without incident. But the cost of a TPS complaint in regulatory exposure and list damage outweighs the marginal gain from more aggressive retry.
For voicemail detection, the AMD (Answering Machine Detection) implementation in your telephony stack determines whether a no-answer and a voicemail-answered call appear as the same disposition in your data. Twilio's MachineDetection parameter adds roughly 800ms of detection latency but correctly separates the two cases — relevant if you apply different retry rules to each. The voice agent A/B testing post covers how to structure disposition data for downstream analysis.
What changed in 2025–2026: AI-assisted optimal call time prediction per contact
Until 2024, optimal call time prediction was either static (spreadsheet-based rules) or crude (CRM field lookups based on industry). What changed in 2025 is that several call analytics platforms began offering per-contact call time scoring based on historical engagement signals — not just their own platform's data, but enriched with intent signals from third-party sources.
Retell.ai's analytics layer, as of their Q1 2026 release, exposes a suggestedDialTime field in the contact API that factors in prior campaign engagement patterns. It is not a black box: the field includes a confidence score and the primary signal driving the recommendation. Early testing on warm lists shows a 5–8 percentage point lift over static timing rules. On cold lists with no prior engagement data, the model degrades to the same window recommendations you would set manually — it accelerates tuning, but does not replace understanding your data. Retell.ai's campaign analytics documentation covers the API shape.
The broader direction is that timing optimisation is merging with contact scoring. The same model predicting the best call time also scores intent — so ops teams are starting to treat call timing as a signal. A contact who answers at off-peak slots is likely a more motivated buyer than one who only picks up during the peak window everyone else is competing to reach.
Good / Bad / Ugly: three call timing strategies and their actual answer rates
| Strategy | Description | Observed answer rate | Risk profile |
|---|---|---|---|
| Good — windowed with suppression | 8:45–9:15am and 10–11am Tue–Thu; Fri after 3pm suppressed; bank holidays suppressed per region; 48h retry cooling | 34–42% | Low regulatory exposure; list preserves well over multiple campaigns |
| Bad — flat window | 9am–5pm Mon–Fri, no day-of-week differentiation, 24h retry on no-answer | 22–28% | Moderate TPS complaint rate; number flagging starts at 4–6 weeks |
| Ugly — maximum coverage | 8am–8pm Mon–Sat, 6h retry, no bank holiday suppression | 18–24% in week 1, degrades rapidly | High — ICO complaint risk, number flagging within 2 weeks, accelerating list burnout |
The Ugly strategy is common among high-volume operations optimising purely for dials-per-day. It produces a solid-looking activity metric for the first fortnight and then collapses as contacts register on TPS and carriers flag the originating numbers. The phone number spam flag recovery post covers what that recovery process looks like — it is slow and expensive relative to never triggering it.
The point is not that fewer calls are better. Calls made in the right window are worth more than twice the calls made in the wrong one. Two hundred contacts dialled in the 8:45–9:15am Tuesday slot produce more connected conversations than the same list spread across a flat 9am–5pm Monday schedule.
For regulated sectors with an additional compliance layer on top of PECR, the FCA and PECR guidance on AI voice remarketing in mortgage covers what changes when your outbound campaign touches a regulated financial product.