Skip to Content
splashify CLIAttributes

Attributes

The attribute / attributes commands mirror Settings → Attributes — custom columns added to each contact (Company, Job Title, Birthday, etc.). Full CRUD plus the page’s visibility toggle and up/down reorder actions.

Quick start

splashify attributes # list every attribute splashify attributes --search co # client-side substring filter on label splashify attribute <id> # show one (list-and-filter) splashify attribute create --label "Company" --type TEXT splashify attribute update <id> --label "Company Name" splashify attribute toggle-visibility <id> splashify attribute reorder <id> up | down splashify attribute delete <id>

Command reference

Write examples

# Create a text attribute splashify attribute create --label "Company" --type TEXT # Create a required dropdown with options splashify attribute create \ --label "Lead Source" \ --type SELECT \ --options "Web,Referral,Ads,Trade Show" \ --required true \ --help "Where this lead came from" # Multi-select splashify attribute create --label "Interests" --type MULTISELECT \ --options "Sales,Marketing,Support" # Update — only flags you pass are changed (read-modify-write under the hood) splashify attribute update <id> --label "Company Name" splashify attribute update <id> --required false --help "Optional from now on" splashify attribute update <id> --options "Web,Referral,Ads,Trade Show,Other"

Endpoint reference

SubcommandEndpoint
attributes [--search …]GET /api/v1/app/attributes (filter client-side)
attribute <id>List-and-filter (backend has no per-id GET)
attribute create …POST /api/v1/app/attributes
attribute update <id> … (alias edit)PUT /api/v1/app/attributes/:id
attribute delete <id> (aliases rm, remove)DELETE /api/v1/app/attributes/:id
attribute toggle-visibility <id> (alias toggle)POST /api/v1/app/attributes/:id/toggle-visibility
attribute reorder <id> up|down (alias move)POST /api/v1/app/attributes/reorder

Attribute types

TypeAccepts on the contactNotes
TEXTany stringDefault; labels with spaces become underscores
NUMBERnumeric
EMAILRFC-5322 email
PHONEE.164 phone
DATEISO 8601 date
SELECTone of --options--options "a,b,c" required
MULTISELECTsubset of --options--options "a,b,c" required
URLURL
CHECKBOXbool

Why update is read-modify-write

The backend’s PUT /api/v1/app/attributes/:id requires label + type to be present and writes every optional column (is_visible, is_required, options, default_value, help_text) on every call. The CLI loads the current row first, overlays only the flags you passed, then submits the full body so omitted fields stay intact. Same pattern as splashify waba update and splashify opt ….

Common patterns

# IDs of all required attributes splashify attributes | jq -r '.attributes[] | select(.is_required) | .id' # Look up an attribute id by label splashify attributes | \ jq -r '.attributes[] | select(.label == "Company") | .attribute_id' # Hide every SELECT attribute from the contacts table splashify attributes | \ jq -r '.attributes[] | select(.type == "SELECT" and .is_visible) | .attribute_id' | \ xargs -I{} splashify attribute toggle-visibility {} # Bulk delete attributes whose label starts with "test_" splashify attributes | \ jq -r '.attributes[] | select(.label | startswith("test_")) | .attribute_id' | \ xargs -I{} splashify attribute delete {}
  • Contacts — pass values via contact create --data '{…}'
  • Segments — filter by attribute values