Skip to Content
splashify CLIOpt-out / Opt-in keywords

Opt-out / Opt-in keywords

The opt command mirrors Settings → OPT Management — the keyword lists that automatically opt a contact out of (or back into) messaging, plus the optional auto-response message for each side.

Quick start

splashify opt # full settings (default) splashify opt out # show just opt_out splashify opt in # show just opt_in splashify opt out add STOP UNSUBSCRIBE QUIT # add keywords (case-insensitive dedupe) splashify opt out remove QUIT # remove keywords splashify opt out response "You have been opted out of all marketing messages." splashify opt out response-on # enable the auto-response splashify opt out response-off # disable the auto-response splashify opt in add START SUBSCRIBE splashify opt in remove START splashify opt in response "Welcome back — you'll start receiving updates again." splashify opt in response-on | response-off

Command reference

SubcommandWhat it does
(none — default) / status / showGET /app/opt-settings — both sides
out / inPrint only that section
out add <kw1> [<kw2> ...]Append keywords to opt_out.keywords; existing entries (case-insensitive) are skipped
out remove <kw1> [<kw2> ...]Drop matching keywords (case-insensitive)
out response "<text>"Set opt_out.response ("" to clear)
out response-on / response-offToggle opt_out.response_enabled
in ...Same actions, applied to opt_in

Why writes do read-modify-write

PUT /api/v1/app/opt-settings requires both opt_out and opt_in in the body — sending just one side would clear the other. The CLI always loads the current settings first, mutates the requested side, and submits the merged payload. Same pattern as splashify waba update and splashify attribute update.

Response shape

{ "success": true, "opt_out": { "keywords": ["STOP", "UNSUBSCRIBE"], "response": "You have been opted out.", "response_enabled": true }, "opt_in": { "keywords": ["START", "SUBSCRIBE"], "response": "Welcome back.", "response_enabled": false } }

Common patterns

# Just the opt-out keywords splashify opt | jq -r '.opt_out.keywords[]' # Quick check: is auto-response enabled on either side? splashify opt | jq '{out: .opt_out.response_enabled, in: .opt_in.response_enabled}' # Migrate keywords from one side to the other (out → in) splashify opt | jq -r '.opt_out.keywords[]' | \ xargs -r splashify opt in add
  • Contactscontact update <id> --opted-out true|false manually opts a contact in or out
  • Broadcasts — opted-out contacts are auto-excluded from sends