Skip to main content
New: Deck Doctor. Upload your deck, get CPO-level feedback. 7-day free trial.
TemplateFREE⏱️ 3-5 hours per flow

Chatbot Flow Template for Product Teams

A structured template for designing chatbot conversation flows with decision trees, fallback handling, and handoff criteria.

Last updated 2026-03-05
Chatbot Flow Template for Product Teams preview

Chatbot Flow Template for Product Teams

Free Chatbot Flow Template for Product Teams — open and start using immediately

or use email

Instant access. No spam.

Get Template Pro — all templates, no gates, premium files

888+ templates without email gates, plus 30 premium Excel spreadsheets with formulas and professional slide decks. One payment, lifetime access.

Need a custom version?

Forge AI generates PM documents customized to your product, team, and goals. Get a draft in seconds, then refine with AI chat.

Generate with Forge AI

What This Template Is For

Chatbots fail when they are built as flat FAQ lookup tools. A customer types "I can't log in" and the bot returns a wall of text about password resets, two-factor authentication, account lockouts, and browser compatibility. The customer wanted one specific answer, but the bot gave them four because no one mapped the conversation flow.

This template provides a structured format for designing chatbot conversation flows that diagnose the customer's problem through targeted questions, provide a specific answer, and hand off to a human agent when the conversation reaches the limits of automation. Each flow is a decision tree with explicit branching logic, fallback paths, and success criteria.

Use this template alongside the knowledge base template to ensure your bot's answers are consistent with your public help articles. For defining when the chatbot should escalate to a human, the escalation matrix template provides the severity framework. If you are designing the customer's first experience with your product, the onboarding email template covers the sequence that runs alongside the bot.


How to Use This Template

  1. Identify your top 5 chatbot use cases. Pull them from your ticket data: the topics with the highest volume and highest resolution rate are ideal candidates for automation.
  2. For each use case, map the conversation flow using the decision tree format below.
  3. Write every bot message, including fallbacks and dead ends. Do not leave placeholder text.
  4. Define handoff criteria: the specific conditions under which the bot stops and a human takes over.
  5. Test each flow with 5 real customers before deploying. Watch for confusion, loops, and dead ends.

The Template

Flow Metadata

