setCommsProviderMode writes a complete plan of binding priorities and statuses for both channels. 'inhouse' puts Twilio first for texts and Mailgun first for email with Resend behind it and GoHighLevel parked. 'ghl' promotes GoHighLevel on both channels with in-house as fallback. The organizations row records the mode and an audit_log entry records who flipped it.
Also called: change my texting provider · switch to my own Twilio · use GHL for email · comms provider mode
- 1Operator picks a mode on the sub-account's Integrations panel.
- 2Existing binding rows are read so their per-provider config survives the flip.
- 3A plan of (capability, provider, priority, status) rows is upserted.
- 4A Twilio row still in pending_setup keeps that status but sits first, so it wins the moment A2P clears.
- 5The registry cache is invalidated and an audit row is written.
Keith 08-18, quoted in the module header: 'inhouse — Twilio for texts, Mailgun for email (Resend as fallback). The default for EVERY new account. ghl — GoHighLevel for texts and email, in-house as fallback. For a builder who insists on GHL; flip back any time.' The design note that matters is that 'nothing else in the app knows or cares which mode is on; the registry just reads the chain' — so the switch cannot leave half the app pointing at the old provider.
- Provider choice used to be operator-only, done by hand in SQL.
- A switch that deleted the old chain left nothing to fall back to and no way to undo.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →