← all posts
field notes

Turn site visitors into Telegram leads

Krispy's AI answers visitors 24/7, pre-qualifies them, and routes real leads to Telegram in seconds — 2-command setup, free on Cloudflare Workers.

Shai Snir
lead capturetelegramlive chatself-hostedconversions
Buttr the croissant mascot

🥐 Buttr: a visitor lands at 2am, types "does this integrate with Notion?", and leaves. you find out about it never. that's where i come in.

Krispy's AI answers your visitors around the clock, qualifies their intent, and fires a Telegram notification — with the full conversation thread, word for word — the moment a chat is worth your time. You reply from your phone; the visitor sees your response live in the chat widget. Setup takes two shell commands and costs $0 to self-host.

How does the Telegram lead capture loop work?

When a visitor opens the chat widget, Krispy's AI takes the first turn. It answers from the context you've given it (your docs, your FAQ, a system prompt), keeps the visitor engaged, and can ask qualifying questions before you ever see the thread.

When something worth a human happens — the visitor asks for you directly, mentions pricing, or hits a question the AI can't answer — Krispy fires a Telegram notification with the full conversation attached. No summary, no paraphrase: the real exchange, in order.

You reply in Telegram. Your reply appears in the widget on your site in seconds. The visitor doesn't know you were on a bus; they just got an answer.

The full configuration of Krispy's human handoff triggers covers how to tune what counts as "worth a human" and how to take over from the AI mid-conversation. The short version: you control when you appear, and the AI covers the gaps. Every conversation is logged regardless — even if you never reply, you have a record of who visited, what they asked, and how the AI handled it. That's your lead list.

How do I connect Krispy to Telegram?

You need two things: Krispy deployed to Cloudflare Workers and a Telegram bot connected to it. The 5-minute Cloudflare deploy guide covers the Workers side. Here's the Telegram piece.

Create a bot with BotFather — /newbot, follow the prompts, copy the token. Then:

wrangler secret put TELEGRAM_BOT_TOKEN
# paste your bot token when prompted

wrangler secret put TELEGRAM_CHAT_ID
# your personal Telegram user ID, or a group/channel ID

That's the integration. Krispy uses the bot token to send conversation threads to your Telegram chat and relay your replies back to the widget in real time.

Running multiple projects? Give each one its own Telegram group. Add the bot to each group, grab the group chat ID with /getUpdates, and set it per deployment. Leads from each site land in their own stream — no cross-contamination.

Buttr the croissant mascot

🥐 Buttr: took me 2 minutes to wire up. i'm a croissant. you'll be fine.

What does Krispy cost compared to Intercom or Crisp?

Standard live chat for a small site: Intercom's Essentials plan starts around $74/month (Intercom pricing). Crisp runs $25–95/month depending on the plan (Crisp pricing). Both charge per seat — a pricing model built for support teams, not for indie hackers and solo founders working alone.

Krispy on Cloudflare Workers runs on the free tier, which covers 100,000 requests per day at $0 (Cloudflare Workers pricing). You pay nothing until you're well past the scale where a $25/month tool would have paid for itself.

KrispyIntercom EssentialsCrisp Pro
Monthly cost$0 self-hosted / $19 Cloud~$74/seat$25–95/mo
Open source
Self-hostable
AI built-inAdd-onAdd-on
Telegram handoff
Per-seat pricingNoneYesYes (team plans)

Intercom is the right choice if you need a full support suite with tickets, CRM, and analytics — it's genuinely good at that job. Krispy is the right choice if you want AI-first coverage with Telegram handoff and no monthly subscription while you're still figuring out whether your product has traction.

How do I pre-qualify leads before the Telegram handoff?

This is where Krispy does something standard chat tools don't make easy: you can configure the AI to collect information before routing to you, so every lead that hits Telegram already has context attached.

Example system prompt addition:

Before routing to a human, ask the visitor:
1. What they're trying to build or solve
2. Whether they're a solo founder or part of a team

Include their answers in the handoff notification.

Every Telegram notification becomes: "Building an internal tool for a 4-person agency, wants to know about white-labeling." You know what to say before you type a word. The AI handled the qualification; you do the close.

Buttr reads the pre-qualified lead summary buttr already briefed you. just show up.

Asking for email inside the conversation — "what email should I use to follow up?" — converts better than a form field because it sits naturally in chat. The visitor's answer lands in the thread you receive in Telegram and stays in Krispy's conversation log as a durable record. There's no built-in CRM push, but the thread is searchable and exportable.

How do I get started?

Krispy is open source. Star the repo on GitHub, clone it, and deploy to your own Cloudflare account — the 5-minute setup guide walks through the whole thing. If you'd rather skip the terminal, Krispy Cloud runs the same bot with a 14-day free trial at $19/month flat — no per seat, no surprises.

Buttr the croissant mascot

🥐 Buttr: star the repo. or don't — i'll still be here answering your visitors either way. à bientôt 🥐

FAQ

How does Krispy route visitor chats to Telegram?

Krispy connects via a Telegram bot you create with BotFather. When a visitor chats on your site, the full conversation is forwarded to your TELEGRAM_CHAT_ID. You reply in Telegram; Krispy sends your reply back to the widget in real time. Setup requires two wrangler secret put commands and takes about five minutes. The full handoff configuration guide covers trigger tuning and how to take over from the AI mid-conversation.

Can I capture a visitor's email through the chat widget?

Yes — configure Krispy's AI to ask for it during the conversation. "What email should I use to follow up?" sits naturally in a chat context and converts better than a standalone form field. The visitor's answer is included in the thread you receive in Telegram and stored in Krispy's conversation log. There's no built-in CRM push, but the thread is a durable record you can act on or export.

What if I miss the Telegram notification?

The conversation stays in Krispy's database. You can reply later — the visitor sees your response if they return to the site. The AI continues fielding new messages in the meantime, so the conversation doesn't go cold while you're slow. Every chat, replied to or not, is logged and searchable from your Krispy dashboard.

Does Krispy work across multiple sites?

Yes. Deploy Krispy once per site and point each deployment at a different TELEGRAM_CHAT_ID — your personal Telegram, a group per project, or a shared team channel. Each site's leads arrive in their own stream with no cross-contamination. See the multi-site deploy section of the setup guide for the specifics.

What triggers the Telegram notification — every message or just some?

By default, Krispy notifies you when a visitor explicitly asks for a human or when the conversation has enough intent signal to be worth your time. You can adjust this in your system prompt config: notify on every new conversation (noisier, useful when you first launch) or hold until the AI decides a handoff is warranted (quieter, better at scale). The threshold lives entirely in your system prompt — no code change required.

Buttr the croissant mascot

that's the whole thing. want me to answer your visitors like this? i self-host in one command. 🥐