Sales automation with amoCRM: REST API, OAuth 2.0, and webhooks for a website

Leads from the website get lost between the form and the sales department, and the manager finds out about it from dissatisfied clients. We set up turnkey direct amoCRM integration with the website: an inquiry reaches the pipeline in seconds, with an assignee and source. We reduce manual processing and make the order flow transparent.

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Frequently Asked Questions

Why amoCRM integration with a website loses leads

A website lead passes through more than one point: the browser, the form handler, an external service, the CRM API. A break at any stage looks the same — the client sees “Thank you, we will contact you,” while the funnel is empty.

That is why losing website leads is almost never related to the form itself: it remains intact; the data exchange after it breaks.

The first common failure is a feedback form sending an email, and a manager transferring the data manually. Between sending and deal creation, from half an hour to a day passes; some emails go to spam, some stay in the inbox of an employee who has left.

The second is an expired access token: amoCRM integration authorizes via OAuth 2.0, and if refresh token renewal is not implemented, the exchange silently stops. The error does not surface in the interface; leads are written to a log and stay there.

Duplicate deals are a separate story. A visitor clicks the button twice, the mobile network returns a timeout, the server repeats the request — without an idempotency key, a new deal is created for each call.

The funnel balloons, managers call the same person three times, and stage-by-stage conversion stops meaning anything.

Finally, a data exchange break on webhooks: if the receiver is unavailable and no queue or retries are configured, the event is lost irrevocably — it can no longer be pulled from the CRM. Next, we break down how each of these gaps is closed.

What a direct website-to-CRM connection delivers: measurable effects

The first thing that changes is the time it takes for a lead to enter the funnel.

Previously, the inquiry waited in email until a manager got to it, and hours were lost; with a direct connection, a deal in amoCRM is created the moment the form is submitted, and the responsible person receives a notification immediately.

The share of manual operations drops to isolated cases: there is no need to transfer contacts, create cards, check duplicates, and confirm receipt by email. Each such action is not only a manager's time but also a place where a typo or omission appears.

All channels converge into one funnel with the source preserved: page, ad tag, callback form. A returning client is merged with the existing contact, and the communication history is visible before the first call. Lead source tracking stops depending on how carefully a manager filled in the field manually.

Data transmission reliability rests not on a single request but on a queue with retries: if the CRM is unavailable or responds with an error, the lead is queued for resending, and its status is visible in the log.

The class of failures where “the client wrote, but the inquiry is neither in the CRM nor in email” disappears entirely.

The result is measurable: seconds instead of hours to enter the funnel, isolated manual operations instead of dozens per shift, and zero lost inquiries.

amoCRM integration: three connection schemes and their limits

Direct form submission to amoCRM is the fastest path, but it runs into platform limits: request rate limits, mandatory OAuth 2.0 with token refresh, and no queue during traffic spikes.

Under an advertising flow, some leads drop out on a 429 response, and access keys end up in the page markup.

Scheme When it fits Limitations
Direct form connection via REST API One website, a flow of several leads per minute, a quick start is needed Keys on the client, no retries on failure, platform request rate ceiling
Intermediate layer on your own server Multiple lead sources, wave-like load, retries and a log are needed Your own point of failure, hosting and maintenance, directory synchronization
Webhooks and polling Two-way exchange, deal statuses, adding data to the card A webhook arrives repeatedly or does not arrive — idempotent reception is needed

The data exchange scheme is chosen not by taste but by load profile.

If there is more than one source or leads come in waves, an intermediate layer removes load from the platform and provides a delivery log: it shows exactly what went to the CRM, what came back, and at which step it was lost.

Documented amoCRM limitations include per-account request rate, token lifetime, and no guarantee of single webhook delivery.

Therefore, in any of the three schemes, we build in idempotency by the lead's external identifier and polling as a safeguard: a repeated webhook does not create a duplicate, and a missed one does not lose the deal.

Work stages: from form analysis to access handover

amoCRM integration begins not with code but with analyzing what actually goes out from the website: each form has its own fields, hidden parameters, and validation rules.

Skip this step, and some leads are lost at the junction, while others breed duplicates in the funnel, and you have to sort it out after the fact.

  1. Audit of forms and fields. We collect all capture points — main forms, pop-ups, questionnaires — and record which fields are sent, which are required, and what lies in hidden parameters: source, tag, landing page.
  2. Data flow scheme. We describe the lead route: reception, validation, creation or update of a record, and assignment of a task to the responsible person. Here also are merging rules by phone and email so that a repeat inquiry does not create a second deal.
  3. Exchange setup. We set up access authorization without storing a password in plain text, server-side handlers, retries on failures, and an operations log. Each request is marked with an identifier — repeated delivery does not duplicate the deal.
  4. Acceptance scenarios. We run real cases: a normal lead, a repeat one, an invalid phone number, a spam bot, and external service unavailability. We verify what reached the funnel, what became a task, and what went to the backup queue.
  5. Access handover and training. We hand over accounts and permissions with a clear ownership scheme, and show employees where to view the exchange history and how to act in case of failure.

At the output is not “it works on our test environment” but a reproducible process: a clear scheme, a log, and a procedure for errors.

Settings, flow schemes, and procedures at the output

An integration is considered delivered not when the first deal appears in the funnel, but when the client can operate it independently and hand it over to another contractor.

