Skip to content
Splashify Pro
Docs

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

bash
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

bash
# 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

Attribute types

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

bash
# 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