Skip to main content
Advisory firms using MRC typically require express consent (A2P/10DLC compliance) before an advisor can text a contact. MRC enforces this server-side on every send — your app never has to decide whether consent is required, only react when a send reports it. Every contact’s messaging number has one consent state on the advisor’s account: Two account-level settings (managed by the firm, not your app) shape the behavior you’ll observe:
  • Consent enabled — if the firm doesn’t require consent, sends never block and states are irrelevant to you.
  • Response required — some firms accept “notified” as consent: the consent request itself flips the contact to accepted without waiting for a reply. Others require the contact to reply (e.g. “ACCEPT”) before the state changes.
Don’t branch on these settings — you can’t read them, and you don’t need to. The send response tells you everything: blocked sends land in failures[], allowed sends in successes[].
The contact receives the firm’s configured consent message from the advisor’s number. consentState in the response tells you where things landed immediately — on “response required” firms it will be pending; on notify-only firms it can already be accepted, in which case skip polling and resend now. Behavior notes:
  • No cooldown — this is the same operation as the advisor’s in-app “request consent” button, and like the button it will happily send again if you call it again. Throttle re-requests on your side.
  • Already accepted → 400 — requesting consent for a number that has already opted in is rejected; check status first if you’re unsure.
  • Account not configured for consent → 409 conflict — the firm’s group hasn’t set up consent collection; this needs FMG configuration, not a retry.
  • Batch is supported: pass several phoneNumbers and read per-number successes[]/failures[].
Recommended cadence: every 30 seconds for the first 5 minutes (most contacts who opt in do so immediately), then every 5 minutes, stopping at 24 hours. lastChanged is epoch milliseconds of the last state change — useful for showing “requested 2 hours ago” in your UI. Lookup by memberId query parameter is also supported if you stored one.

3. Resend

When state is accepted, resend the original message — the same POST /messages call from step 0. Nothing about the send changes.

Opt-outs

Contacts can reply STOP at any time; MRC handles the reply, confirms the unsubscribe to the contact, and blocks subsequent sends to them (those sends land in failures[]). START re-subscribes. Your app doesn’t manage any of this — just keep reading the per-recipient outcomes.

What you never need

No contact CRUD, no member management, no consent-record administration — the firm’s advisors and FMG manage those in MyRepChat itself. Your entire consent surface is the three calls above, keyed by phone number.