Guides
Compliance-first outbound calling
Calling windows, consent, suppression lists, and disclosures — the checks that need to run before a dial, not after a complaint.

Outbound is where regulated industries get nervous, and reasonably so. The controls that matter are unglamorous and need to be enforced by the system rather than remembered by a person.
The nervousness is well founded. Inbound is consent by definition — someone chose to call you. Outbound is you choosing to contact someone, which is a different legal posture in most jurisdictions and a different relationship in all of them. The rules vary by country, by state or province, by industry, and sometimes by what the recipient said on a previous call.
None of that is a reason not to run outbound. It is a reason to make the controls structural, so a mistake requires someone to disable a check rather than merely forget one.
This is a description of how we build the controls, not legal advice. What applies to you depends on your jurisdiction and industry, and that question belongs with your counsel.
Compliance is an architecture question
The failure mode worth designing against is not malice. It is a well-meaning person under time pressure uploading a list at half past four with one column mislabelled.
If the controls live in a process — a checklist, a review step, an approval email — that upload succeeds and the calls go out. If they live in front of the dialer, it fails closed and somebody gets an error instead of a complaint. Same mistake, entirely different outcome, and the only difference is where the check sits.
This is also why "we'll review campaigns before they launch" tends not to survive contact with a busy quarter. Review catches what a reviewer thinks to look for, on the days they have time. A gate catches everything, every time, including at half past four.
Checks that run before the dial
Local calling windows for the recipient's time zone, consent status on the record, suppression and do-not-call lists, and per-campaign frequency caps. A dial that fails any of these should never be attempted. The same checks apply whether the campaign is sales follow-up or payment reminders.
Putting these in front of the dialer instead of in a review process means a misconfigured campaign fails closed.
The set worth enforcing at the gate:
- Calling window, resolved from the recipient's own time zone rather than the campaign's. A list sorted by area code will otherwise call somebody at six in the morning.
- Consent status on the record, with the basis and the date it was captured — not a boolean somebody set once.
- Suppression and do-not-call membership, checked at dial time rather than at import time. Lists change between the two.
- Frequency caps per recipient and per campaign, counting attempts rather than connections.
- Reachability and format validity, so a malformed number doesn't burn an attempt against the cap.
Attempts, not connections, is the detail people get wrong. Five unanswered calls in a morning is the behaviour recipients complain about, and a cap that only counts answered calls doesn't see it.
Time zones are the sharp edge
Of all of these, calling windows produce the most real-world violations, because the correct answer is genuinely hard to compute. Area codes stopped indicating location reliably years ago — numbers port, people move, mobiles travel. A number's prefix is a hint, not an address.
Where you hold a reliable location on the record — a service address, a billing postcode — use that in preference to the number. Where you don't, be conservative: a narrower window costs you some connect rate, and the alternative costs you a complaint you cannot undo.
Daylight saving is the other trap. Windows expressed in a fixed offset drift by an hour twice a year, in opposite directions, and the resulting violations cluster neatly around the changeover dates. Resolve against a named zone, not an offset.
Disclosures belong in the transcript
Scripted disclosures and captured consent are only useful if they're auditable later. Both are recorded as part of the conversation record, per call, with retention configured to your policy.
"Auditable" here means something specific: for any given call, you can show what was said, when, and what the recipient said back. Not that a disclosure existed in the script — that it was delivered on that call. Those are different claims, and only the second one is any use when somebody disputes it.
The disclosure also has to be genuinely early. A recipient who has answered questions for ninety seconds and only then learns the nature of the call has been misled in practice, whatever the script technically contained. Put it before anything is collected.
Honour the opt-out immediately and everywhere
When somebody asks not to be called again, three things need to happen, and the third is the one that gets skipped.
- The current call ends politely and promptly. No last attempt at the pitch, no transfer to a retention script.
- The suppression is written immediately, not queued for a nightly sync. Between the request and the write is exactly when the next campaign picks the record up.
- It propagates to every system that can originate a call — every campaign, every list, and any connected CRM that another team might dial from. A suppression that only exists in one tool is a suppression that will be violated by a different one.
What to keep, and for how long
Recordings, transcripts, consent records and dial logs all have retention questions attached, and the answers are not the same. Keeping everything forever is a liability rather than a safety measure; keeping too little means you cannot evidence compliance for the period somebody asks about.
The workable pattern is to decide retention per category, write the policy down, and configure the system to enforce it rather than relying on anyone remembering to prune. Consent records generally need to outlive recordings, because the question they answer — were we allowed to make this call — is asked long after the audio has stopped being useful.
Whatever you choose, the important property is that deletion is automatic. A retention policy that depends on a quarterly manual cleanup is a policy you are not actually following.


