Zoria Energy Case Demo stand

Integrations · CRM · automation

Three channels, one CRM, zero duplicates

A lead from the website form, the Telegram bot, a phone call or a partner site lands in one CRM card — with its source, campaign and language. Repeated webhooks are refused. An outage delays a lead, it never loses one.

The problem this solves

What was built

An integration hub with one event contract for every channel. Each source has a thin adapter; everything after it is shared: signature check, idempotency, normalisation, contact matching, then a write to the CRM and notifications from a transactional outbox.

Numbers, measured on the live stand

WhatThis hubBaseline it replaces
Lead reaches the CRM6 ms medianp95 10 msmanual copy-paste: minutes to hours, nothing at night
Webhook acknowledged0.4 ms medianp95 2.7 msa slow endpoint makes providers retry and duplicate
11 repeated deliveries0 extra dealswithout an idempotency key: 11 duplicate cards
CRM down for 25 s0 lost6 retries, landed after 33 sa naive integration drops the lead and logs nothing
Same person, 2 channels1 cardtouch counter, full history2–3 cards, two reps calling the same customer

Everything above is verifiable from your own terminal. The CRM has a public read-only key, and the panel prints the exact curl commands.

What I connect in production

The CRM on this stand is mine, so that the guest login is real and safe to click. The same integration layer is what I connect to KeyCRM, SalesDrive, Bitrix24 and HubSpot, to PBX webhooks, to Telegram, and to whatever internal system a client already runs.

Stack

Node 22, Fastify, TypeScript, SQLite. No frontend build step. 43 offline tests cover duplicates, races, contact matching, outages, dead letters and signatures. systemd for the service, a 6-hour data reset and a 5-minute health check.


Try to break it. Open the panel, press “Take the CRM down”, then send a lead and watch it land anyway.