ActiveCampaign
Connect ActiveCampaign to manage contacts, tags, lists, and deals, and run campaigns, automations, and segments.
You end up pasting two values that sit one above the other on a single ActiveCampaign page: your account's API URL, which looks like https://your-account.api-us1.com, and the API Key beneath it.
- Setup time
- 3 min
- Auth
- API credentials
- API base URL
- https://your-account.api-us1.com/api/3
- Rate limits
- 5 requests per second per account. Over the limit returns 429 with Retry-After, RateLimit-Limit and RateLimit-Remaining headers.
Before you begin
- ActiveCampaign account on any plan
- A user login that can open Settings. The key shown is per user, so the connection inherits that user's permissions.
- Admin rights if you want to create a dedicated integration user instead of using your own key
Get your credentials
Open Settings
Sign in to ActiveCampaign and click Settings, the gear icon at the bottom of the left sidebar above your name.
Settings
Account-wide configuration for Acme Co.
- Account name
- Acme Co.
- Account URL
- acme.activehosted.com
- Plan
- Professional
- Time zone
- Australia/Sydney
The Settings sub-navigation runs across the top of this page. Developer is the tab you need.
Go to the Developer tab
Click Developer in the Settings sub-navigation. The direct address is https://youraccount.activehosted.com/app/settings/developer, where youraccount is your ActiveCampaign subdomain.
Developer Settings
API access, webhooks and integration credentials.
- URL
- https://acme.api-us1.com
- Key
- 8f31c7a94b2e****d0a6
| Webhook | Events | Status |
|---|---|---|
| Contact synchttps://hooks.acme.com/ac | subscribe, update | Active |
Copy the URL and the Key
Under API Access, click Copy beside URL and paste it into the PopMCP API URL field, then copy Key into the PopMCP API Key field. Copy the URL exactly, because the region segment is not always api-us1.
Developer Settings
API access, webhooks and integration credentials.
The Developer tab value is the source of truth for that user's base URL.
Save the connection in PopMCP
Check both fields are filled in PopMCP and click Save. PopMCP sends the key as the Api-Token header against \<your API URL>/api/3/.
Connect in PopMCP
Open your workspace, choose ActiveCampaign in the marketplace, and fill in the connect dialog:
| Field | What to enter |
|---|---|
| API URLtext | In ActiveCampaign go to Settings → Developer. Copy the URL under "API Access" (it looks like https://your-account.api-us1.com). You can paste your app URL (…activehosted.com) too, and we'll convert it. This is the account the MCP is locked to. |
| API Keysecret | Settings → Developer → API Access → Key. Copy it exactly. It's sent as the Api-Token header and stored encrypted; used server-side only.Encrypted with AES-256-GCM on save and never shown again. |
PopMCP verifies the credential against ActiveCampaign immediately. On success the connection flips to Verified and its MCP tools are provisioned.
Verify it worked
PopMCP shows the ActiveCampaign connector as Connected and reports the account it is locked to. Asking for your lists or a contact count returns real data from that account.
Troubleshooting
403 Forbidden, "You do not have permission to access this resource"
Why: The API Key is correct but the API URL points at a different account, or the key belongs to a user without access.
Fix: Re-copy the URL and the Key together from **Settings** then **Developer** while signed in as the intended user.
Requests 404 or the connection never validates
Why: You pasted the app URL ending in activehosted.com, or you assumed api-us1 when the account sits in another region.
Fix: Use the exact URL shown under **API Access** on the Developer tab. PopMCP converts an app URL for you, but the Developer value is authoritative.
The key stops working after a staff change
Why: The key belonged to a user who was deactivated or deleted.
Fix: Create a dedicated integration user, take that user's Developer key and reconnect.
429 Too Many Requests
Why: More than 5 requests per second on the account.
Fix: Back off for the number of seconds in the Retry-After header and watch RateLimit-Remaining to stay under the cap.