
Activecampaign
- 1 installs
- Updated April 30, 2026
- kesslerio/activecampaign-openclaw-skill
Integrates ActiveCampaign CRM to sync leads and deals, tag and segment prospects, and trigger email automation sequences for a sales pipeline.
About
A skill that integrates ActiveCampaign CRM for lead management, deal-pipeline tracking, and email automation. A developer uses it to sync demo leads, segment prospects with tags, and trigger follow-up email sequences.
- Syncs contacts, deals, tags, and custom fields to ActiveCampaign
- Triggers email automation sequences based on lead actions
Activecampaign by the numbers
- 1 all-time installs (skills.sh)
- Ranked #748 of 853 Sales & Marketing skills by installs in the Skillselion catalog
- Data as of Jul 25, 2026 (Skillselion catalog sync)
npx skills add https://github.com/kesslerio/activecampaign-openclaw-skill --skill activecampaignAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | April 30, 2026 |
| Repository | kesslerio/activecampaign-openclaw-skill ↗ |
What it does
Integrates ActiveCampaign CRM to sync leads and deals, tag and segment prospects, and trigger email automation sequences for a sales pipeline.
Files
ActiveCampaign Skill 📧
ActiveCampaign integration for CRM automation and sales pipeline management.
Purpose
Manage leads, deals, and email automations for sales:
- Contacts: Sync demo attendees, leads, and prospects
- Deals: Track sales pipeline stages
- Tags: Segment leads (demo-requested, nurture, close-ready)
- Automations: Trigger email sequences based on actions
- Custom Fields: Map order, shipping, billing, and subscription data
Setup
1. Credentials
# Create config directory
mkdir -p ~/.config/activecampaign
# Add credentials
echo "https://youraccount.api-us1.com" > ~/.config/activecampaign/url
echo "your-api-key" > ~/.config/activecampaign/api_key
# Or use environment variables
export ACTIVECAMPAIGN_URL="https://youraccount.api-us1.com"
export ACTIVECAMPAIGN_API_KEY="your-api-key"Get API credentials from ActiveCampaign:
- URL: Settings → Developer → API Access
- API Key: Settings → Developer → API Access
2. Custom Fields Configuration (Optional)
The skill supports custom field mappings for order, shipping, billing, and subscription data.
# Initialize config from sample
activecampaign config init
# Edit with your field IDs
nano ~/.config/activecampaign/fields.jsonThe config file is gitignored and should not be committed.
Usage
# Contacts
activecampaign contacts list # List all contacts
activecampaign contacts create "email@test.com" "First" "Last"
activecampaign contacts sync "email@test.com" "First" "Last"
activecampaign contacts get <id>
activecampaign contacts search "clinic"
activecampaign contacts add-tag <id> <tag_id>
activecampaign contacts remove-tag <id> <tag_id>
# Deals
activecampaign deals list
activecampaign deals create "Clinic Name" <stage_id> <value>
activecampaign deals update <id> stage=<stage_id> value=<value>
activecampaign deals get <id>
# Tags
activecampaign tags list
activecampaign tags create "Demo Requested"
# Automations
activecampaign automations list
activecampaign automations add-contact <contact_id> <automation_id>
# Custom Fields
activecampaign fields list # List configured fields
activecampaign fields get order_fields.order_id
activecampaign fields set-field <contact_id> <field_id> <value>
# Lists
activecampaign lists list
activecampaign lists add-contact <list_id> <contact_id>
# Configuration
activecampaign config init # Create fields.json from sample
activecampaign config path # Show config file pathCustom Fields Configuration
The skill includes a comprehensive field configuration system for:
| Category | Fields |
|---|---|
| Order | Order ID, Number, Date, Total, Tax, Status, Subtotal, Discount, Currency, Payment details |
| Shipping | Name, Address 1/2, City, State, Postal Code, Country, Method, Cost |
| Billing | Address 1/2, City, State, Postal Code, Country |
| Subscription | ID, Status, Plan, Amount, Currency, Interval, Start, Trial End |
| Additional | Company, Product info, Lead Campaign, Notes, Birthday, etc. |
Setting Field Values
# Get field ID from config
activecampaign fields get order_fields.order_id
# Output: 7
# Set field value on contact
activecampaign fields set-field <contact_id> 7 "ORD-12345"Rate Limits
- 5 requests per second max
- The wrapper handles rate limiting automatically
Related Skills
shapescale-crm- Attio CRM integration (source of truth)shapescale-sales- Sales workflows and qualificationcampaign-orchestrator- Multi-channel follow-up campaigns
# Dependencies
node_modules/
# Config files (contain secrets and field IDs)
.config/activecampaign/
fields.json
# Environment files
.env
.env.local
# OS files
.DS_Store
Thumbs.db
# IDE
.idea/
.vscode/
*.swp
*.swo
# Logs
*.log
npm-debug.log*
# Temporary
tmp/
temp/
{
"name": "ActiveCampaign Field Mappings",
"description": "Custom field IDs for ActiveCampaign integration. COPY THIS FILE to ~/.config/activecampaign/fields.json and update with your field IDs.",
"version": "1.0.0",
"order_fields": {
"order_id": 7,
"order_number": 30,
"order_date": 8,
"order_total": 18,
"order_tax": 19,
"order_status": 20,
"order_subtotal": 39,
"order_discount": 38,
"order_currency": 49,
"payment_method": 35,
"payment_amount": 34,
"payment_card": 41,
"payment_last4": 42
},
"shipping_fields": {
"shipping_name": 50,
"shipping_address_line_1": 31,
"shipping_address_line_2": 32,
"shipping_city": 14,
"shipping_state": 15,
"shipping_postal_code": 33,
"shipping_country": 16,
"shipping_method": 12,
"shipping_cost": 11
},
"billing_fields": {
"billing_address_line_1": 43,
"billing_address_line_2": 44,
"billing_city": 45,
"billing_state": 46,
"billing_postal_code": 47,
"billing_country": 48
},
"subscription_fields": {
"subscription_id": 51,
"subscription_status": 52,
"subscription_plan": 53,
"subscription_amount": 54,
"subscription_currency": 55,
"subscription_interval": 56,
"subscription_start": 57,
"subscription_trial_end": 58
},
"additional_fields": {
"company": 29,
"order_product_name": 9,
"order_product_id": 36,
"order_product_price": 37,
"order_quantity": 13,
"preorder_batch": 17,
"lead_campaign": 10,
"last_engaged_date": 22,
"notes": 21,
"birthday": 26,
"challenge_nickname": 28,
"source": 3,
"title": 65
},
"system_fields": {
"admin": 24,
"coach": 23,
"created_at": 27,
"gender": 25
},
"perstag_mappings": {
"order": {
"ORDER_ID": "order_fields.order_id",
"ORDERNUMBER": "order_fields.order_number",
"ORDER_DATE": "order_fields.order_date",
"ORDER_TOTAL": "order_fields.order_total",
"ORDER_TAX": "order_fields.order_tax",
"ORDER_STATUS": "order_fields.order_status",
"ORDER_SUBTOTAL": "order_fields.order_subtotal",
"ORDER_DISCOUNT": "order_fields.order_discount",
"ORDER_CURRENCY": "order_fields.order_currency",
"PAYMENT_METHOD": "order_fields.payment_method",
"PAYMENT_AMOUNT": "order_fields.payment_amount",
"ORDER_PAYMENT_CARD": "order_fields.payment_card",
"ORDER_PAYMENT_LAST4": "order_fields.payment_last4"
},
"shipping": {
"SHIPPING_NAME": "shipping_fields.shipping_name",
"SHIPPING_ADDRESS_LINE_1": "shipping_fields.shipping_address_line_1",
"SHIPPING_ADDRESS_LINE_2": "shipping_fields.shipping_address_line_2",
"SHIPPING_CITY": "shipping_fields.shipping_city",
"SHIPPING_STATE": "shipping_fields.shipping_state",
"SHIPPING_POSTAL_CODE": "shipping_fields.shipping_postal_code",
"SHIPPING_COUNTRY": "shipping_fields.shipping_country",
"SHIPPING_METHOD": "shipping_fields.shipping_method",
"SHIPPING_COST": "shipping_fields.shipping_cost"
},
"billing": {
"BILLING_ADDRESS_LINE_1": "billing_fields.billing_address_line_1",
"BILLING_ADDRESS_LINE_2": "billing_fields.billing_address_line_2",
"BILLING_CITY": "billing_fields.billing_city",
"BILLING_STATE": "billing_fields.billing_state",
"BILLING_POSTAL_CODE": "billing_fields.billing_postal_code",
"BILLING_COUNTRY": "billing_fields.billing_country"
},
"subscription": {
"SUBSCRIPTION_ID": "subscription_fields.subscription_id",
"SUBSCRIPTION_STATUS": "subscription_fields.subscription_status",
"SUBSCRIPTION_PLAN": "subscription_fields.subscription_plan",
"SUBSCRIPTION_AMOUNT": "subscription_fields.subscription_amount",
"SUBSCRIPTION_CURRENCY": "subscription_fields.subscription_currency",
"SUBSCRIPTION_INTERVAL": "subscription_fields.subscription_interval",
"SUBSCRIPTION_START": "subscription_fields.subscription_start",
"SUBSCRIPTION_TRIAL_END": "subscription_fields.subscription_trial_end"
},
"additional": {
"COMPANY": "additional_fields.company",
"ORDER_PRODUCT_NAME": "additional_fields.order_product_name",
"ORDER_PRODUCT_ID": "additional_fields.order_product_id",
"ORDER_PRODUCT_PRICE": "additional_fields.order_product_price",
"ORDER_QUANTITY": "additional_fields.order_quantity",
"PREORDER_BATCH": "additional_fields.preorder_batch",
"LEAD_CAMPAIGN": "additional_fields.lead_campaign",
"LAST_ENGAGED_DATE": "additional_fields.last_engaged_date",
"NOTES": "additional_fields.notes",
"BIRTHDAY": "additional_fields.birthday",
"CHALLENGE_NICKNAME": "additional_fields.challenge_nickname",
"SOURCE": "additional_fields.source",
"TITLE": "additional_fields.title"
},
"system": {
"ADMIN": "system_fields.admin",
"COACH": "system_fields.coach",
"CREATEDAT": "system_fields.created_at",
"GENDER": "system_fields.gender"
}
},
"lists": {
"main_list_id": null,
"newsletter_list_id": null,
"customers_list_id": null,
"leads_list_id": null
},
"tags": {
"demo_requested": null,
"demo_completed": null,
"customer": null,
"lead": null,
"nurture": null,
"close_ready": null,
"churned": null,
"vip": null
},
"pipelines": {
"sales_pipeline_id": null
},
"automations": {
"welcome_sequence_id": null,
"demo_followup_id": null,
"nurture_sequence_id": null,
"winback_sequence_id": null
}
}
ActiveCampaign CLI - Troubleshooting & Notes
Account Limitations
ActiveCampaign trial accounts have limited API access:
| Operation | Trial Account | Paid Account |
|---|---|---|
| Contact Read | ✅ Working | ✅ Working |
| Contact Create/Update | ✅ Working | ✅ Working |
| Deal Create | ❌ Blocked | ✅ Working |
| Deal List | ✅ Working | ✅ Working |
| Pipeline List | ❌ Blocked | ✅ Working |
| Tag Add/Create | ❌ Blocked | ✅ Working |
| Lists List | ❌ Blocked | ✅ Working |
Workaround: Use deal_stage_list to infer pipeline structure from stage IDs (stages include pipeline field).
Known API Issues
contact_list Returns Empty
contact_list with api_version=3 does not work for listing all contacts.
Fix: The CLI now uses contact_paginator instead.
JSON vs Form-Data
Some endpoints require form-data format, not JSON:
contact_add- Works with form-data onlycontact_sync- Works with form-data onlydeal_add- Requires form-data with all fields
contact_tag_add Returns "Contact does not exist"
This is an ActiveCampaign API quirk. The contact exists and can be read, but tagging via API may fail on trial accounts.
Pipeline & Deal Group List Blocked
pipeline_list and deal_group_list return "You are not authorized" on trial accounts. Use deal_stage_list to see stages with their pipeline IDs.
Verified Working Endpoints
Contacts
contact_paginator- List contacts with paginationcontact_view- Get single contact by IDcontact_add- Create new contact (form-data)contact_sync- Create or update contact (form-data)
Deals
deal_list- List dealsdeal_view- Get single deal
Stages & Pipelines
deal_stage_list- List all stages (includes pipeline ID)
Tags
tags_list- List all tags
CLI Command Format
# Contacts
activecampaign contacts list # List all contacts
activecampaign contacts sync "email@test.com" "First" "Last"
activecampaign contacts get <id>
# Deals
activecampaign deals list # List deals
activecampaign deals get <id> # Get deal details
# Stages
activecampaign stages list # List pipeline stages