Skip to main content

ActiveCampaign

Read and write an ActiveCampaign account - contacts and their custom fields, list subscriptions, tags, CRM deals and pipelines, campaign reporting, and automation entry.

Connect an ActiveCampaign account with its API URL and key to work contacts and the CRM end to end: search contacts by address or free text, create or update them by email in a single converging call, set their custom field values (addressed by field id - the titles are not the keys), subscribe and unsubscribe them from lists, tag and untag them, and read which lists and tags a contact carries. On the CRM side: list and filter deals, create and update them (values are integer CENTS), and read the pipelines and stages they live in. Campaign and automation reporting is included; adding a contact to an automation is offered and warns that the automation starts running - and possibly sending - at once. Building or sending ActiveCampaign campaigns is deliberately not offered. Deleting a contact is permanent and says so.

Connect

Credential fieldRequiredWhere it comes from
API key (API_TOKEN)YesFrom Settings → Developer in ActiveCampaign, on the same screen as the API URL. It carries the full permissions of the user it belongs to, so choose that user deliberately.
SettingRequiredWhat it is
API URL (API_URL)YesThe account's own API URL from Settings → Developer, e.g. https://youraccount.api-us1.com. Every account has a different host and the region part cannot be derived from the account name, so it is entered rather than guessed.

Tools

ToolAccessWhat it does
Whoami (yekar.activecampaign.whoami)ReadThe ActiveCampaign user this connection's API key belongs to, and the account host it is pointed at. Call this first to confirm the key and the API URL name the SAME account - a key from one account against another's URL is the most common setup mistake, and it fails as a 403 that says nothing about either.
List contacts (yekar.activecampaign.list-contacts)ReadSearch or page through the account's contacts, optionally narrowed to a list, tag or segment. email matches exactly; search matches partially. total is ActiveCampaign's count for the whole filtered set - the items are one page of it.
Get contact (yekar.activecampaign.get-contact)ReadOne contact with its standard fields and custom field values. Custom values are keyed by the FIELD's id - call List custom fields to learn what each id means.
Create or update contact (yekar.activecampaign.sync-contact)WriteCreate a contact, or update it if the email address already exists (ActiveCampaign's contact sync). Fields you omit keep their stored values - send an empty string to clear one. Repeating the identical call is safe: it converges on the same contact rather than creating a second.
Update contact (yekar.activecampaign.update-contact)WriteUpdate an existing contact by id. Only the fields you send change; the rest are left alone, and an empty string clears a value. Use Create or update contact when you have an email address rather than an id.
Delete contact (yekar.activecampaign.delete-contact)WritePermanently delete a contact and everything attached to it. There is no recycle bin - this cannot be undone. If the goal is only to stop mailing them, use Set list subscription with unsubscribed, which keeps the record and the audit trail.
List lists (yekar.activecampaign.list-lists)ReadThe mailing lists on the account with ActiveCampaign's own subscriber counts. Every subscription change needs a list id, so this is usually the first read before touching memberships.
Set list subscription (yekar.activecampaign.set-list-subscription)WriteSubscribe a contact to a list or unsubscribe them from it. Subscribing sends nothing by itself - it makes the contact eligible for that list's campaigns and automations. Unsubscribing keeps the contact and their history.
List a contact's list memberships (yekar.activecampaign.list-contact-lists)ReadWhich lists a contact is on and with what status - subscribed, unsubscribed, unconfirmed or bounced - plus the unsubscribe reason where there is one. The numeric status ActiveCampaign sends is resolved to its word here.
List tags (yekar.activecampaign.list-tags)ReadThe tags defined on the account, with their ids. Tagging a contact takes the tag's ID, never its name, so this read is a prerequisite for Add contact tag. Watch tagType: a template tag applies to campaign templates and cannot be put on a contact.
List a contact's tags (yekar.activecampaign.list-contact-tags)ReadThe tags on one contact. Each row carries TWO ids: tagId is the tag itself, and contactTagId is the link between this contact and that tag - the latter is what Remove contact tag deletes.
Add contact tag (yekar.activecampaign.add-contact-tag)WritePut an existing tag on a contact. The tag must already exist - this takes a tag id from List tags, and creating tags is deliberately not part of it, because a typo would otherwise silently mint a near-duplicate tag nobody notices.
Remove contact tag (yekar.activecampaign.remove-contact-tag)WriteTake a tag off a contact by deleting the contact-tag link. Takes the LINK's id (from List a contact's tags), not the tag's id. The tag stays on the account and on every other contact.
List custom fields (yekar.activecampaign.list-custom-fields)ReadThe custom contact fields this account defines - id, title, type, whether they are required, and the personalization tag used in campaign content. Contact writes address values by field ID, so read this before setting any custom value.
List deals (yekar.activecampaign.list-deals)ReadDeals in the account's CRM, filterable by pipeline, stage or status. Every deal carries its value BOTH as the integer cents ActiveCampaign stores and as the major-unit amount - do not multiply either one again.
Get deal (yekar.activecampaign.get-deal)ReadOne deal with its pipeline, stage, owner, contact and value. The value comes back as both integer cents (as stored) and the major-unit amount.
Create deal (yekar.activecampaign.create-deal)WriteCreate a deal in a pipeline. The value is in CENTS - sending 1000 to mean a thousand creates a ten-unit deal, and nothing downstream flags it. Pipeline, stage and owner ids all have to exist; read them with List pipelines, List deal stages and Whoami first.
Update deal (yekar.activecampaign.update-deal)WriteUpdate a deal - move its stage, change its value (in CENTS), reassign the owner, or mark it won or lost. Only the fields you send change.
List pipelines (yekar.activecampaign.list-pipelines)ReadThe deal pipelines on the account, with each one's default currency. ActiveCampaign calls a pipeline a 'group' on the wire - deal writes take this id as pipelineId.
List deal stages (yekar.activecampaign.list-deal-stages)ReadThe stages defined across the account's pipelines, in order. A stage belongs to exactly one pipeline, so moving a deal to a stage from a different pipeline is refused by ActiveCampaign - filter by pipeline before choosing one.
List campaigns (yekar.activecampaign.list-campaigns)ReadCampaigns on the account with their delivery and engagement counts - sent, opens (total and unique), clicks, unsubscribes and bounces. Read-only: this integration does not build or send ActiveCampaign campaigns, because doing so spans four resources with no atomic commit and a partial failure would leave a broken campaign behind.
List automations (yekar.activecampaign.list-automations)ReadThe automations on the account with ActiveCampaign's own counts of contacts entered and exited. Adding a contact to one of these is a separate, explicit tool - listing never triggers anything.
Add contact to automation (yekar.activecampaign.add-contact-to-automation)WriteStart an automation for a contact. This is not a passive tag: the automation begins running immediately and may send email as its first step. Removing them again is not offered here, so check what the automation does before calling this.

Notes

  • In ActiveCampaign, sign in as the user whose permissions Yekar.AI should have - the API key inherits that user's access exactly, and ActiveCampaign keys have no scopes to narrow afterwards.
  • Go to Settings → Developer. Copy BOTH values shown there: the API URL (e.g. https://youraccount.api-us1.com) and the API Key.
  • Put the API URL in this connection's API URL field and the key in the credential. They must come from the same account - a mismatch fails as a 403 that mentions neither.
  • Call Whoami to confirm which ActiveCampaign user and host the pair resolves to.
  • Add one credential per ActiveCampaign account. Each account needs its own connection, since the API URL is a connection property.