Carrier violations are the fastest way to torch a client relationship. On a recent full GoHighLevel sub-account build for a trading-education client — where compliance stakes are higher than usual — I standardized a checklist that has since become my default for every GHL delivery.
1. No SMS step exists until A2P is confirmed
The A2P number, opt-in language, privacy policy, and terms all live as custom values, staged before any workflow references them. Every SMS action sits behind the registration gate. If A2P approval is pending, the workflows literally cannot send — there is nothing to misfire.
2. Disclaimers are merge tags, never hardcoded
Risk disclaimers (email and SMS variants) exist once, as custom values, and get inserted into every message that references performance. One source of truth means one place to update when legal language changes — and zero chances of a stale disclaimer hiding in message node 47.
3. DND is a system, not a checkbox
- Phone validation runs at intake, before anything else.
- Hard red flags get dual DND — inbound AND outbound directions.
- Channel-specific DND disable, so an email opt-out never silently kills SMS consent tracking (or vice versa).
- Compliance exclusion tags: carrier-violation, sms-incapable, landline, do-not-contact — checked by every sending workflow.
4. Draft-first deployment
All 11 workflows in that build shipped in Draft and were published only after testing against a battle-tested reference account. The comparison surfaced 7 structural fixes — including missing Remove-from-Workflow steps and a 5-minutes-before reminder cadence. The boring diff against a known-good build is worth more than any amount of cleverness.
In client CRM work, the details are the deliverable.from the system this note is based onTrading Mentorship CRM — full case study →