Live in production at Vervotech

A lead lands at 2 AM.
Everyone's asleep. The router isn't.

Inbound 360 is a routing engine I built to solve a simple but costly problem: Vervotech's inbound leads arrive from every timezone, every channel, every hour — and speed-to-lead is the difference between a demo booked and a lead gone cold. This is the story of how it works, and what it does in real time.

// Live signal — 24hr inbound pattern
watching for inbound webhooks…
00:0004:0008:0012:0016:0020:0024:00
IST asleep
RoleBuilt & run solo — growth engineering, Vervotech
StackHubSpot webhooks → Node service → Klenty API
StatusLive · processing real inbound traffic
01 / The problem

Six lead sources. One inbox. Zero night shift.

Vervotech runs demand generation globally — Google, Meta, partnership referrals, organic search, direct traffic — all feeding into HubSpot around the clock. Every one of those leads deserves the same thing: an immediate, relevant follow-up. Before Inbound 360, that meant a human checking HubSpot, reading the lead, guessing intent, and manually starting a Klenty sequence. Fine at 11 AM. Broken at 2 AM.

Google Ads (PPC)
Organic & direct
Meta / Instagram
Partnership channels
Referral & other
03:00

The gap that mattered most. A hotel-tech buyer in the Gulf browsing pricing pages at 3 AM IST would sit untouched for hours — by the time someone replied, the tab was long closed. Every hour of delay is a measurable drop in show-up rate for demos.

02 / The build

One webhook. Four decisions. Zero humans required.

Inbound 360 sits between HubSpot and Klenty as a single always-on receiver. It takes a raw contact webhook and turns it into a running, personalized outreach sequence — before anyone on the team has opened their laptop.

IN

Receive the webhook

A single endpoint, POST /webhooks/hubspot, accepts every new HubSpot contact the moment it's created — from any source. HubSpot's signature is validated on arrival so nothing unverified reaches the routing logic.

POST /webhooks/hubspotSignature verified
01

Score the lead — Hot or Warm

The contact's email domain is checked against Vervotech's ICP. A business domain (a real company, not a free mailbox) is scored Hot. A generic personal domain is scored Warm. It's a lightweight proxy for "is this a company that can buy," and it runs in milliseconds.

Hot → business domainWarm → personal domain
02

Read intent from the last page seen

Where the visitor was on vervotech.com right before converting says more than any form field. Pricing page, product tour, free trial, MENA offer — each maps to a different Klenty cadence, tuned to that intent.

Page → cadence map451 live pages tracked
03

Push to the right Klenty cadence

Hot and Warm leads carry separate Klenty API keys, so tone and pacing can differ by segment. The contact is enrolled automatically — no rep has to remember which sequence fits which page.

Hot API keyWarm API key
OUT

Log it, in the open

Every decision — the score, the page match, the cadence, the outcome — is written to a live event log with a one-click replay, so a failed sync is never a silent one.

Full audit trailOne-click replay
// Try it — pick a page a lead was last seen on
/pricing/
/product-tour/
/free-trial/
/mena-4-months-free-offer/
/profit-maximizer/
/blog/some-post/
Last page seen: — select one above — Routes to:
03 / Inside the console

What the dashboard shows me, in real time

A snapshot from a live 7-day window in production. Every number below reflects real routing decisions Inbound 360 made without anyone touching HubSpot.

Total events
0
last 7 days
Hot leads
0
56% of volume
Warm leads
0
44% of volume
Sync success
0
65 synced · 8 failed
Hot · business domainsWarm · personal domains
// Where the leads actually enrolled
Product Tour
26
Enterprise Follow-up
15
MENA Offer
10
Free Trial
8
Profit Maximizer (ECPM)
3
Pending review
20
inbound-360.onrender.com/#/admin
Inbound 360 live dashboard — overview
The actual console. Live 7-day view — same numbers shown above, straight from production.
inbound-360.onrender.com/#/
Inbound 360 landing page — single webhook in, page-aware routing, live observability
The entry point. What the team sees before opening the console — the pitch in three cards.
04 / Beyond form fills

Watching the companies who never filled out a form

Inbound 360 also ingests de-anonymized company visits, cross-checks them against Vervotech's ICP (hospitality & travel), and quietly auto-reaches the highest-intent accounts through the same Klenty pipeline — before they ever raise a hand.

0
ICP companies · 30 days
0
High intent · score 7+
0
Auto-pushed to Klenty
0
Visitors matched to ICP
05 / Trust, not just automation

Automation only helps if you can trust it while you sleep

On failure

Slack alerts, instantly

A failed Klenty sync fires a Slack webhook the moment it happens, instead of surfacing three days later as "why didn't this lead get an email."

On demand

One-click replay

Every logged event can be re-run from the console. No re-exporting CSVs, no manually re-triggering HubSpot — just replay and watch it resolve.

On the side

Manual backfill sync

Pull any contact created in the last N days straight from HubSpot and route it through the same rules — already-synced emails are skipped automatically.

06 / Why it mattered

The team stopped being the bottleneck between a click and a conversation.

Inbound 360 didn't just save time — it closed the gap that used to exist between "a lead exists" and "a lead is being worked." Leads now get a relevant, page-aware first touch within moments, in any timezone, on any channel, whether or not a single person is online to see it happen.

HubSpot Webhooks API Node.js Klenty API Leadfeeder Slack Webhooks Signature verification