Tilda Integration with CRM and Analytics
Tilda doesn't provide server code, but has well-documented webhook mechanism and flexible HTML block for inserting arbitrary code. For CRM integrations, three approaches are used: built-in integrations in site settings, webhook to custom handler, and direct JS integrations via T123 block.
Built-in Integrations
In Tilda site settings, "Integrations" section contains ready connectors for amoCRM, Bitrix24, GetResponse, Mailchimp, SendPulse, and others. Setup takes 15–30 minutes: provide API key, map form fields to CRM fields — done.
Limitation: field mapping is limited, no conditions, additional logic unavailable.
Webhook to Custom Handler
For non-standard CRM or complex logic — webhook:
In Tilda form settings: "After Send" → "Webhook" → specify URL.
Tilda sends POST with form data in application/x-www-form-urlencoded format:
Name=Ivan+Ivanov&Phone=%2B79001234567&Email=ivan%40example.com&formid=form123456789&tranid=1234567890
Handler on Laravel:
public function handleTildaWebhook(Request $request): Response
{
$data = $request->all();
// Basic check — Tilda doesn't sign requests cryptographically,
// so protection via IP filter or secret parameter in URL
$expectedToken = config('services.tilda.webhook_token');
if ($request->query('token') !== $expectedToken) {
abort(403);
}
$lead = [
'name' => $data['Name'] ?? $data['name'] ?? '',
'phone' => $data['Phone'] ?? $data['phone'] ?? '',
'email' => $data['Email'] ?? $data['email'] ?? '',
'source' => 'tilda',
'form' => $data['formid'] ?? '',
];
// Create lead in CRM
dispatch(new CreateCRMLead($lead));
return response('OK', 200);
}
Important note: Tilda doesn't cryptographically sign webhook requests. Protection either via secret token in URL (?token=xxx) or IP filter (Tilda server IPs are published in docs).
Analytics via GTM
For tracking form events in Google Analytics 4 or Yandex.Metrica, standard approach is Google Tag Manager. Tilda supports GTM code insertion:
"Site Settings" → "Analytics" → "Google Tag Manager" → enter container ID (GTM-XXXXXXX).
After that in GTM setup trigger on Tilda form submission. Tilda generates custom event:
// Event that Tilda sends to dataLayer after successful form submission
window.addEventListener('message', function(event) {
if (event.data && event.data.indexOf('tildaCallback') >= 0) {
const data = JSON.parse(event.data);
if (data.event === 'tf-success') {
dataLayer.push({
event: 'tilda_form_submit',
formId: data.formId,
pageName: document.title,
});
}
}
});
In GTM: trigger → "Custom event" → tilda_form_submit. Bind GA4 tag to it with generate_lead event.
Passing UTM Tags to CRM
UTM tags from URL must be saved and passed with lead. Tilda supports this via hidden form fields:
- Add hidden fields to form with names
utm_source,utm_medium,utm_campaign, etc. - In form settings enable "Automatically fill UTM tags in hidden fields".
After that webhook receives filled UTM fields, which can be passed to CRM as deal attributes.
Passing Data from Tilda to Bitrix24 via Webhook
public function sendToBitrix(array $lead): void
{
$webhookUrl = config('services.bitrix24.webhook_url');
Http::post("{$webhookUrl}crm.lead.add.json", [
'fields' => [
'TITLE' => "Lead from site: {$lead['name']}",
'NAME' => $lead['name'],
'PHONE' => [['VALUE' => $lead['phone'], 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $lead['email'], 'VALUE_TYPE' => 'WORK']],
'SOURCE_ID' => 'WEB',
'SOURCE_DESCRIPTION' => "Tilda, form: {$lead['form']}",
'UF_CRM_UTM_SOURCE' => $lead['utm_source'] ?? '',
],
]);
}
Bitrix24 webhook generated in "For Developers" → "Incoming webhook" → select crm rights.
Timelines
Setting up built-in Tilda → CRM integration via standard connector: 30–60 minutes. Implementing custom webhook handler with field mapping and UTM tracking: 3–5 hours. Full analytics stack with GTM, GA4, Metrica and UTM transfer to CRM — 1 business day.







