CRM CLI Reference

Complete command reference for the Transactional CRM CLI — for developers, AI agents, ops scripts, and support teams

CRM CLI Reference

The Transactional CLI provides full access to CRM features from the terminal. Commands are designed for four audiences:

  • Developers — debugging, testing CQL, inspecting sync pipelines
  • AI agents — automated contact lookup, activity logging, property updates via MCP/bot-engine
  • Ops/admin — bulk operations, data cleanup, integration health checks
  • Support agents — quick contact lookup, view history, add notes

All commands support --json for machine-parseable output and --org <slug> to specify the organization.


Contact Management

Find & Identify

# Typeahead search by name, email, or phone
transactional crm contact search "harshul"
 
# Get contact by numeric ID, external ID, or email
transactional crm contact get 1
transactional crm contact get ctc_E3AJ2rwfk7djUZlQI1F4f
transactional crm contact get harshul@gmail.com
 
# Smart multi-field lookup — tries email, then phone, then name
transactional crm contact find --email harshul@gmail.com
transactional crm contact find --phone "+919876543210"
 
# Filtered list with pagination
transactional crm contact list --status ACTIVE --lifecycle CUSTOMER --limit 50

Create & Update

# Create a new contact
transactional crm contact create \
  --email alice@example.com \
  --name "Alice Johnson" \
  --phone "+1234567890" \
  --lifecycle LEAD
 
# Update fields
transactional crm contact update 1 --name "Alice Smith" --lifecycle CUSTOMER
 
# Set a single custom property
transactional crm contact set-property 1 mrr "4999"

Relationships

# Merge two contacts (winner absorbs loser)
transactional crm contact merge 1 2
 
# Tag and untag (by tag name, not ID)
transactional crm contact tag 1 "vip"
transactional crm contact untag 1 "vip"
 
# Company associations
transactional crm contact associate-company 1 5
transactional crm contact dissociate-company 1 5

Lifecycle

# Archive (soft-hide), restore, or hard-delete
transactional crm contact archive 1
transactional crm contact restore 1
transactional crm contact delete 1

Intelligence

# Rich activity timeline (formatted, paginated)
transactional crm contact timeline 1 --limit 20 --type CALL
 
# One-line summary: key facts at a glance
# Output: Name, email, company, tags, lifecycle, last activity, sync status
transactional crm contact summary 1
 
# Integration sync status: external IDs, last synced, errors
transactional crm contact sync-status 1

Company Management

# Search and get
transactional crm company search "glood"
transactional crm company get 1
 
# Create and update
transactional crm company create --name "Acme Corp" --domain acme.com --industry SaaS
transactional crm company update 1 --size "50-200" --plan Enterprise
 
# List with filters
transactional crm company list --industry SaaS --limit 20
 
# Show contacts linked to a company
transactional crm company contacts 1
 
# Delete
transactional crm company delete 1

Activity & Events

# List activity timeline for a contact
transactional crm activity list 1
transactional crm activity list 1 --type CALL --limit 10
 
# Log manual activities
transactional crm activity log 1 --type CALL --content "Discussed pricing"
transactional crm activity log 1 --type NOTE --content "Interested in Enterprise plan"
transactional crm activity log 1 --type MEETING --content "Demo of CRM features"
transactional crm activity log 1 --type EMAIL --content "Sent proposal"
transactional crm activity log 1 --type TASK --content "Follow up next Tuesday"
 
# Activity summary: count by type
transactional crm activity summary 1
# Output: 5 calls, 3 notes, 2 meetings, 4 emails, 1 task

Activity types: NOTE, CALL, MEETING, EMAIL, TASK


Tags

# List all tags
transactional crm tag list
 
# Create a tag
transactional crm tag create --key vip --name "VIP Customer" --color "#FFD700"
 
# Rename a tag
transactional crm tag rename 1 --name "Enterprise VIP"
 
# Delete a tag
transactional crm tag delete 1
 
# List contacts with a specific tag
transactional crm tag contacts "vip"

Lists / Segments

# List all lists
transactional crm list list
 
# Create a static list
transactional crm list create --name "Enterprise" --entity CONTACT
 
# Create a dynamic list with a CQL filter
transactional crm list create --name "Active Customers" --entity CONTACT \
  --dynamic --filter "lifecycle = CUSTOMER AND status = ACTIVE"
 
# Re-evaluate a dynamic list
transactional crm list evaluate 1
 
# Manage members (static lists only)
transactional crm list members 1
transactional crm list add-members 1 --ids 1,2,3
transactional crm list remove-members 1 --ids 4,5

Properties / Schema

# List property definitions
transactional crm property list --entity CONTACT
 
# Create a custom property
transactional crm property create \
  --entity CONTACT \
  --key mrr \
  --label "Monthly Revenue" \
  --type NUMBER
 
# Archive a property (values preserved, field hidden)
transactional crm property archive 1

Property types: TEXT, NUMBER, BOOLEAN, DATE, DATETIME, EMAIL, PHONE, URL, SELECT, MULTI_SELECT, CURRENCY, TEXTAREA


CQL — Query Language

# Run a query
transactional crm query -w "email contains harshul"
transactional crm query -w "status = ACTIVE AND lifecycleStage = CUSTOMER" --sort createdAt:desc
 
# Validate without executing
transactional crm validate "email contains harshul AND custom.mrr > 1000"
 
# Parse to AST (debug)
transactional crm parse "email contains harshul"
 
# List queryable fields
transactional crm fields contact
transactional crm fields company
 
# Show operators
transactional crm operators
 
# Show examples
transactional crm examples

See the CQL Reference for the full specification.


Integration / Sync Status

# Per-contact sync status: which integrations synced, external IDs, errors
transactional crm sync status 1
 
# Recent sync action logs for an integration
transactional crm sync logs --integration 2 --limit 20
 
# Manually trigger a sync for a contact (re-publishes to ORG_EVENTS)
transactional crm sync trigger 1

Bulk Operations

# Import contacts from CSV
transactional crm bulk import --file contacts.csv
 
# Export contacts matching a CQL query to CSV
transactional crm bulk export --query "lifecycle = CUSTOMER" --format csv --output customers.csv
 
# Bulk update a property for all contacts matching a query
transactional crm bulk update --query "status = ACTIVE" --set "lifecycle=LEAD"

Global Options

FlagDescription
--org <slug>Organization slug (uses default if not set)
--jsonOutput raw JSON (machine-parseable)
-o, --output <file>Write output to a file
--limit <n>Max results (default: 20)
--page <n>Page number for paginated results

Environment Variables

VariableDescription
TRANSACTIONAL_API_URLAPI server URL (default: https://api.usetransactional.com)
TRANSACTIONAL_WEB_URLWeb dashboard URL
TRANSACTIONAL_API_KEYAPI key for server-to-server auth

For AI Agents

When using the CLI from an AI agent (MCP server, bot-engine tool), always use --json for structured output:

# Agent: look up a contact
transactional crm contact get harshul@gmail.com --json
 
# Agent: log an activity
transactional crm activity log 1 --type NOTE --content "Customer asked about pricing" --json
 
# Agent: get sync status
transactional crm sync status 1 --json
 
# Agent: search with CQL
transactional crm query -w "custom.mrr > 1000 AND lifecycle = CUSTOMER" --json

The --json flag ensures all output is valid JSON that agents can parse without regex.