amoCRM
amoCRM (Kommo) CRM integration for lead, contact, company, task, and pipeline management
amoCRM (Kommo) CRM integration for Axellero Workflow Designer and Agentflow Designer.
Setup Required: See the Setup Guide for authentication configuration and connector setup.
Quick Navigation
Setup Guide
Step-by-step authentication and connector configuration
Changelog
Version history and recent updates
Overview
Comprehensive integration with amoCRM/Kommo CRM platform for managing your sales pipeline, customer relationships, and team tasks. Automate lead processing, contact management, and task workflows with real-time webhook triggers.
Key Features:
- Lead Management - Create, update, and track leads through your sales pipeline
- Contact & Company Management - Maintain customer database with full CRUD operations
- Task Automation - Create and manage tasks linked to CRM entities
- Pipeline Visibility - Access pipeline stages and statuses
- Real-time Webhooks - Trigger workflows on CRM events (21 event types)
Connection Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| accessToken | TEXT | Yes | OAuth 2.0 access token for API authentication |
| domain | TEXT | Yes | Your amoCRM/Kommo domain (e.g., yourcompany.kommo.com) |
Setup Instructions: See the Setup Guide for OAuth configuration, connector creation, and getting started.
Available Operations
| Category | Operation | Description |
|---|---|---|
| Account | getAccount | Get account information and settings |
| Leads | listLeads | List leads with filtering and pagination |
| Leads | getLead | Get a single lead by ID |
| Leads | createLead | Create a new lead |
| Leads | updateLead | Update an existing lead |
| Contacts | listContacts | List contacts with filtering and pagination |
| Contacts | getContact | Get a single contact by ID |
| Contacts | createContact | Create a new contact |
| Contacts | updateContact | Update an existing contact |
| Companies | listCompanies | List companies with filtering and pagination |
| Companies | getCompany | Get a single company by ID |
| Companies | createCompany | Create a new company |
| Companies | updateCompany | Update an existing company |
| Tasks | listTasks | List tasks with filtering and pagination |
| Tasks | getTask | Get a single task by ID |
| Tasks | createTask | Create a new task linked to an entity |
| Tasks | updateTask | Update an existing task |
| Tasks | completeTask | Mark a task as completed |
| Pipelines | listPipelines | List all pipelines with statuses |
| Pipelines | getPipeline | Get a single pipeline by ID |
| Users | listUsers | List all users in the account |
Operations Reference
Account
getAccount
Retrieve account information including settings and current user details.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| with | TEXT | No | Additional data to include (comma-separated): amojo_id, version, drive_url, is_api_filter_enabled |
Configuration Example:
{
"with": "amojo_id,version"
}Note: Connector options (
accessToken,domain) are automatically injected by the runtime. You only need to specify operation-specific parameters.
Success Response:
{
"id": 12345678,
"name": "My Company",
"subdomain": "mycompany",
"currency": "USD",
"current_user_id": 987654
}Error Response:
{
"message": "HTTP 401: Unauthorized",
"code": "HTTP_401",
"type": "HTTP_ERROR",
"operation": "getAccount"
}Leads
listLeads
Retrieve a list of leads with optional filtering and pagination.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum leads to return (1-250, default 50) |
| page | INT | No | Page number for pagination |
| query | TEXT | No | Search query to filter leads |
| filter | TEXT | No | JSON filter object: {"status_id": [1,2], "pipeline_id": [3]} |
| order | TEXT | No | Sort order: created_at:desc, created_at:asc, updated_at:desc, updated_at:asc |
| with | TEXT | No | Include related data: contacts, loss_reason, source_id |
Configuration Example:
{
"limit": 50,
"query": "{{ctx.vars.searchQuery}}",
"order": "created_at:desc",
"with": "contacts"
}Success Response:
{
"leads": [
{
"id": 123456,
"name": "New Deal",
"price": 50000,
"status_id": 142,
"pipeline_id": 1,
"responsible_user_id": 987654,
"created_at": 1609459200,
"updated_at": 1609545600
}
],
"page": 1,
"totalItems": 150
}getLead
Retrieve a single lead by its ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| leadId | TEXT | Yes | Lead ID |
| with | TEXT | No | Include related data: contacts, loss_reason, source_id |
Configuration Example:
{
"leadId": "{{ctx.nodes.trigger.outputs.data.id}}",
"with": "contacts"
}Success Response:
{
"id": 123456,
"name": "New Deal",
"price": 50000,
"status_id": 142,
"pipeline_id": 1,
"responsible_user_id": 987654,
"created_at": 1609459200,
"updated_at": 1609545600,
"_embedded": {
"contacts": [
{"id": 789012, "name": "John Doe"}
]
}
}createLead
Create a new lead with optional custom fields and linked entities.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | TEXT | No | Lead name |
| price | INT | No | Lead budget/price |
| statusId | INT | No | Status ID (pipeline stage) |
| pipelineId | INT | No | Pipeline ID |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tags | TEXT | No | Tags (comma-separated names or JSON array) |
| contactsIds | TEXT | No | Contact IDs to link (comma-separated) |
| companyId | INT | No | Company ID to link |
Configuration Example:
{
"name": "{{ctx.vars.leadName}}",
"price": 25000,
"pipelineId": 1,
"statusId": 142,
"responsibleUserId": 987654,
"tags": "website,inbound"
}Success Response:
{
"id": 789012,
"name": "New Lead",
"price": 25000,
"status_id": 142,
"pipeline_id": 1
}updateLead
Update an existing lead by ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| leadId | TEXT | Yes | Lead ID to update |
| name | TEXT | No | Lead name |
| price | INT | No | Lead budget/price |
| statusId | INT | No | Status ID (pipeline stage) |
| pipelineId | INT | No | Pipeline ID |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tagsToAdd | TEXT | No | Tags to add (comma-separated) |
| tagsToRemove | TEXT | No | Tags to remove (comma-separated) |
Configuration Example:
{
"leadId": "{{ctx.nodes.getLead.outputs.data.id}}",
"statusId": 143,
"tagsToAdd": "qualified"
}Success Response:
{
"id": 123456,
"name": "Qualified Lead",
"status_id": 143,
"pipeline_id": 1
}Contacts
listContacts
Retrieve a list of contacts with optional filtering and pagination.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum contacts to return (1-250) |
| page | INT | No | Page number for pagination |
| query | TEXT | No | Search query to filter contacts |
| filter | TEXT | No | JSON filter object: {"responsible_user_id": [1,2]} |
| order | TEXT | No | Sort order: created_at:desc, updated_at:desc, etc. |
| with | TEXT | No | Include related data: leads, customers |
Configuration Example:
{
"limit": 50,
"query": "{{ctx.vars.searchQuery}}",
"order": "created_at:desc"
}Success Response:
{
"contacts": [
{
"id": 789012,
"name": "John Doe",
"responsible_user_id": 987654,
"created_at": 1609459200
}
],
"page": 1,
"totalItems": 85
}getContact
Retrieve a single contact by its ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactId | TEXT | Yes | Contact ID |
| with | TEXT | No | Include related data: leads, customers |
Configuration Example:
{
"contactId": "{{ctx.nodes.trigger.outputs.data.data[0].id}}",
"with": "leads"
}createContact
Create a new contact with optional custom fields and linked entities.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | TEXT | No | Contact name |
| firstName | TEXT | No | First name |
| lastName | TEXT | No | Last name |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tags | TEXT | No | Tags (comma-separated names) |
| companyId | INT | No | Company ID to link |
| leadsIds | TEXT | No | Lead IDs to link (comma-separated) |
Configuration Example:
{
"firstName": "{{ctx.vars.firstName}}",
"lastName": "{{ctx.vars.lastName}}",
"customFieldsValues": [
{
"field_id": 123456,
"values": [{"value": "{{ctx.vars.email}}"}]
}
]
}Success Response:
{
"id": 345678,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe"
}updateContact
Update an existing contact by ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactId | TEXT | Yes | Contact ID to update |
| name | TEXT | No | Contact name |
| firstName | TEXT | No | First name |
| lastName | TEXT | No | Last name |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tagsToAdd | TEXT | No | Tags to add |
| tagsToRemove | TEXT | No | Tags to remove |
Configuration Example:
{
"contactId": "{{ctx.nodes.getContact.outputs.data.id}}",
"tagsToAdd": "vip",
"responsibleUserId": 987654
}Companies
listCompanies
Retrieve a list of companies with optional filtering and pagination.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum companies to return (1-250) |
| page | INT | No | Page number for pagination |
| query | TEXT | No | Search query to filter companies |
| filter | TEXT | No | JSON filter object |
| order | TEXT | No | Sort order |
| with | TEXT | No | Include related data: leads, contacts |
Configuration Example:
{
"limit": 50,
"query": "{{ctx.vars.companySearch}}",
"with": "leads,contacts"
}getCompany
Retrieve a single company by its ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| companyId | TEXT | Yes | Company ID |
| with | TEXT | No | Include related data: leads, contacts |
Configuration Example:
{
"companyId": "{{ctx.vars.companyId}}",
"with": "contacts"
}createCompany
Create a new company with optional custom fields.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | TEXT | No | Company name |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tags | TEXT | No | Tags (comma-separated names) |
Configuration Example:
{
"name": "{{ctx.vars.companyName}}",
"responsibleUserId": 987654,
"tags": "partner,enterprise"
}Success Response:
{
"id": 456789,
"name": "Acme Corp"
}updateCompany
Update an existing company by ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| companyId | TEXT | Yes | Company ID to update |
| name | TEXT | No | Company name |
| responsibleUserId | INT | No | Responsible user ID |
| customFieldsValues | TEXT | No | Custom fields JSON array |
| tagsToAdd | TEXT | No | Tags to add |
| tagsToRemove | TEXT | No | Tags to remove |
Configuration Example:
{
"companyId": "{{ctx.nodes.getCompany.outputs.data.id}}",
"tagsToAdd": "enterprise"
}Tasks
listTasks
Retrieve a list of tasks with optional filtering and pagination.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum tasks to return (1-250) |
| page | INT | No | Page number for pagination |
| filter | TEXT | No | JSON filter object: {"is_completed": false} |
| order | TEXT | No | Sort order: complete_till:asc, created_at:desc |
| entityType | TEXT | No | Filter by entity type: leads, contacts, companies, customers |
| entityId | INT | No | Filter by linked entity ID |
| responsibleUserId | INT | No | Filter by responsible user ID |
| isCompleted | TEXT | No | Filter by status: true or false |
Configuration Example:
{
"isCompleted": "false",
"order": "complete_till:asc",
"limit": 50
}Success Response:
{
"tasks": [
{
"id": 567890,
"text": "Follow up call",
"entity_id": 123456,
"entity_type": "leads",
"complete_till": 1704067200,
"is_completed": false,
"responsible_user_id": 987654
}
],
"page": 1,
"totalItems": 25
}getTask
Retrieve a single task by its ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| taskId | TEXT | Yes | Task ID |
Configuration Example:
{
"taskId": "{{ctx.vars.taskId}}"
}createTask
Create a new task linked to an entity.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | TEXT | Yes | Task description |
| entityId | INT | Yes | ID of the entity to link the task to |
| entityType | TEXT | Yes | Entity type: leads, contacts, companies, customers |
| completeTill | INT | Yes | Due date as Unix timestamp |
| taskTypeId | INT | No | Task type ID (1=call, 2=meeting, etc.) |
| responsibleUserId | INT | No | Responsible user ID |
Configuration Example:
{
"text": "Follow up with customer",
"entityId": "{{ctx.nodes.createLead.outputs.data.id}}",
"entityType": "leads",
"completeTill": 1704067200,
"taskTypeId": 1
}Success Response:
{
"id": 678901,
"text": "Follow up with customer",
"entity_id": 789012,
"entity_type": "leads",
"complete_till": 1704067200,
"task_type_id": 1
}updateTask
Update an existing task by ID.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| taskId | TEXT | Yes | Task ID to update |
| text | TEXT | No | Task description |
| completeTill | INT | No | Due date as Unix timestamp |
| taskTypeId | INT | No | Task type ID |
| responsibleUserId | INT | No | Responsible user ID |
Configuration Example:
{
"taskId": "{{ctx.vars.taskId}}",
"completeTill": 1704672000,
"responsibleUserId": 987654
}completeTask
Mark a task as completed with optional result text.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| taskId | TEXT | Yes | Task ID to complete |
| resultText | TEXT | No | Result/outcome text |
Configuration Example:
{
"taskId": "{{ctx.nodes.getTask.outputs.data.id}}",
"resultText": "Customer confirmed meeting for next week"
}Success Response:
{
"id": 567890,
"is_completed": true,
"result": {
"text": "Customer confirmed meeting for next week"
}
}Pipelines
listPipelines
Retrieve all pipelines with their statuses.
Parameters: None
Configuration Example:
{}Success Response:
{
"pipelines": [
{
"id": 1,
"name": "Sales Pipeline",
"statuses": [
{"id": 142, "name": "New", "sort": 10},
{"id": 143, "name": "Qualified", "sort": 20},
{"id": 144, "name": "Negotiation", "sort": 30}
]
}
]
}getPipeline
Retrieve a single pipeline by its ID with all statuses.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| pipelineId | TEXT | Yes | Pipeline ID |
Configuration Example:
{
"pipelineId": "{{ctx.vars.pipelineId}}"
}Success Response:
{
"id": 1,
"name": "Sales Pipeline",
"statuses": [
{"id": 142, "name": "New", "sort": 10},
{"id": 143, "name": "Qualified", "sort": 20},
{"id": 144, "name": "Negotiation", "sort": 30}
]
}Users
listUsers
Retrieve a list of users in the account.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | INT | No | Maximum users to return (1-250) |
| page | INT | No | Page number for pagination |
| with | TEXT | No | Include related data: role, group |
Configuration Example:
{
"with": "role,group"
}Success Response:
{
"users": [
{
"id": 987654,
"name": "John Smith",
"email": "john@example.com",
"rights": {"is_admin": true}
}
]
}Triggers
CRM Event
Triggered when CRM entities change (leads, contacts, companies, tasks).
Supported Events
| Event Code | Event Name | Description |
|---|---|---|
add_lead | Lead Created | Triggered when a new lead is created |
update_lead | Lead Updated | Triggered when a lead is modified |
delete_lead | Lead Deleted | Triggered when a lead is deleted |
restore_lead | Lead Restored | Triggered when a deleted lead is restored |
status_lead | Lead Status Changed | Triggered when a lead moves to a different pipeline stage |
responsible_lead | Lead Responsible Changed | Triggered when a lead is reassigned |
add_contact | Contact Created | Triggered when a new contact is created |
update_contact | Contact Updated | Triggered when a contact is modified |
delete_contact | Contact Deleted | Triggered when a contact is deleted |
restore_contact | Contact Restored | Triggered when a deleted contact is restored |
responsible_contact | Contact Responsible Changed | Triggered when a contact is reassigned |
add_company | Company Created | Triggered when a new company is created |
update_company | Company Updated | Triggered when a company is modified |
delete_company | Company Deleted | Triggered when a company is deleted |
restore_company | Company Restored | Triggered when a deleted company is restored |
responsible_company | Company Responsible Changed | Triggered when a company is reassigned |
add_task | Task Created | Triggered when a new task is created |
delete_task | Task Deleted | Triggered when a task is deleted |
complete_task | Task Completed | Triggered when a task is marked complete |
note_lead | Note Added to Lead | Triggered when a note is added to a lead |
note_contact | Note Added to Contact | Triggered when a note is added to a contact |
note_company | Note Added to Company | Triggered when a note is added to a company |
Configuration Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
events | TEXT | Yes | - | Event types to trigger on (select from available values) |
accountId | TEXT | No | - | Expected account ID for webhook verification (recommended for security) |
Event Payload Examples
Lead Created (add_lead):
{
"_eventType": "add_lead",
"_entity": "leads",
"_action": "add",
"_timestamp": "2024-01-15T10:30:00.000Z",
"data": [
{
"id": "123456",
"name": "New Lead",
"status_id": "142",
"price": "50000",
"responsible_user_id": "987654",
"pipeline_id": "1",
"account_id": "12345678"
}
],
"account": {
"subdomain": "mycompany",
"id": "12345678"
}
}Lead Status Changed (status_lead):
{
"_eventType": "status_lead",
"_entity": "leads",
"_action": "status",
"_timestamp": "2024-01-15T11:00:00.000Z",
"data": [
{
"id": "123456",
"name": "Qualified Lead",
"status_id": "143",
"old_status_id": "142",
"pipeline_id": "1"
}
],
"account": {
"subdomain": "mycompany",
"id": "12345678"
}
}Contact Created (add_contact):
{
"_eventType": "add_contact",
"_entity": "contacts",
"_action": "add",
"_timestamp": "2024-01-15T12:00:00.000Z",
"data": [
{
"id": "789012",
"name": "John Doe",
"responsible_user_id": "987654",
"account_id": "12345678"
}
],
"account": {
"subdomain": "mycompany",
"id": "12345678"
}
}Important: amoCRM webhooks require a paid subscription. Free/trial accounts do not have access to the webhooks API.
Webhook Setup: See the Setup Guide for trigger configuration.
Custom Fields
To set custom fields, use the customFieldsValues parameter with JSON:
[
{
"field_id": 123456,
"values": [
{ "value": "example@email.com" }
]
},
{
"field_id": 789012,
"values": [
{ "value": "+1234567890", "enum_code": "WORK" }
]
}
]Error Handling
The node returns structured errors:
{
"message": "HTTP 401: Unauthorized",
"code": "HTTP_401",
"type": "HTTP_ERROR",
"operation": "listLeads"
}| Error Code | Description |
|---|---|
HTTP_401 | Invalid or expired token |
HTTP_402 | Account requires paid subscription (for webhooks) |
HTTP_429 | Rate limit exceeded (max 7 req/sec) |
VALIDATION_ERROR | Invalid parameters |
Use Cases
Lead Qualification Automation
Automatically update lead status and create follow-up tasks when new leads arrive.
Workflow Steps:
- amoCRM Trigger: Events =
add_lead - amoCRM - getLead: Fetch full lead details
- Condition: Check lead source or value
- amoCRM - updateLead: Set status to "Qualified"
- amoCRM - createTask: Create follow-up call task
Contact Sync with Notifications
Send Telegram notifications when new contacts are created in amoCRM.
Workflow Steps:
- amoCRM Trigger: Events =
add_contact - Telegram - sendMessage: Notify sales team
Configuration:
{
"chatId": "{{ctx.vars.salesChannelId}}",
"text": "New contact: {{ctx.nodes.amocrm_trigger.outputs.data.data[0].name}}"
}Task Due Date Reminders
Send daily reminders for overdue tasks.
Workflow Steps:
- Schedule Trigger: Daily at 9:00 AM
- amoCRM - listTasks: Filter overdue, incomplete tasks
- Loop: Iterate through tasks
- Telegram - sendMessage: Send reminder to responsible user
Pipeline Stage Reporting
Track lead progression through pipeline stages.
Workflow Steps:
- amoCRM Trigger: Events =
status_lead - amoCRM - getLead: Get full lead details with contacts
- amoCRM - getPipeline: Get pipeline info for context
- Gmail - sendMessage: Send stage change notification
Lead Assignment Notification
Notify sales reps when they are assigned a new lead.
Workflow Steps:
- amoCRM Trigger: Events =
responsible_lead - amoCRM - listUsers: Get user details
- Telegram - sendMessage: Notify the assigned user