Skip to main content
RevDesk 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 RevDesk handles for you

Several compliance steps are run automatically on every outbound action — you don’t need to configure or maintain them:
ItemWhat RevDesk doesWhere it shows up
National DNC scrubbingEvery 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 enforcementCalls 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 disclosureDefault 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 appendFirst 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 logEvery 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.

For each contact, RevDesk maintains per-channel state:
voiceOptIn / voiceOptedInAt / voiceConsentSource / voiceConsentSender / voiceConsentUseCase
smsOptedIn / smsOptedInAt / smsConsentSource / smsConsentSender / smsConsentUseCase
emailOptIn / emailOptedInAt / emailConsentSource / emailConsentSender / emailConsentUseCase
firstInboundCallAt / firstInboundSmsAt / firstInboundEmailAt
SourceWhen it’s written
manual_adminAdmin captured consent via the Capture Consent dialog on the contact-detail page.
csv_uploadConsent metadata supplied in an inbound CSV import.
crm_syncConsent provided by an upstream CRM sync.
inbound_initiatedSet 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

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.