agentleFS
ActiveCampaignActiveCampaign/activecampaign-plugin/skills/contact-operations/SKILL.md

contact-operations

Skill4 starsChanged 3 months agoMITView on GitHub

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.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never perform a write on the same turn the user first asks — always preview first.

    line 72
  2. Distinctive:

    Use for: Email subscription types (newsletter, product updates, promotions)

    line 79
  3. Distinctive:

    Use for: Interests, actions taken, lead sources, lifecycle stages

    line 85
  4. Distinctive:

    Use for: Complex audience queries that combine multiple criteria

    line 91
  5. Distinctive:

    When the user needs to perform operations across many contacts:

    line 107
  6. Very specific:

    Identify the target set: Use list_contacts with appropriate filters to find the contacts

    line 109
  7. Distinctive:

    Confirm the action: Always confirm before bulk operations — these can trigger automations

    line 111
  8. Distinctive:

    Verify results: After the operation, re-query to confirm changes were applied

    line 113

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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:

    1. Read — confirm the current state and the exact target set with list_*/get_*.
    2. Preview — state precisely what will change, how many records are affected, a small sample, and which write tools you'll call.
    3. 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.
    4. 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.)
    5. 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:

  1. Identify the target set: Use list_contacts with appropriate filters to find the contacts
  2. Preview the scope: Show the user how many contacts match before making changes
  3. Confirm the action: Always confirm before bulk operations — these can trigger automations
  4. Execute in batches: For large sets, process contacts in manageable batches
  5. 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:

  1. Current state — What the data looks like now (list count, tag usage, field coverage)
  2. Recommendation — Proposed organizational structure
  3. Migration steps — How to get from current state to recommended state
  4. Impact — What automations or campaigns might be affected by the changes

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.