flag92 flag92
Solutions

Typebot + Chatwoot — guided triage with human fallback

Typebot triages visitors at the entry point; structured data lands as Chatwoot tickets. The lightweight, low-cost "filter then escalate" pattern.

Scenario
Mixed-quality website traffic that needs filtering before reaching agents / sales
Monthly cost
$20 - $60
Difficulty
Easy
TypebotChatwootPostgres

What this combo solves#

Many teams’ support pain is not “AI isn’t smart enough” but “visitors arrive with mixed intent”:

  • 80% of web visitors just want docs / pricing / contact info
  • Less than 10% actually need a human
  • Agents can’t tell which is which up front, so they drown in noise
  • Sales leads arrive unstructured and leak out

Typebot + Chatwoot puts a guided form at the very front to capture each visitor’s intent, email and category before deciding what’s next. It does not depend on an LLM — cost is minimal, yet it filters out 70-80% of low-value conversations.

Architecture#

Docs

Sales

Post-sales

General

Unresolved

Visitor opens site

Typebot widget

Direct to docs site

Collect company info

Write to CRM + Slack notify

Collect order ID + issue

Create Chatwoot ticket

Human agent

Show common Q&A

When to pick this#

Your situationFits?
Daily UV < 5,000, mixed intent✓ Great fit
Sales leads are critical, want structured capture✓ Great fit
No ops capacity, prefer simple✓ Yes (Typebot single container)
Customers expect “instant conversational answers”✗ Not a fit (this is guided)
Rich KB, want chat-based Q&A✗ Use Chatwoot + Dify

Components#

ComponentRoleResource
Typebot BuilderVisual editor for flows1 container
Typebot ViewerRuntime visitors hit1 container
ChatwootTicket intake, agent assignmentShared host
PostgreSQLStorage for both1 container
RedisChatwoot queues1 container

Total: one 4C/8G VPS is plenty.

Deployment#

1. Bring up Typebot#

git clone https://github.com/baptisteArno/typebot.io
cd typebot.io
cp .env.example .env
# Key env:
#   DATABASE_URL=postgresql://...
#   NEXTAUTH_URL=https://flow.example.com   (Builder)
#   NEXT_PUBLIC_VIEWER_URL=https://chat.example.com   (Viewer)
#   ENCRYPTION_SECRET=$(openssl rand -hex 32)
docker compose up -d

Open the Builder, register, create your first bot.

2. Design the triage flow#

Simplest 5-step funnel:

1. Welcome + intent select (buttons: Docs / Sales / Support / Other)
2. Branch by intent
   - Docs → Redirect to docs.example.com
   - Sales → Collect email + company + question
   - Support → Collect order ID + description
   - Other → Show 5 common FAQs; unresolved → human
3. On submit, fire a Webhook into Chatwoot

Typebot Webhook node config:

URL: https://support.example.com/api/v1/accounts/1/conversations
Method: POST
Headers:
  api_access_token: <Chatwoot User Token>
  Content-Type: application/json
Body:
  {
    "source_id": "{{userEmail}}",
    "inbox_id": 1,
    "contact": {
      "name": "{{userName}}",
      "email": "{{userEmail}}"
    },
    "additional_attributes": {
      "intent": "{{intent}}",
      "company": "{{companyName}}"
    },
    "message": {
      "content": "{{userProblem}}"
    }
  }

3. Web embed#

<script type="module">
  import Typebot from 'https://cdn.jsdelivr.net/npm/@typebot.io/js@0.3/dist/web.js'
  Typebot.initBubble({
    typebot: 'your-bot-id',
    apiHost: 'https://chat.example.com',
    theme: { button: { backgroundColor: '#4654e6' } },
  })
</script>

4. Chatwoot side#

  • Create an Inbox “From website”
  • Auto-assignment rules: intent == sales → sales team, intent == support → support team
  • Surface custom attributes intent and company so agents can triage at a glance

Cost#

ResourceMonthly
4C/8G VPS (Typebot + Chatwoot)$30
Domain + Postmark$10
Total~$40 / mo

No LLM calls — zero token cost.

Real-world outcomes#

A SaaS team’s numbers 4 weeks after launch:

MetricBeforeAfter
Daily conversations per agent14238
Structured-lead rate30%95%
Sales leads / mo5689
Support CSAT3.84.4
Monthly agent hours320h110h

Bottom line: agent load down 73% while lead quality and count went up.

Evolution#

The ceiling is obvious — this doesn’t satisfy users who want natural AI conversation. Two paths once traffic grows:

Path A — bolt on AI fallback#

Route Typebot’s “Other / unresolved” branch into Chatwoot + Dify. Typebot handles structured triage up front; Dify owns free-form Q&A behind it.

Path B — go full AI#

If 80% of conversations end up in “Other,” users want chat. Migrate to Chatwoot + Dify, keep Typebot only for strongly structured flows (quote forms, sales intake).

Pitfalls#

  1. Typebot Webhook hits CSP across origins — explicitly allow it in Chatwoot’s nginx
  2. Multi-language — one bot per locale, switch with ?lang=zh query
  3. Mobile — needs separate styling, iOS Safari can raise the keyboard awkwardly
  4. Data compliance — Typebot stores submissions in its own Postgres; spell it out in your privacy policy

Search

Press ⌘ K to open