There is no native integration between Kommo and ActiveCampaign. Marketing collects leads through ActiveCampaign forms and automations — and manually exports them to Kommo via CSV or enters them one by one. Sales closes deals in Kommo — and marketing doesn’t know which leads became clients, making it impossible to stop nurturing sequences or launch onboarding campaigns. This gap between the two tools costs the company leads and team time.
A custom two-way integration closes this gap: a lead from ActiveCampaign automatically appears in Kommo, and a stage change in Kommo triggers the appropriate automation in ActiveCampaign.
Why there is no native integration
ActiveCampaign has an open REST API and supports webhook notifications for contact, tag, and automation changes. There is no official Kommo connector in the ActiveCampaign marketplace — the platform is primarily oriented toward integrations with Salesforce, HubSpot, and Pipedrive.
Zapier covers part of the task: trigger “new contact in AC” -> create contact in Kommo. However:
— Zapier doesn’t create a deal in Kommo with a pipeline and assigned manager
— No reverse sync: stage change in Kommo -> AC doesn’t receive the event
— No deduplication logic: “if the contact already exists in Kommo — update, don’t create a duplicate”
— No UTM and source data transfer from AC to Kommo
What two-way integration provides
ActiveCampaign -> Kommo:
— Contact completes an automation (e.g., downloads a lead magnet) -> deal created in Kommo in the correct pipeline
— UTM parameters, source, and tags from AC passed as custom fields on the deal
— If the contact already exists in Kommo — deal is added to the existing contact, no duplicates
— Lead Score from AC -> custom field “Lead Score” in Kommo
Kommo -> ActiveCampaign:
— Deal moves to “Qualified” stage -> tag qualified added in AC, new automation triggered (e.g., onboarding email sequence)
— Deal closed “Won” -> tag customer, all nurturing sequences stopped, retention series started
— Deal closed “Lost” -> tag lost, win-back automation triggered after 30 days
— Deal moves to “Awaiting Payment” -> transactional email with invoice details
Technical architecture
ActiveCampaign -> Kommo (webhook from AC):
ActiveCampaign supports webhooks for events: contact_add, contact_tag_add, deal_stage_changed, automation_complete.
POST {backend_url}/ac-webhook
X-Webhook-Token: {secret}
{
"type": "automation_complete",
"contact": {
"id": "12345",
"email": "lead@example.com",
"firstName": "John",
"lastName": "Smith",
"phone": "+12025551234",
"fields": { "utm_source": "google", "utm_campaign": "crm_en" }
}
}
Backend:
- Search for contact in Kommo by email:
GET /api/v4/contacts?query={email} - If not found -> create contact, then create deal
- If found -> create new deal, link to existing contact
- Save AC Contact ID to custom field on the deal (for reverse sync)
Kommo -> ActiveCampaign (Digital Pipeline webhook):
Kommo calls the backend when a stage changes:
-> GET /api/v4/leads/{id} (retrieve deal data, including AC Contact ID)
-> ActiveCampaign API: POST /api/3/contactTags
{ "contactTag": { "contact": {ac_contact_id}, "tag": {tag_id} } }
-> ActiveCampaign API: POST /api/3/contactAutomations
{ "contactAutomation": { "contact": {ac_contact_id},
"automation": {automation_id} } }
Kommo stage -> AC action mapping is defined in a config:
{
"stage_mapping": {
"18766543": { "tag": "qualified", "automation": 15 },
"18766544": { "tag": "proposal_sent", "stop_automations": [12, 13] },
"18766545": { "tag": "customer", "automation": 22, "stop_all": true },
"18766546": { "tag": "lost", "automation": 8 }
}
}
Contact deduplication
The most common problem in integrations like this is duplicates. If the same person submitted a form twice (with different names or phone numbers), two contacts may appear in Kommo.
Deduplication logic:
- Search by email — primary identifier
- If email not found, search by phone (
GET /api/v4/contacts?query={phone}) - If multiple contacts found with the same email — use the first one created, log the conflict
- AC Contact ID saved to a custom field — if the field is already populated with a different value, this signals a potential duplicate
UTM and attribution transfer
ActiveCampaign stores custom contact fields, including UTM parameters, when the subscription form is configured correctly. When creating a deal in Kommo, this data is passed to custom fields:
| AC field | Kommo field | Purpose |
|---|---|---|
| utm_source | Traffic source | Google/Facebook/Organic |
| utm_campaign | Campaign | Ad campaign name |
| utm_medium | Channel | cpc/email/social |
| ac_list | AC list | Which mailing list the lead came from |
| lead_score | Lead score | Priority indicator for the manager |
The manager in Kommo immediately sees where the lead came from and how “warm” they are — without needing to ask marketing.
Real-world case study
For a B2B SaaS company (trial -> paid pipeline, 5 managers):
— ActiveCampaign: 14-email nurturing sequence for trial users
— Kommo: sales pipeline for hot leads (those who opened 5+ emails or clicked “Talk to sales”)
Before integration: the marketing manager exported a list of “hot” contacts from AC to CSV once a day and passed it to sales. Delay: 12–24 hours.
After integration: when Lead Score reaches 75 in AC -> webhook -> deal created in Kommo in 5 seconds. Manager receives a task: “Call within 2 hours.” Response time for a hot lead: from 12–24 hours down to 30 minutes.
Kommo -> AC: when a deal is closed “Won” -> trial emails stopped, onboarding sequence started. Previously the marketing manager did this manually and occasionally forgot — clients received “buy our product” emails after they had already paid.
Who benefits from this integration
Kommo + ActiveCampaign integration makes sense when:
— Marketing uses AC for nurturing, sales manages deals in Kommo
— Speed of passing a hot lead from marketing to sales matters (ideally seconds)
— Stopping marketing emails when a deal is closed is required
— Lead Scoring in AC is used to prioritize manager workload
For more on configuring email campaigns directly in the CRM, see the article on email campaign setup in Kommo.
For custom Kommo integrations with other marketing tools — the pattern is the same: webhook from the marketing platform -> create/update deal -> callback on stage change.
Frequently asked questions
Can Zapier be used instead of a custom integration?
For a one-way flow (AC -> Kommo), Zapier handles basic cases: new contact in AC -> create contact in Kommo. For two-way sync with deduplication, UTM transfer, stage mapping, and callbacks — Zapier lacks the flexibility and reliability. The reverse flow (Kommo -> AC on stage change) via Zapier requires a Webhook trigger from Kommo, which is only available through a custom webhook in Digital Pipeline — meaning a backend is required regardless.
Does ActiveCampaign support webhooks for deal stage changes?
AC has built-in Deals (CRM functionality). If you use AC Deals — yes, there are webhooks for deal_stage_changed. If you use AC only for email (without the CRM part) — triggers are built on contact events: tags, automations, fields. In integrations with Kommo, the second scenario is more common: AC for marketing, Kommo for sales.
How to avoid an infinite sync loop?
If AC updates a contact -> webhook -> Kommo updates deal -> webhook -> AC updates contact — this is a loop. Solution: when updating from a webhook, add a service flag sync_source: "ac" in Kommo or sync_source: "kommo" in AC. The backend checks the flag and doesn’t send a reverse webhook if the change originated from the other system.
What if a contact exists in both AC and Kommo but with different emails?
This happens with typos or when someone uses both a corporate and personal email. The backend logs such cases as “identity conflict” and creates a task for the manager: “Check for duplicate contact.” Automatic merging without confirmation risks data loss, so human review is preferable.
Summary
- There is no native Kommo + ActiveCampaign integration; Zapier only covers simple one-way flows
- Two-way sync: AC webhook -> create deal in Kommo; stage change -> tag/automation in AC
- UTM parameters and Lead Score from AC passed as deal fields — manager sees lead context immediately
- Deduplication by email/phone is essential, otherwise the Kommo database fills with duplicates
- Typical development timeline — 3–4 weeks
If you use ActiveCampaign for marketing and Kommo for sales — describe your current lead handoff process. Exceltic.dev will assess the gap and propose a concrete solution.