Therefore, along with a working exchange, we provide a documentation layer — what remains with you after the project is completed.

  • Integration configuration — where data reception addresses, keys, and access tokens are stored, and which parameters can be changed without editing code: funnel, stages, responsible persons, retry interval.
  • Field mapping — a table “form field → deal field → transformation rule”: required and optional, phone normalization, parsing of a compound name, default values.
  • Access policies — which employees and services read and write which entities; a separate account for the exchange instead of a personal administrator account; an action log for every change.
  • Exchange documentation — a description of scenarios, request and response formats, an analysis of error codes and what each means for business logic, and a diagram of the data path from form to deal.
  • Failure procedure — what to do when an external system is unavailable: a resend queue, notification of the responsible person, manual re-run, and a procedure for reconciling what was missed over a period.
  • Team instructions — how to check the exchange after website edits, where to view the log, and how to temporarily disable the exchange without losing accumulated data.
  • Handover procedure — access, repository, test environment, and permissions for objects in the account.

Such a package removes dependence on the integration author: changes in the funnel or on the website are made according to a document, not from memory, and an incident is handled according to a procedure, not in chat.

Case study: how they stopped losing leads in an order flow

Before this, website leads, calls, and messenger messages converged in a shared inbox and were handled manually. About one fifth of inquiries did not receive a response within the first 24 hours; the median first response time remained at 4 hours and depended on shift workload. The source field was rarely filled in — it was unclear which channels actually brought clients.

What was changed

The website was connected to amoCRM via REST API and webhooks: form submission, the callback button, and chat immediately create a deal with the source and campaign tags filled in.

Authorization was moved to a service account with automatic token renewal — the connection does not drop when employees change. Duplicates are merged by phone and email address so that one client does not turn into three cards.

What we monitor

A time rule is set in the CRM: no response for 10 minutes — a task for the responsible person; no response for 30 — a notification to the manager. The first response is recorded automatically based on the actual call or email, not according to the manager's words.

What was achieved

Every lead is tied to a responsible person; there are no more lost inquiries in the flow. The median first response time decreased from 4 hours to 12 minutes, and the share of leads with a filled-in source grew from 40% to 99%.

An entire class of failures disappeared — “there is a lead, but it is unclear where it came from and who is handling it.”

What to do if the CRM is already deployed and stores data

This is not about a clean installation but about integrating amoCRM into an already running sales process: deals are being managed, responsible persons are assigned, and history has accumulated over several periods.

The task is not “implement” but “connect so that the funnel does not stop and reporting does not go off track.” In practice, one of three schemes is chosen.

Option When it fits Limitations
Overlay connection The funnel and fields are suitable, only website exchange is needed Field and duplicate reconciliation is required; some data remains in manual mode
Phased database migration Stages and fields are changing, history is needed for reports Rules are needed for matching statuses, responsible persons, and sources
Parallel operation There is an active deal flow, and a stop is unacceptable Double entry and discrepancy reconciliation for the launch period

The key decision is the fate of historical data. We do not transfer everything indiscriminately: first contact and company directories, then deals while preserving creation and closing dates so that reporting for past periods remains comparable.

Deals without activity are moved to a separate status — otherwise they distort stage-by-stage conversion.

Phased launch proceeds one line at a time, with a control reconciliation: the number of deals and amounts by stage before and after must match. We plan the rollback in advance — the previous database remains available for reading until the new one completes a full deal cycle.

What to choose is decided by the volume of history and the pace of new deals: with a calm flow, migration takes one pass; with active sales, parallel operation is safer. Describe your current funnel — we will come back with an estimate and a phased launch plan.

Technical concerns: limits, reliability, access

Limits on requests to amoCRM are not an abstract restriction but a design parameter. We maintain an outbound queue and stagger sends over time, so batch lead export goes in parts while preserving order and does not hit a failure at peak activity. If the website produces a traffic spike, some requests wait in the queue — we do not lose them.

We treat the unavailability of either side as a normal situation: failed calls go to retry with increasing delay, and the deal state is restored from the operations log.

Idempotency protects against duplicates — each lead has a unique identifier, and reprocessing the same event does not create a second deal or a duplicate invoice.

What happens if an external service is unavailable for several hours?

Events are saved to disk, and sending resumes automatically after connectivity is restored. You can see how many records are waiting to be sent, and a notification arrives if downtime exceeds a configured threshold.

How are access keys stored, and is data protected?

Keys and tokens are stored in a secure secrets vault, not in code and not in repository configuration. Access is granted to a service account with the minimum required permissions, token lifetime is limited, and renewal happens automatically.

We transmit personal data over a secure channel and do not duplicate it in external systems without necessity.

All failure scenarios — connection loss, expired access, repeated webhook — are run on the test environment before launch. Describe your sales scheme, and we will come back with an estimate and a work plan.

Let's discuss the task and come back with an estimate and plan

For the work estimate to be accurate and the implementation plan to rely on real inputs rather than guesses, a few artifacts are enough. Below is what to send so we can discuss the task concretely and immediately state the launch timeline.

  • Funnel and deal stage scheme — how a lead moves from first touch to payment, where the stage changes manually and where automatically.
  • Composition of objects and fields in amoCRM — which entities are involved, which fields are custom and required, how a client is currently searched, and what to do with duplicates.
  • Integration points on the website — forms, cart, account area, callback: which event creates a lead, what data goes with it, and what happens on a repeat lead.
  • Access and permissions — test environment, separate user for integration, OAuth access scope, who confirms the connection; whether a separate environment is needed for pre-launch checks.
  • Business rules — responsible person distribution, auto-tasks, notifications, stage change by event, response deadlines; what is considered a successful scenario.
  • Adjacent systems and known failures — telephony, inventory, mailings, API request limits; which leads were lost and whether error logs exist — this shortens diagnostics.

Based on the review results, we will come back with a work estimate, a phased implementation plan, and an indication of launch timelines. Describe the task in free form — that is enough to get started.

Our competencies:

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1368
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1139
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1152
  • Website development for SBH Partners
    Website development for SBH Partners
    1231
  • Website development for Red Pear
    Website development for Red Pear
    641