Multi-Channel Customer Service
One AI handling support across WhatsApp, Telegram, web chat, and email — with safe escalation, PII redaction, and handoff to humans when needed.
- Tools
memorymemory_search- Plugins
pii-redactorspam-filterhandoff-router- Channels
telegramwhatsappweb- Uses
pre_gateway_dispatchaudit
Solo founders, small SaaS teams, and local businesses all hit the same support wall: customers want fast replies, your team can't be on five channels at 11 PM. Flowly can handle the bulk — qualifying questions, answering FAQs, looking up order status — and escalate cleanly when a human is required.
What it does
- Single agent listens on Telegram, WhatsApp, web chat, email
- Inbound messages get PII-redacted at the gateway boundary (
pre_gateway_dispatchhook) - Spam and bot traffic dropped before it costs LLM tokens
- Common questions answered from a knowledge base (FAQ skill + memory)
- Order status / account lookups via tools to your backend
- Handoff to human via
/escalate <reason>— agent stops, ticket fires to your CRM - Every conversation logged for compliance + training data
What you'll need
- Connections set up: WhatsApp Business API, Telegram bot, web chat embed
- A PII redactor plugin (covered in the PII redaction use case)
- A spam-filter plugin with
pre_gateway_dispatchhook - A handoff-router plugin that fires webhooks to your CRM (Zendesk, Intercom, custom)
- Knowledge base content as a skill (markdown FAQs, product docs, policy excerpts)
Setup
1. Connect inbound channels
Each channel from the dashboard's Connections tab. WhatsApp requires the Business API (separate Meta verification — slowest part of the setup).
2. Build the safety pipeline
Two plugins fire before the agent sees a message:
# spam-filter/__init__.py — blocks obvious junk before LLM tokens get spentfrom flowly.agent.hooks import SkipActionimport rePATTERNS = [re.compile(p, re.I) for p in [r"crypto.*airdrop", r"bedava bitcoin", r"click here to claim",r"viagra", r"forex.*signal",]]def register(ctx):def filter_inbound(hook_ctx):text = (hook_ctx.event.content or "")for p in PATTERNS:if p.search(text):return SkipAction(reason=f"spam: {p.pattern}")return Nonectx.register_hook("pre_gateway_dispatch", filter_inbound)
The PII redactor is identical in shape — see its dedicated use case.
3. Build a knowledge skill
Inside ~/.flowly/skills/support-faq/SKILL.md put your FAQs, return
policy, hours, etc. Frontmatter description should be specific:
"Use this skill when the customer asks about returns, shipping times,
business hours, or account billing."
4. Configure the handoff plugin
5. Train the system prompt
In your dashboard's Agent settings, anchor the assistant's persona:
Tips
- Audit before going live. Run the agent against ~50 historical support tickets and compare its replies to what the human said. Patch gaps before customers see them.
- PII redaction is non-negotiable. Even for internal logs. Phone numbers and IDs in logs become a compliance problem when (not if) you get a data request.
- Set token budgets. Customer questions are cheap individually but add up. Cap tokens per session and tools-per-turn to avoid runaway scenarios.
- Watch the escalation rate. If
/escalatefires more than 30%, the FAQ skill is missing content. If under 5%, the agent is probably overconfident — review a sample weekly. - Don't promise what you can't deliver. "I'll fix it now" then no human responds for 2 days is worse than "I'll get a human on this in 4 hours" delivered on. Match the agent's commitments to your reality.