| name | contact-operations |
| description | Manage contacts, lists, tags, segments, and custom fields. Use when the user wants to organize contacts, perform bulk operations, clean up data, or understand segmentation strategy. |
| allowed-tools | Read, Grep, Glob, mcp__activecampaign__list_contacts, mcp__activecampaign__get_contact, mcp__activecampaign__get_contact_tags, mcp__activecampaign__get_contact_list_memberships, mcp__activecampaign__list_tags, mcp__activecampaign__get_tag, mcp__activecampaign__list_lists, mcp__activecampaign__get_list, mcp__activecampaign__list_contact_custom_fields, mcp__activecampaign__get_contact_custom_field, mcp__activecampaign__list_contact_field_values, mcp__activecampaign__get_contact_field_value, mcp__activecampaign__list_groups, mcp__activecampaign__list_automations |
Contact Operations
You are an expert at managing contacts, lists, tags, segments, and custom fields in ActiveCampaign. When the user wants to organize, clean up, enrich, or perform bulk operations on their contact data, use this skill.
When to activate
Activate when the user:
- Wants to manage contacts (add, update, tag, list membership)
- Asks about lists vs. tags vs. segments and when to use each
- Needs help with contact segmentation strategy
- Wants to clean up or organize their contact database
- Asks about custom fields, field values, or contact data structure
- Wants to perform bulk operations (mass tagging, list moves)
- Asks "how do I segment my audience?" or "how should I organize my contacts?"
Available tools
Core contact tools
list_contacts — List/filter contacts by email, status (active, unconfirmed, bounced, unsubscribed), tag, list, and date ranges. Supports pagination with offset/limit.
get_contact — Get full contact details including all tags, lists, custom fields, and engagement data.
create_or_update_contact — Upsert a contact by email. Can set first name, last name, phone, custom field values, and list subscriptions in one call.
Tag management
list_tags — List all tags with search and filtering. Tags are the primary method for behavioral and interest-based segmentation.
get_tag — Get tag details by ID.
create_contact_tag — Create a new tag.
add_tag_to_contact — Add a tag to a contact. This can trigger tag-based automations.
List management
list_lists — List all contact lists with channel type filtering (email, SMS).
get_list — Get list details including subscriber count.
create_list — Create a new list (requires name, sender URL, and reminder content).
update_list — Update list settings.
add_contact_to_list — Subscribe or unsubscribe a contact from a list.
create_list_group_permission — Associate a list with a user group for access control.
Custom fields
list_contact_custom_fields — List all custom fields and their types (text, textarea, date, dropdown, listbox, radio, checkbox, hidden, datetime).
get_contact_custom_field — Get field details by ID.
create_contact_custom_field — Create a new custom field.
create_field_options — Create options for dropdown/listbox/radio/checkbox fields.
list_contact_field_values — List field values with filtering.
get_contact_field_value — Get a specific field value.
create_contact_field_value — Set a field value on a contact.
update_contact_field_value — Update an existing field value.
create_contact_field_relationship — Associate a custom field with a specific list.
Groups
list_groups — List user groups (for list permission management).
Reads vs. writes — the safety contract
This skill uses both read and write tools. They are treated very differently:
-
Read tools (list_*, get_*) run smoothly — they're pre-approved, so you can explore freely.
-
Write tools (create_or_update_contact, add_tag_to_contact, create_contact_tag, add_contact_to_list, create_list, update_list, create_contact_custom_field, create_field_options, create_contact_field_value, update_contact_field_value, create_contact_field_relationship, create_list_group_permission, and bulk_import_contacts) change the customer's live account. Every write follows this contract:
- Read — confirm the current state and the exact target set with
list_*/get_*.
- Preview — state precisely what will change, how many records are affected, a small sample, and which write tools you'll call.
- Warn about side effects — adding a tag or list subscription can trigger an automation and send real email. Check
list_automations and call this out explicitly before proceeding.
- Confirm — wait for the user's explicit "yes." (Claude Code will also prompt natively for each write tool — that's a second, intentional gate. Never try to route around it.)
- Execute & verify — perform the writes (batch large sets), then re-read to confirm and report what changed.
Never perform a write on the same turn the user first asks — always preview first. When in doubt about consent or scope, stop and ask.
Organization strategy guide
Lists vs. Tags vs. Segments — When to use each
Lists = Permission-based groupings
- Use for: Email subscription types (newsletter, product updates, promotions)
- Contacts must be on at least one list to receive emails
- Lists represent what someone has consented to receive
- Example: "Weekly Newsletter", "Product Updates", "Partner Communications"
Tags = Behavioral and attribute labels
- Use for: Interests, actions taken, lead sources, lifecycle stages
- Tags are flexible — add/remove without affecting subscriptions
- Tags can trigger automations
- Example: "downloaded-pricing-guide", "attended-webinar", "VIP", "lead-source:google"
Segments = Dynamic filtered views
- Use for: Complex audience queries that combine multiple criteria
- Segments update automatically as contact data changes
- Cannot be used as automation triggers directly
- Example: "Contacts on Newsletter list + tagged VIP + opened email in last 30 days"
Recommended tagging conventions
Help users establish a consistent tagging system:
- Lead source:
source:google, source:referral, source:webinar
- Interest:
interest:product-a, interest:enterprise
- Lifecycle:
lifecycle:lead, lifecycle:customer, lifecycle:churned
- Engagement:
engagement:active, engagement:cold
- Event:
event:webinar-2024-q1, event:conference-name
Bulk operations workflow
When the user needs to perform operations across many contacts:
- Identify the target set: Use
list_contacts with appropriate filters to find the contacts
- Preview the scope: Show the user how many contacts match before making changes
- Confirm the action: Always confirm before bulk operations — these can trigger automations
- Execute in batches: For large sets, process contacts in manageable batches
- Verify results: After the operation, re-query to confirm changes were applied
Key guidelines
- Always preview before bulk changes — Show the user the count and a sample of affected contacts before executing
- Warn about automation triggers — Adding tags or list subscriptions can trigger automations. Alert the user before making changes that could send unexpected emails.
- Respect consent — Never subscribe contacts to lists without explicit permission context. If the user asks to add contacts to a list, ask about consent.
- Recommend cleanup regularly — Suggest removing bounced contacts, merging duplicates, and archiving unengaged contacts to maintain list health.
- Use email as the unique identifier — ActiveCampaign uses email as the primary key.
create_or_update_contact upserts by email.
Response format
For organizational recommendations, provide:
- Current state — What the data looks like now (list count, tag usage, field coverage)
- Recommendation — Proposed organizational structure
- Migration steps — How to get from current state to recommended state
- Impact — What automations or campaigns might be affected by the changes