Who This Is For / Who It Is Not For
Who this is for: US businesses, compliance owners, marketing ops, and product teams that send or enable A2P SMS and need practical registration, consent, or troubleshooting guidance tied to 10DLC/TCR and TCPA concepts.
Who this is not for: Readers seeking invented fine amounts, guaranteed approval rates, or universal throughput figures; purely P2P consumer texting with no application layer; teams outside US A2P rules who need only foreign-regulator advice.
Short answer: An SMS consent audit trail is the stored evidence showing who agreed to which texts, when, how, and under what disclosure—plus later opt-outs. It supports TCPA defense and helps satisfy CSP Campaign message_flow questions. A2P 10DLC registration does not create this trail; your CRM and logging design do.
Worked example: what a defensible consent record contains
An e-commerce brand receives a demand letter claiming a customer never agreed to marketing texts. Its consent record for that number shows the timestamp, the IP address and page URL of the checkout form, a screenshot of the exact consent language displayed that day, the unchecked-box action, the confirmation text sent and the customer's later replies.
Because the record includes the language as shown on that date, not just a yes/no flag, the brand can prove what the customer agreed to. It retains records for at least four years, the TCPA's limitation period, and stores consent-language versions alongside them.
Why Trails Matter
Two audiences ask for proof:
- Regulators / plaintiffs / counsel — Did this number validly consent to this marketing (or other) program under 47 CFR § 64.1200?
- CSP / Campaign reviewers — Can a stranger verify your opt-in story via URLs, screenshots, and samples (Twilio Campaign fields)?
CTIA’s Messaging Principles also emphasize documenting opt-in details as industry practice.
Internal explainer: consent evidence trail.
Minimum Fields to Store
| Field | Purpose |
|---|---|
phone_e164 |
Normalized number texted |
brand_id / legal seller name |
Ties to PEWC “identified seller” |
program_id / Campaign ID |
Which message program |
consent_type |
marketing PEWC vs informational express, etc. |
capture_method |
web, paper, keyword, verbal, QR |
disclosure_version |
Hash or ID of exact text shown |
disclosure_text or URL to immutable copy |
What the user saw |
timestamp_utc + local tz |
When |
signature_evidence |
checkbox true, ESIGN bundle, wet-ink scan, keyword inbound |
source_url / form_id |
Web provenance |
ip / user_agent |
Web corroboration |
agent_id |
Staff-assisted capture |
double_opt_in_at |
Confirmation time if used |
revoked_at / revoke_method |
STOP or other |
If you cannot answer “show me the disclosure for send X,” the trail is incomplete.
Architecture Patterns
Immutable disclosure versions
Never edit historical disclosure rows in place. Create disclosure_v3 when marketing changes copy; new consents reference v3; old consents keep v2.
Event log + current state
Keep an append-only event stream (consent_granted, consent_confirmed, stop_received) and a materialized consent_current table for send-time checks.
Separate marketing vs care flags
A number may have care consent without marketing PEWC. Store per-program entitlements, not a single boolean sms_ok.
Exportability
Counsel will ask for CSV/JSON of a number’s history during disputes. Build export before you need it.
Campaign Evidence Pack (Parallel Artifact)
For TCR/CSP reviews, maintain a folder:
- Screenshots of opt-in UI (mobile + desktop)
- Public privacy/terms URLs
- Hosted screenshot URLs if login walls block reviewers
- Sample verbal scripts if applicable
- Confirmation SMS examples
This pack supports message_flow text. It complements—but does not replace—per-user database trails.
Retention and Legal Holds
Set a retention schedule with counsel (often multi-year for marketing consents). When litigation is reasonably anticipated, freeze deletion. Do not purge STOP records early—you need them to prove suppression.
Common Failures
- CRM only stores “SMS = yes” with no disclosure version
- Overwriting consent on every profile edit
- Losing data in ESP migrations
- Shared lead-gen consents without seller identity
- Sending marketing after STOP because care flag remained true and code ignored revoke events
Operational Cadence
- Weekly: sample 25 random marketing sends; verify consent rows exist
- Monthly: reconcile STOP webhooks vs suppression list
- Quarterly: refresh Campaign evidence screenshots if UI changed
- On template change: bump disclosure version; update Campaign samples if needed
Soft help: MyTCRPlus tools for disclosure/sample consistency checks; single vs double opt-in for capture method design.
Mapping Trails to Send-Time Enforcement
The best audit trail still fails if the sender ignores it. At send time:
- Resolve
phone+program_id→ active consent row - Block if
revoked_atis set - Block marketing if only care consent exists
- Attach
consent_record_idto the outbound message log - On STOP inbound, write revoke event before acknowledging downstream campaigns
This closes the loop between storage and behavior. Engineers should unit-test “STOP then marketing blast” as a regression case.
Vendor Offboarding
When leaving an ESP/CSP:
- Export full consent + revoke histories
- Export disclosure version table
- Capture final UI screenshots
- Confirm number release does not erase logs you need
Put offboarding exports in the contract checklist—not as an afterthought during a heated migration weekend.
Sample Schema (Illustrative)
consent_events(
id, phone_e164, brand_legal_name, program_id,
event_type, disclosure_version, capture_method,
evidence_json, created_at_utc, actor
)
consent_current(
phone_e164, program_id, status, consent_event_id,
revoked_at_utc, updated_at_utc
)
outbound_messages(
id, phone_e164, program_id, template_id,
consent_record_id, csp_message_sid, sent_at_utc
)
Use this as a design prompt for engineers—not a mandated vendor schema. The critical idea is joining each send to a consent_record_id.
How MyTCRPlus Can Help
Prepare Brand packets, public SMS disclosures, and pre-submission diagnostics with MyTCRPlus tools at https://mytcrplus.com/tools/ and related microsite options. They help you organize evidence for your CSP—they do not guarantee approval, throughput, or legal compliance. Pair preparation with the step-by-step TCR registration guide at https://mytcrplus.com/how-to-register-for-tcr/ and troubleshooting pages for unregistered traffic blocks when deliverability collapses.
FAQ
Is a screenshot of the website enough?
Helpful for Campaign review, insufficient alone for proving this user consented at this time—pair with per-user logs.
Do informational texts need the same trail?
Still document consent appropriate to the message type. Trails help even when PEWC is not required.
Does TCR store my consent audit trail?
No. TCR stores Brand/Campaign metadata submitted by CSPs—not your CRM consent ledger.
How long should we keep records?
Ask counsel; pick a documented policy and apply legal holds when needed.
Disclaimer
This article is for informational purposes only and is not legal advice. Recordkeeping expectations depend on litigation risk, contracts, and evolving FCC rules. Confirm designs with qualified counsel.