> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squawkvoice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Compliance & DNC

> TCPA attestation, Do-Not-Call scrubbing, SAN setup, consent fields, and charges

Outbound Campaigns ship with compliance controls built in: consent gating on every contact, Do-Not-Call and reassigned-number scrubbing before every dial, legal calling-hours enforcement, in-call opt-out handling, and a full audit trail.

<Warning>
  These features help you operate compliantly, but they are not legal advice. You remain responsible for obtaining valid consent and complying with the TCPA and all other applicable federal, state, and local laws.
</Warning>

## Consent Fields

Every contact carries three consent fields from your CSV upload:

| Field                     | Effect when dialing                                                                                                                                     |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `is_voice_call_opted_out` | If true, the contact is **never dialed** — regardless of PEWC.                                                                                          |
| `has_pewc`                | Whether you hold Prior Express Written Consent (TCPA-required documented, signed consent for marketing calls using an autodialer or prerecorded voice). |
| `pewc_date`               | When PEWC was captured. Required whenever `has_pewc` is true.                                                                                           |

Contacts that fail these gates are marked **Blocked** with a reason (No voice-call consent, Missing PEWC, Missing PEWC date) and are never dialed.

## DNC Scrubbing

When enabled — and it is **enabled by default** on voice campaigns — the platform runs two checks on every contact before dialing:

* **DNC Full Scrub** — checks the number against Do-Not-Call registries and litigator lists, plus your account's internal DNC list.
* **Reassigned-Number check** — detects numbers that changed hands after consent was given, so you don't call the wrong person.

Numbers flagged by either check are **not dialed** and appear as Blocked with the specific reason. Your internal DNC list is always honored absolutely. If the check vendor is unavailable, the contact is skipped rather than dialed unchecked (and not charged).

### SAN — Subscription Account Number

DNC scrubbing requires a SAN from the National Do Not Call Registry:

1. Open **Manage → Campaigns** and click the settings gear (**Account-level campaign settings**), or follow the **DNC SAN Setup** prompt in the campaign editor.
2. In the **Campaign account settings** drawer, enter your **Subscription Account Number (SAN)** and save.
3. Don't have one? Get it at [telemarketing.donotcall.gov](https://telemarketing.donotcall.gov) — subscribe to the area codes you plan to dial (the first five are included in the annual fee).

The SAN applies to every campaign in the account. The campaign header shows a SAN chip; **SAN configured** is a launch gate whenever scrubbing is enabled.

### What scrubbing costs

| Item                                  | Charge                                                                     |
| ------------------------------------- | -------------------------------------------------------------------------- |
| Campaign dial                         | **\$0.10 per contact per run** (default; your plan's rate is shown in-app) |
| Test call with dialing rules enforced | \$0.10 per test call when checks succeed                                   |
| Vendor check failure                  | Not charged (and the contact is not dialed)                                |

Charges apply **once per contact per run** — retries within a run never re-charge, but re-launching the campaign starts a new run and re-charges each contact it processes. Before enabling scrubbing, a cost preview shows the maximum cost for the run (contacts × rate). DNC charges appear in each call's cost breakdown in Call History and on your invoice.

## In-Call Opt-Outs (DNC Requests)

If a contact tells the agent to stop calling:

1. The agent speaks your configured **On DNC Request** message.
2. The call ends with the disposition **DNC Request**.
3. The number is registered on your internal DNC list **immediately** — opt-outs are dispatched with priority so they can never be lost to a slow post-call step.

Opted-out numbers are blocked from all future campaign dials on your account.

## Legal Calling Hours & Frequency Caps

* Each contact's local timezone (resolved from ZIP code, falling back to phone area code) determines the legal calling window that applies to *them*; out-of-window contacts are queued, not dialed. See [Scheduling](/campaigns/scheduling).
* State frequency limits (for example, Florida's 3-calls-per-24-hours rule) hold contacts in a "Frequency capped" state until the window expires.

## Launch Attestation

Every launch requires confirming the **Confirm Compliance** dialog: that you have obtained all required consents and that the campaign complies with the TCPA and other applicable laws. With DNC scrubbing enabled, you additionally attest that the SAN on your account is the one you intend to use for compliance scrubbing. The attestation is recorded with the run.

## Block Reasons Reference

When a contact shows as Blocked, its dial history drawer names the reason:

| Reason                           | Meaning                                                              |
| -------------------------------- | -------------------------------------------------------------------- |
| No voice-call consent            | `is_voice_call_opted_out` was true                                   |
| Missing PEWC / Missing PEWC date | Consent fields incomplete                                            |
| DNC registered                   | Number found on a Do-Not-Call list                                   |
| RND reassigned                   | Number was reassigned after the consent date                         |
| Scrubbing failed                 | The check vendor was unavailable — the dial was skipped, not charged |

## Audit Trail

* Campaign lifecycle events (create, launch, attestation, pause/resume/stop, window transitions) are retained in a dedicated campaign audit log.
* Every dial decision — placed, queued, or blocked, with its TCPA context — is recorded per attempt and visible in the contact's dial history.
* Campaign configuration changes also appear in the platform-wide [Audit Logs](/manage/audit-logs).

## Where to go next

<Columns cols={2}>
  <Card title="Contact Lists" icon="users" href="/campaigns/contact-lists">
    How the consent columns are uploaded and validated.
  </Card>

  <Card title="Launching & Live Monitoring" icon="activity" href="/campaigns/launching-and-monitoring">
    Where blocked contacts and TCPA decisions surface.
  </Card>
</Columns>
