Sync contacts, leads, and companies from your warehouse to Kommo to power messenger-based sales
Overview
Kommo, formerly amoCRM, is a messenger-based sales CRM for managing leads and talking to customers over WhatsApp, Instagram, Telegram, and other channels. Sync contacts, leads, and companies from your warehouse to Kommo so your sales team works from warehouse data instead of manual entry.
Supported syncing
| Sync Type | Description | Supported Sync Modes | API Reference |
|---|---|---|---|
| Contacts | Create and update the people your team messages in Kommo. | Upsert, Update, Insert | Manage contacts ↗ |
| Leads | Create and update deals, including their pipeline and stage. | Upsert, Update, Insert | Manage leads ↗ |
| Companies | Create and update the organizations contacts belong to. | Upsert, Update, Insert | Manage companies ↗ |
For more information about sync modes, refer to the sync modes docs.
Connect to Kommo
Hightouch authenticates to Kommo with a long-lived token from a private integration. You must have account administrator rights in Kommo to create one:
- In Kommo, create a private integration. Leave Redirect URL empty: Kommo requires it to be blank for long-lived tokens, and Hightouch doesn't use a redirect flow. You can leave Access revoked notification web hook empty too.
- Open the integration's Keys and scopes tab and click Generate long-lived token.
- Select an expiration date and copy the token. Kommo doesn't show it again after you close the dialog.
Then enter the following in Hightouch:
- Subdomain: the first part of your Kommo account URL. For example, enter
mycompanyif you sign in atmycompany.kommo.com. - Long-lived token: the token you generated.
Long-lived tokens expire on the date you selected, from one day to five years after generation. When the token expires, syncs fail with an authentication error until you generate a new token and update the destination. The token carries the permissions of the administrator who generated it.
Sync configuration
Kommo syncs work the same way for contacts, leads, and companies. Use Upsert when Hightouch should create missing records and update existing ones, Update when it should change only records that already exist in Kommo, and Insert when it should create new records and leave existing ones alone.
Contacts
Record matching
Match contacts on Phone, Email, or ID:
- Phone and Email are predefined contact fields in every Kommo account, so you can match on them without creating anything in Kommo first. Hightouch matches on exact values, so normalize phone numbers in your model to the format stored in Kommo.
- ID is the Kommo contact ID. Use it when your warehouse already stores Kommo record IDs.
Changing the matching identifier on an existing Upsert sync can create duplicate contacts, because previously synced rows may no longer match their records.
When you match on Phone or Email, set Match field type to the type Kommo should file the value under, such as Mobile or Work. Kommo stores these fields as a list of typed values and falls back to Work when a sync doesn't name a type, which labels a mobile number as a work phone. Choose one type for the whole sync, or map a column when the type varies by row. Matching itself compares values and ignores the type.
Field mapping
Map these standard contact fields: name, first name, last name, responsible user ID, and tags. The responsible user ID assigns the contact to a Kommo user and takes the user's numeric ID, not their name. Tags accept either a list or a comma-separated string. Kommo only adds tags, so dropping one from your model doesn't remove it from the record.
Hightouch also loads your account's custom fields for each object, and you can map any of them. Values are typed to match the Kommo field type, such as text, numeric, monetary, checkbox, date, or date-time. Phone and email fields appear once per type, for example Phone (Work) and Phone (Mobile), so pick the entry for the type you want the value filed under. Create custom fields in Kommo before you configure the sync so they appear in the mapping options.
Leads
Record matching
Leads match on ID, the Kommo lead ID. To use Upsert or Update mode, your model must store the Kommo lead ID for existing leads. Without stored IDs, use Insert mode to create new leads.
Field mapping
Map these standard lead fields: name, price, pipeline ID, status ID, responsible user ID, and tags. Pipeline ID and status ID place the lead in a pipeline and stage, and both take numeric Kommo IDs. You can find these IDs in your Kommo pipeline settings or through the Kommo API. Tags and custom fields work the same way as for contacts.
Companies
Record matching
Companies match on ID, the Kommo company ID. As with leads, Upsert and Update modes require your model to store the Kommo ID.
Field mapping
Map the standard company fields, name, responsible user ID, and tags, plus any of your account's custom fields. Tags behave the same way as for contacts.
Configure delete behavior
In Update mode, you choose what happens when a row leaves your model: clear the fields the sync writes to and leave the record in place, or select Do nothing to leave the record untouched. Kommo's API doesn't support deleting contacts, leads, or companies, so syncs never delete Kommo records.
Tips and troubleshooting
For Hightouch platform error codes related to Kommo, see Error codes: Other destinations.
Behavior and limitations
- Kommo limits API traffic to seven requests per second per IP address, returns a
429error when you exceed it, and blocks the IP after repeated violations. Hightouch stays under this limit by sending at most five requests per second with up to 50 records per request, so large syncs take longer to complete. - When Kommo rejects a request because some rows are invalid, Hightouch rejects only the rows Kommo names and continues syncing the rest. Rejected rows appear in the sync's row-level errors with the reason from Kommo.
- A
401error means the long-lived token is invalid or expired. A403error means either that the integration lacks the rights for the object it's writing to, or that Kommo has blocked the IP address after sustained rate limit violations. - A
422error means Kommo rejected the shape of the request itself. Hightouch fails these right away instead of retrying, because the same request fails the same way.
Validate your setup
After your first sync completes, verify the data in Kommo:
- Open the Contacts, Leads, or Companies list and search for a synced record.
- Confirm the mapped standard and custom fields show the expected values.
- Open a contact and confirm its phone or email sits under the type you chose, such as Mobile rather than Work.
- For leads, confirm the record landed in the expected pipeline and stage.
Common errors
To date, our customers haven't experienced any errors while using this destination. If you run into any issues, please don't hesitate to . We're here to help.
Live debugger
Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.
Sync alerts
Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.
