The Webhook step sends an HTTP request to an external URL with lead data. This is an outgoing webhook, unlike , which describes receiving data from external systems. It is used for integrations with t
Updated August 30, 20263 min
The Webhook step sends an HTTP request to an external URL with lead data. This is an outgoing webhook, unlike Webhooks & API — receiving data from external sources, which describes receiving data from external systems.
It is used for integrations with the outside world: affiliate networks, CRM systems, databases, your own backend. The bot initiates the request itself at the right moment in the funnel.
Single braces {var}
This step uses its own template engine with single curly braces {var}. Do not confuse it with {{var}} (double braces) in Bot Settings → Webhooks & API and in message texts. These are DIFFERENT syntaxes for two different APIs. The Webhook step accepts only {var}.
When to use it
Send {tracker.clickid} to an affiliate network. Notify your CRM about a new qualified lead. Save data to your own database for analysis. Trigger an SMS service on a specific event. Any situation where “the bot must send data to an external system”.
The request is sent automatically — if the URL is incorrect or the server is not ready to receive it, the data will be lost. Make sure that: the URL is correct, the server accepts the specified method (GET/POST), and the data format matches expectations. You can check correctness in the bot’s Logs → Webhooks.
What is available through variables
Available through {var}: system variables ({username}, {chatId}, {stepKey}, {createdAt}), custom fields by key ({partner_id}, etc), tracker parameters ({tracker.clickid}, {tracker.utm_source}). Bot Variables are NOT inserted through the Webhook step — this is a limitation of the current template engine.
Frequently asked questions
In the Logs → Webhooks section of a specific bot, you can see all outgoing requests with their statuses (200 / 4xx / 5xx). If the status is 200, the receiving side accepted it. If it is 4xx/5xx, the error is on their side.
GET — for simple integrations (affiliate programs, trackers). Parameters are in the URL and are easy to test. POST — when there is a lot of data or a structured body. The receiving side usually requires a specific method — check their documentation.
Currently, the Webhook step has no header settings. If authorization is required, pass the token in the URL (GET) or in the Body (POST). For critical integrations, contact support; they may add it.
The step waits for a response from the external service. Usually this takes a few seconds. If the service is very slow, configure a timeout; otherwise, the flow may “hang.” Long processing should be handled on the external service side (asynchronously).
The step logs the error and proceeds to the next step of the flow. The lead does not get “stuck.” But there is no retry attempt either. If guaranteed delivery is required, implement it on the receiving system side (queue with retries).
These are two different directions:
The Webhook step (this article) — an outgoing webhook. The bot sends data outward. Its own template with {var}.