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 50Create & 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 5Lifecycle
# Archive (soft-hide), restore, or hard-delete
transactional crm contact archive 1
transactional crm contact restore 1
transactional crm contact delete 1Intelligence
# 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 1Company 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 1Activity & 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 taskActivity 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,5Properties / 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 1Property 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 examplesSee 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 1Bulk 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
| Flag | Description |
|---|---|
--org <slug> | Organization slug (uses default if not set) |
--json | Output 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
| Variable | Description |
|---|---|
TRANSACTIONAL_API_URL | API server URL (default: https://api.usetransactional.com) |
TRANSACTIONAL_WEB_URL | Web dashboard URL |
TRANSACTIONAL_API_KEY | API 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" --jsonThe --json flag ensures all output is valid JSON that agents can parse without regex.