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

# Outreach audit & consent records

> How LumisReach captures consent metadata, attaches disclosures, and persists an audit trail for outbound communications.

LumisReach records what disclosures were attached to every outbound call and SMS, plus the per-channel opt-in state for every contact, so you can produce an audit trail on demand.

***

## What LumisReach handles for you

Several compliance steps are run automatically on every outbound action — you don't need to configure or maintain them:

| Item                             | What LumisReach does                                                                                                                                                                                                       | Where it shows up                                                |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| **National DNC scrubbing**       | Every outbound contact is checked against the federal Do-Not-Call registry plus your workspace opt-out list before a call or SMS leaves the platform. Hits are blocked and logged.                                         | Compliance Center → Active disclosures → "DNC scrubbing"         |
| **TCPA quiet-hours enforcement** | Calls outside 8am–9pm in the recipient's local time are deferred. State-specific rules (FL/MD/MA/OK/WA/WY 8am–8pm, AL/LA/MS/UT/SD/RI Sunday ban) are layered on top.                                                       | Compliance Center → Active disclosures → "Calling hours"         |
| **Recording disclosure**         | Default outbound greeting includes "this call is being recorded" in the recipient's language (50+ localized). Two-party-consent state recipients get an extra compose-time warning if your greeting is missing the phrase. | Compliance Center → Active disclosures → "Recording disclosure"  |
| **SMS STOP append**              | First outbound SMS to each contact auto-appends "Reply STOP to opt out." Inbound STOP/UNSUBSCRIBE/END/CANCEL/QUIT keywords are honored automatically and suppress all further sends.                                       | Compliance Center → Active disclosures → "SMS STOP instructions" |
| **Disclosure attestation log**   | Every outbound call and SMS persists `disclosureAttested` / `stopInstructionsAttested` plus a two-party-state flag at send time.                                                                                           | Compliance Center → Last 30 days + "Export audit"                |

If you see a **"We'll do it"** badge anywhere in the Compliance Center, that means the underlying check is one of the items above — already configured, always-on, no action required.

***

## Where to find it

Open the **Compliance Center** widget on the Outreach page. It surfaces:

* The workspace's TCPA/DNC acknowledgement state.
* Active disclosures (recording, SMS STOP, TCPA quiet hours, DNC scrubbing).
* Per-active-campaign compliance checkmarks.
* Consent record counters and recent events.
* 30-day disclosure attestation rates.
* "Export full audit" CSV.

***

## Consent record model

For each contact, LumisReach maintains per-channel state:

```
voiceOptIn / voiceOptedInAt / voiceConsentSource / voiceConsentSender / voiceConsentUseCase
smsOptedIn / smsOptedInAt / smsConsentSource / smsConsentSender / smsConsentUseCase
emailOptIn / emailOptedInAt / emailConsentSource / emailConsentSender / emailConsentUseCase
firstInboundCallAt / firstInboundSmsAt / firstInboundEmailAt
```

### Sources of consent

| Source                                         | When it's written                                                                    |
| ---------------------------------------------- | ------------------------------------------------------------------------------------ |
| `manual_admin`                                 | Admin captured consent via the Capture Consent dialog on the contact-detail page.    |
| `csv_upload`                                   | Consent metadata supplied in an inbound CSV import.                                  |
| `crm_sync`                                     | Consent provided by an upstream CRM sync.                                            |
| `inbound_initiated`                            | Set automatically when a contact initiates an inbound call or SMS to your workspace. |
| `web_form`, `verbal_call`, `partner_api`, etc. | Free-form values you supply.                                                         |

### Capture via API

```ts theme={null}
trpc.viewer.contacts.captureConsent.mutate({
  contactId: "...",
  channel: "voice",
  optedIn: true,
  source: "verbal_call",
  sender: "user:42",
  useCase: "sales_followup",
});
```

***

## Disclosure attestation

Every outbound `PhoneCall` row records:

* `disclosureAttested` — true when the live greeting includes a recording-disclosure phrase (English variants and 50+ localizations).
* `disclosureText` — the disclosure phrase actually attached.
* `twoPartyStateAtCallTime` — true when the recipient's area code maps to an all-party-consent state (CA, CT, DE, FL, IL, MA, MD, MI, MT, NV, NH, OR, PA, WA).

Every outbound `Message` row records:

* `stopInstructionsAttested` — true when the body contains STOP / opt-out instructions (auto-appended by `maybeAppendOptOut` on the first message per contact, or already present in the body).

These columns are written at send time, not derived from later log scans — so the audit reflects exactly what the recipient saw or heard.

***

## Audit export

The Compliance Center widget's "Export full audit" button calls `viewer.compliance.exportOutreachAudit` and returns a CSV containing:

```
occurredAt, channel, direction, contactId, contactName, contactPhone, toNumber, fromNumber,
senderUserId, disclosureAttested, disclosureText, stopInstructionsAttested,
twoPartyStateAtCallTime, voiceOptIn, voiceConsentSource, voiceConsentSender, voiceConsentUseCase,
smsOptedIn, smsConsentSource, smsConsentSender, smsConsentUseCase,
firstInboundCallAt, firstInboundSmsAt
```

Default window is the last 30 days; the API accepts `since` / `until` parameters for arbitrary ranges. Records are scoped to your accessible teams only.

***

## Related

* [Compliance & Regulations](/getting-started/features/compliance)
