Use cases/Communication

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.

Communicationadvanced~2h setup
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_dispatch hook)
  • 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_dispatch hook
  • 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:

python
# spam-filter/__init__.py — blocks obvious junk before LLM tokens get spent
from flowly.agent.hooks import SkipAction
import re
PATTERNS = [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 None
ctx.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

Send to Flowly
Create a plugin called "handoff-router" with one slash command: /escalate <reason> When fired, it should: 1. POST to my Zendesk webhook with the recent conversation transcript and reason 2. Reply: "Thanks — a human will follow up within X hours. Reference: <ticket id>" 3. Add a note to memory tagged "escalated:<ticket_id>" with the conversation excerpt Use ZENDESK_WEBHOOK_URL from env.

5. Train the system prompt

In your dashboard's Agent settings, anchor the assistant's persona:

Send to Flowly
You are the support assistant for [Company]. Your tone is friendly but brief — answer the actual question, no preamble. ALWAYS check the support-faq skill before guessing. If the answer isn't there and isn't obvious, use /escalate. NEVER share refund amounts above $50, account credentials, or internal policy without explicit confirmation from a human. Use /escalate. Hours: 9–6 weekdays. Outside hours, lead with: "I'll do my best now; the team is available 9–6 if I'm wrong."

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 /escalate fires 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.