FieldValue
Flow IDBOT-[CATEGORY]-[NNN]
Flow Name[Descriptive name: "Login Troubleshooting", "Billing Inquiry", "Onboarding Setup"]
Category[Onboarding / Billing / Technical / Feature Discovery / Account Management]
Trigger[What initiates this flow? Keyword match, button click, page context, scheduled message]
Goal[What counts as a successful outcome? Issue resolved, article delivered, handoff completed]
Fallback[What happens when the bot cannot match the user's intent?]
Handoff Criteria[When does the bot transfer to a human agent?]
Avg. Turns[Expected number of bot-user exchanges to reach resolution]
Last Reviewed[Date]

Conversation Flow Format

Each conversation turn follows this format:

[NODE_ID] Bot Message
  ├── [User Response A] → [NEXT_NODE_ID]
  ├── [User Response B] → [NEXT_NODE_ID]
  ├── [User Response C] → [NEXT_NODE_ID]
  └── [Fallback: no match] → [FALLBACK_NODE_ID]

Node types.

TypeIconPurpose
Greeting👋Opens the conversation, sets expectations
QuestionAsks for information to narrow the diagnosis
ActionPerforms a system action (password reset, lookup, etc.)
AnswerDelivers the solution or information
Handoff🤝Transfers to a human agent with context
Fallback🔄Handles unrecognized input
End🏁Closes the conversation

Message Writing Guidelines

RuleExample
Keep messages under 60 words"I can help with that. First, are you trying to log in on the web or mobile app?"
One question per messageDo not ask "What browser are you using and have you tried clearing cache?" Split into two turns
Offer buttons when possiblePresent 2-4 button options instead of asking open-ended questions
Acknowledge before branching"Got it, you are on the web app. Let me check a few things."
Never blame the userSay "that setting can be tricky" not "you set it up wrong"
Include escape hatchEvery flow needs a "Talk to a person" option visible at every turn

Handoff Context Template

When the bot transfers to a human agent, pass this context:

HANDOFF CONTEXT
- Flow: [Flow Name]
- Node reached: [NODE_ID where handoff triggered]
- Reason: [Why the bot could not resolve: complexity, user frustration, system error]
- User responses so far:
  - Q1: [Bot question] → A1: [User answer]
  - Q2: [Bot question] → A2: [User answer]
- Customer info: [Name, email, plan, account age]
- Suggested resolution: [What the bot thinks the agent should try next]

This prevents the customer from repeating everything they already told the bot. Your support team's canned response template should include responses designed for post-handoff scenarios.


Filled Example 1: Login Troubleshooting Flow

Flow Metadata

FieldValue
Flow IDBOT-TECH-001
Flow NameLogin Troubleshooting
CategoryTechnical
TriggerUser types "can't log in", "login problem", "password", or clicks "Login Issues" quick action
GoalUser regains access to their account
FallbackOffer to connect with a support agent
Handoff CriteriaAccount compromised, locked for security, user fails 3 reset attempts, or user requests a human
Avg. Turns4-6

Flow

[1.0] 👋 "I can help you get back into your account. What is happening when you try to log in?"
  ├── [Forgot password] → [2.1]
  ├── [Getting an error message] → [2.2]
  ├── [Two-factor code not working] → [2.3]
  ├── [Talk to a person] → [HANDOFF]
  └── [Fallback] → [FB.1]

[2.1] ⚡ "No problem. I am sending a password reset link to the email on your account now."
  → System action: trigger password reset email
  → [3.1]

[3.1] ❓ "I have sent the reset link. Did you receive the email?"
  ├── [Yes, got it] → [END.1]
  ├── [No, nothing in inbox or spam] → [3.2]
  └── [Fallback] → [FB.1]

[3.2] ❓ "Sometimes the email takes a few minutes. Can you confirm the email address on your account?"
  ├── [User provides email] → [3.3]
  └── [Fallback] → [FB.1]

[3.3] ⚡ "Let me check that email against our records."
  → System action: verify email exists in database
  ├── [Email found] → "I have resent the link. Check {email} including spam. If it still does not arrive in 5 minutes, reply here." → [END.2]
  ├── [Email not found] → "I do not have an account under that email. You might have signed up with a different address. Would you like to try another email or talk to a person?" → [OPTION.1]
  └── [System error] → [HANDOFF]

[2.2] ❓ "What error message are you seeing? Pick the closest match:"
  ├── [Invalid email or password] → [2.1] (redirect to password reset)
  ├── [Account locked] → "Your account has been temporarily locked after multiple failed attempts. It will unlock automatically in 30 minutes. If you need immediate access:" → [HANDOFF]
  ├── [Something else] → "Can you copy and paste the exact error message?" → [ERR.1]
  └── [Fallback] → [FB.1]

[2.3] ❓ "Are you using an authenticator app or SMS for two-factor authentication?"
  ├── [Authenticator app] → "Try these steps: 1) Make sure your phone's time is synced automatically. 2) Open the authenticator app and use the current code (they refresh every 30 seconds). Did that work?"
  ├── [SMS] → "SMS codes can take up to 2 minutes. Check that your phone number is still {last 4 digits}. If you changed your number, you will need to talk to our team:" → [HANDOFF]
  └── [Not sure] → [HANDOFF]

[HANDOFF] 🤝 "I am connecting you with a support agent who can help further. They will have the context from our conversation so you will not need to repeat yourself."
  → Pass handoff context

[FB.1] 🔄 "I did not quite catch that. Could you rephrase, or pick one of these options?"
  → Re-display current node's buttons
  ├── [After 2 consecutive fallbacks] → "It seems like I am not understanding your question. Let me connect you with a person who can help." → [HANDOFF]

[END.1] 🏁 "You are all set. If you run into any other issues, I am here."
  → CSAT prompt: "Was this helpful? 👍 👎"

[END.2] 🏁 "The reset link should arrive shortly. If you still need help, just start a new chat."

Filled Example 2: Billing Inquiry Flow

Flow Metadata

FieldValue
Flow IDBOT-BILL-001
Flow NameBilling Inquiry
CategoryBilling
TriggerUser types "billing", "charge", "invoice", "refund", or clicks "Billing" quick action
GoalCustomer's billing question is answered or routed to billing team with context
Handoff CriteriaRefund request over $100, disputed charge, enterprise contract, or payment failure
Avg. Turns3-5

Flow

[1.0] 👋 "I can help with billing questions. What would you like to know?"
  ├── [View my current plan] → [2.1]
  ├── [I was charged the wrong amount] → [2.2]
  ├── [I want to upgrade or downgrade] → [2.3]
  ├── [I want a refund] → [2.4]
  ├── [Talk to a person] → [HANDOFF]
  └── [Fallback] → [FB.1]

[2.1] ⚡ "Let me pull up your account details."
  → System action: fetch subscription info
  → ✅ "You are on the {plan_name} at {amount}/month. Your next billing date is {date}. Your payment method is {card ending}. Want to make any changes?"
  ├── [No, that is all I needed] → [END.1]
  ├── [I want to change my plan] → [2.3]
  └── [Fallback] → [FB.1]

[2.2] ❓ "I am sorry about that. Can you tell me which charge looks wrong? I will look into it."
  → System action: fetch recent invoices
  → "Here are your recent charges: [list]. Which one looks incorrect?"
  ├── [User identifies charge] → ⚡ Lookup charge details → "That charge of {amount} on {date} was for {reason}. Does that explanation make sense?"
    ├── [Yes, that clears it up] → [END.1]
    ├── [No, I still think it is wrong] → [HANDOFF]
  └── [Fallback] → [FB.1]

[2.3] ✅ "Here are the available plans: [plan comparison]. To change plans, visit your account settings or I can connect you with our team to walk through the options."
  ├── [I will do it myself] → [END.1]
  ├── [Connect me with someone] → [HANDOFF]

[2.4] ❓ "I understand. Can you tell me the reason for the refund request?"
  ├── [Accidental charge / duplicate] → ⚡ Check for duplicate → HANDOFF with context
  ├── [Service not as expected] → "I am sorry to hear that. Let me connect you with our billing team who can review your account." → [HANDOFF]
  ├── [Cancellation within trial] → ⚡ Check trial status → process refund if eligible
  └── [Fallback] → [HANDOFF]

Filled Example 3: Onboarding Setup Flow

Flow Metadata

FieldValue
Flow IDBOT-ONB-001
Flow NameOnboarding Setup Assistant
CategoryOnboarding
TriggerNew user's first login, or user visits setup page
GoalUser completes account setup (profile, team invite, first project)
Handoff CriteriaEnterprise account with custom setup requirements, SSO configuration needed
Avg. Turns5-8

Flow

[1.0] 👋 "Welcome to {product_name}. I will help you get set up in about 5 minutes. Ready?"
  ├── [Let's go] → [2.1]
  ├── [I will set up later] → "No problem. I will be here when you are ready. You can find me in the bottom-right corner anytime." → [END.1]
  ├── [I already have an account] → "Welcome back. What can I help you with?" → [EXISTING.1]
  └── [Fallback] → [FB.1]

[2.1] ❓ "First, what will you mainly use {product_name} for?"
  ├── [Project management] → tag: use_case=pm → [3.1]
  ├── [Product roadmapping] → tag: use_case=roadmap → [3.1]
  ├── [Team collaboration] → tag: use_case=collab → [3.1]
  ├── [Just exploring] → tag: use_case=explore → [3.1]
  └── [Fallback] → [3.1]

[3.1] ✅ "Great choice. Let me customize your workspace for {use_case}."
  → System action: apply workspace template
  → "Done. I have set up a {use_case} workspace with starter templates. Next, want to invite your team?"
  ├── [Yes, invite team] → [4.1]
  ├── [Skip for now] → [5.1]

[4.1] ❓ "Enter the email addresses of the people you want to invite (comma-separated):"
  → System action: send invitations
  → ✅ "Invitations sent to {count} people. They will get an email with a join link. Moving on to your first project."
  → [5.1]

[5.1] ❓ "Let me help you create your first project. What would you like to call it?"
  → System action: create project with name
  → ✅ "Your project '{project_name}' is ready. Here is a quick tour of the key features: [interactive walkthrough link]"
  → [END.2]

[END.2] 🏁 "You are all set. Here are three things to try next:
  1. Add your first task
  2. Customize your dashboard
  3. Explore templates
  Need help with anything? I am always here."

Flow Design Checklist

Use this checklist when designing a new chatbot flow:

  • Every node has a fallback path for unrecognized input
  • "Talk to a person" is accessible from every question node
  • No dead ends: every path reaches either an END, HANDOFF, or loops back to a question
  • Bot messages are under 60 words each
  • Each question asks one thing at a time
  • Handoff context includes all prior user responses
  • System actions have error handling (what if the API call fails?)
  • Flow has been tested with 5+ real users
  • CSAT survey triggers at END nodes
  • Tone matches your support playbook guidelines

Metrics to Track

MetricDefinitionTarget
Containment rate% of conversations resolved without human handoff40-60%
Avg. turns to resolutionNumber of exchanges before the conversation ends< 6
Fallback rate% of user messages the bot cannot match< 15%
Handoff rate% of conversations that transfer to a human30-50%
CSAT scoreCustomer satisfaction rating at end of bot conversation> 4.0/5.0
Drop-off rate% of users who abandon the conversation mid-flow< 25%

Track these metrics per flow, not just globally. A 60% containment rate on login issues but 15% on billing tells you where to invest.


Common Mistakes to Avoid

  • Building a FAQ bot instead of a flow. A FAQ bot matches keywords to answers. A flow diagnoses through questions. The difference matters. "I can't log in" could mean forgot password, account locked, 2FA issue, or browser incompatibility. A flow figures out which one through targeted questions.
  • Too many options per node. Limit each node to 3-4 button options. More than that causes decision paralysis. If you need more categories, add a second level of branching.
  • No escape hatch. Users must always be able to reach a human. If your bot traps users in a loop with no handoff option, you will generate complaints that are worse than the original support request.
  • Ignoring the fallback path. Most teams design the happy path and forget the fallback. When a user types something the bot does not understand, what happens? Plan for this explicitly.
  • Deploying without testing with real users. Internal testing catches structural issues but not confusion, tone problems, or missing paths. Test with 5 real customers and watch (or read transcripts) to find where they get stuck.

Key Takeaways

  • Design chatbot conversations as decision trees, not flat FAQ lookups
  • Every node needs a fallback path and a "talk to a person" escape hatch
  • Keep bot messages under 60 words and ask one question per turn
  • Pass full conversation context on handoff so customers do not repeat themselves
  • Start with 3-5 flows and expand based on containment rate data

About This Template

Created by: Tim Adair

Last Updated: 3/5/2026

Version: 1.0.0

License: Free for personal and commercial use

Frequently Asked Questions

How many flows should a chatbot have at launch?+
Start with 3-5 flows covering your highest-volume, simplest ticket categories. Login issues, billing inquiries, and getting started are typical first flows. Expand after you have data on containment rates and drop-off points.
What containment rate should we target?+
40-60% for a well-designed bot. Below 40% means your flows are too limited or poorly designed. Above 60% may mean you are not offering handoff when you should. Some issues genuinely need a human. For tracking [customer health](/templates/customer-health-template) signals alongside bot performance, combine CSAT and containment data.
How do we handle users who type long, detailed messages instead of clicking buttons?+
Use intent classification (most chatbot platforms include this) to extract the key topic from free-text input and route to the correct flow. If the classifier confidence is below your threshold (typically 70%), trigger the fallback node. Do not try to parse every word.
Should the chatbot use the customer's name?+
Yes, if you have it. "Hi Sarah, I can help with that" is warmer than "I can help with that." Pull the name from the user's account data when available. Do not ask for their name unless you need it for identification.
How often should flows be updated?+
Review metrics weekly during the first month after launch. After that, monthly reviews of containment rate, fallback rate, and CSAT per flow. Update flows whenever the product changes (new features, pricing changes, UI changes) or when a flow's containment rate drops below target. ---

Explore More Templates

Browse our full library of PM templates, or generate a custom version with AI.

Free PDF

Like This Template?

Subscribe to get new templates, frameworks, and PM strategies delivered to your inbox.

or use email

Join 10,000+ product leaders. Instant PDF download.

Want full SaaS idea playbooks with market research?

Explore Ideas Pro →