ActiveCampaign
ActiveCampaign is an email marketing, marketing automation, and CRM platform. Advanced Form Integration sends form submissions to ActiveCampaign to create or update contacts, subscribe them to lists, enroll them in automations, attach them to accounts, create deals, and add notes, all from a single integration.
What you’ll need
- An active ActiveCampaign account.
- Your ActiveCampaign API URL and API Key (see below).
- The Advanced Form Integration plugin installed and activated.
Get your ActiveCampaign API key
ActiveCampaign authenticates API requests with a key sent in the Api-Token header.
- Sign in to your ActiveCampaign dashboard.
- Go to Settings → Developer (in the left sidebar under Settings).
- Copy the API URL (e.g.
https://youraccount.api-us1.com) and the API Key. - In WordPress, go to AFI → Settings → ActiveCampaign.
- Click Add New Account, paste the URL and API Key, and give the account a name.
- Click Save.
Create the integration
- Go to AFI → Add New.
- Give the integration a name, for example
Contact form to ActiveCampaign. - Under Trigger, pick the form plugin and the specific form you want to listen on.
- Under Action → Platform, select ActiveCampaign.
- In Task, choose Add Contact/Deal/Note.
- Pick the saved account in the ActiveCampaign Account dropdown.
- Optional: select an Account (B2B organization), List, and Automation to associate with the contact.
- Check Update if contact already exists to use ActiveCampaign’s
contact/syncendpoint instead of creating a new contact each time. - Map your form fields onto the ActiveCampaign fields listed below.
- Optional: open Conditional Logic to limit which submissions are sent.
- Click Save Integration.
The action works in a specific order: it creates (or updates) the contact first, then performs each follow-up action you have configured. If you select a list, the contact is subscribed. If you select an automation, the contact is enrolled. If you fill in deal fields, a deal is created and linked to the contact. If you fill in the note field, a note is attached. Each step runs only if its required field is filled.
Tasks supported
Add Contact/Deal/Note
Creates a contact in ActiveCampaign via POST /contacts (or POST /contact/sync when “Update if contact already exists” is checked). After the contact is created, AFI performs each optional follow-up action in sequence using the returned contact ID.
Contact fields
| Field | Field key | Required | Notes |
|---|---|---|---|
email |
Yes | Subscriber email address | |
| First Name | firstName |
No | |
| Last Name | lastName |
No | |
| Phone | phoneNumber |
No | |
| Note | note |
No | Attached to the contact as a note (reltype: Subscriber) |
Deal fields
Fill these to create a deal linked to the contact. If Title [Deal] is empty, no deal is created.
| Field | Field key | Required | Notes |
|---|---|---|---|
| Title [Deal] | dealTitle |
Yes (for deal) | Required for deal creation |
| Description [Deal] | dealDescription |
No | |
| Currency [Deal] | dealCurrency |
No | e.g. usd |
| Stage ID [Deal] | dealStage |
No | Stage IDs are listed in the field description, formatted as Pipeline/Stage: ID |
| Owner ID [Deal] | dealOwner |
No | User IDs are listed in the field description |
| Value [Deal] | dealValue |
No | Multiplied by 100 before sending (cents) |
Optional associations
| Field | How it works |
|---|---|
| Account | Links the contact to a B2B account via POST /accountContacts |
| List | Subscribes the contact to the selected list with status: 1 (active) via POST /contactLists |
| Automation | Enrolls the contact in the selected automation via POST /contactAutomations |
| Update if contact already exists | When checked, uses POST /contact/sync instead of POST /contacts so existing contacts are updated |
Pro features
The Pro integration extends the free version with auto-loaded custom fields for contacts and deals, plus tag application. Pro uses the same ActiveCampaign account connection and the same task, so your existing integrations keep working when you upgrade.
Custom contact fields
When you select an ActiveCampaign account in the Pro action, AFI fetches every custom field defined in your ActiveCampaign instance via GET /fields and presents them in the mapper with their real labels. No need to look up perstag values. Pro also handles field-type conversion automatically:
- Checkbox fields: comma-separated values are wrapped in ActiveCampaign’s
||value1||value2||format. - Datetime fields: values are converted to ISO 8601 format in your site’s timezone before sending.
Tags
The Pro action loads all contact tags from your ActiveCampaign instance via GET /tags and lists them in the Tag ID [Contact] field description with their IDs. Enter one or more tag IDs separated by commas. AFI applies each tag to the contact individually via POST /contactTags.
Deal custom fields
Pro also fetches deal custom field metadata via GET /dealCustomFieldMeta and presents each field by label in the mapper, so you can populate custom deal fields alongside the standard deal fields.
Feature comparison
| Feature | Free | Pro |
|---|---|---|
| Create/update contact | ✅ | ✅ |
| Subscribe to list | ✅ | ✅ |
| Enroll in automation | ✅ | ✅ |
| Link to account | ✅ | ✅ |
| Create deal (standard fields) | ✅ | ✅ |
| Add note | ✅ | ✅ |
| Custom contact fields (auto-loaded) | No | ✅ |
| Tag application by tag ID | No | ✅ |
| Deal custom fields (auto-loaded) | No | ✅ |
Conditional logic example
Only create deals for high-value leads. Add a condition: Deal Value is greater than 500. Contacts from smaller submissions are still created and subscribed to your list, but the deal fields are left empty so no deal is created.
Troubleshooting
Nothing arrives in ActiveCampaign
Open AFI → Log and find the most recent entry for this integration. AFI stores the request it sent and the raw response it got back, so the ActiveCampaign error message is right there. If there is no log entry at all, the trigger never fired: re-check the form selection and submit a real test entry from the front end rather than the form builder preview.
Invalid API URL or key
The API URL looks like https://youraccount.api-us1.com (the suffix varies: api-us1, api-eu1, etc.). Find it in ActiveCampaign under Settings → Developer → API Access. Copy it exactly with no trailing slash. The API Key is a long alphanumeric string on the same page.
Contact created but not on a list
ActiveCampaign separates contact creation from list subscription. Make sure you selected a List in the integration. Without a list, the contact exists in your account but will not receive list-based campaigns.
Deal value appears wrong
ActiveCampaign stores deal values in cents. AFI multiplies the mapped value by 100 before sending (e.g. 99.50 becomes 9950). Enter the deal value in dollars or your currency’s main unit, not in cents.
Custom fields not populating (free version)
The free version maps standard contact fields only (email, first name, last name, phone). To map custom fields like company, birthday, or any field you created in ActiveCampaign, use the ActiveCampaign [PRO] platform, which auto-loads all custom fields by label.