Skip to main content
New: Forge AI docs + Loop PM assistant. 7-day free trial.
TemplateFREE⏱️ 1-3 hours

User Flow Documentation Template

A user flow mapping template with decision points, edge cases, and error states. Covers happy path, alternative paths, and error recovery with a filled example for an e-commerce checkout flow.

By Tim Adair• Last updated 2026-03-04
User Flow Documentation Template preview

User Flow Documentation Template

Free User Flow Documentation Template — open and start using immediately

or use email

Instant access. No spam.

What This Template Is For

A user flow documents the step-by-step path a user takes to complete a specific task in your product. It maps every screen, decision point, and edge case between the entry point and the goal. Without documented flows, designers build screens in isolation, engineers discover missing states mid-sprint, and QA does not know what to test.

The difference between a user flow and a customer journey map is scope. A journey map covers the entire relationship (awareness through retention) across channels. A user flow covers one task, within one product, from start to finish. You need both, but user flows are the ones that directly drive design and engineering work.

This template covers three layers of each flow: the happy path (everything goes right), alternative paths (valid but less common routes), and error paths (what happens when something goes wrong). Most teams document the happy path and skip the rest. That is why users encounter blank screens, cryptic error messages, and dead ends. This template prevents that. It pairs well with the information architecture template for understanding where flows sit within the product structure. For validating flows with real users, use the usability test report template. Teams doing product discovery create flow diagrams as part of the design phase, between research and wireframing.


How to Use This Template

  1. Start with the Flow Overview. Define the user, the entry point, the goal, and the preconditions. If you cannot clearly state the goal in one sentence, the flow is too broad. Split it.
  2. Map the happy path first. Walk through the ideal scenario where the user completes the task without errors, detours, or unusual conditions. List each screen or state in sequence.
  3. Add decision points. Every place where the user (or the system) makes a choice that changes the path. Label each branch clearly.
  4. Map alternative paths. These are valid but less common routes (e.g., returning user vs. new user, guest checkout vs. logged-in checkout). They are not errors. They are legitimate variations.
  5. Map error paths. For every input, API call, or system operation, document what happens when it fails. The most common missing flows are: network error, invalid input, expired session, permission denied, and empty state.
  6. Document edge cases in a separate table. These are unusual conditions that require specific handling (e.g., cart with 100 items, username with special characters, user in an unsupported timezone).

The Template

Flow Overview

FieldDetails
Flow Name[Descriptive name, e.g., "New User Signup"]
Owner[Name]
Date[Date]
User[User type or persona]
Entry Point[Where the user starts: URL, button, notification, email link]
Goal[What the user is trying to accomplish, in one sentence]
Exit Point[Where the user lands after completing the flow]

Preconditions: [What must be true before the user enters this flow]

  • [e.g., User has an account]
  • [e.g., User has items in cart]
  • [e.g., User has verified email]

Postconditions: [What is true after the flow completes successfully]

  • [e.g., Order is placed and confirmation email sent]
  • [e.g., User account is created and session is active]

Happy Path

The ideal scenario where everything goes right.

StepScreen / StateUser ActionSystem ResponseNotes
1[Screen name][What user does][What system shows/does][Notes]
2[Screen name][User action][System response][Notes]
3[Screen name][User action][System response][Notes]
4[Screen name][User action][System response][Notes]
5[Success state]-[Confirmation][Notes]

Decision Points

#StepConditionPath APath BPath C
D1[Step #][What determines the branch][Where user goes if condition A][Where user goes if condition B][If applicable]
D2[Step #][Condition][Path A][Path B]
D3[Step #][Condition][Path A][Path B]

Alternative Paths

Legitimate variations from the happy path.

Alt Path 1: [Name, e.g., "Returning User"]

Trigger: [What condition creates this variation]

StepScreen / StateUser ActionSystem Response
[#][Screen][Action][Response]
[#][Screen][Action][Response]

Rejoins happy path at: [Step #]

Alt Path 2: [Name]

Trigger: [Condition]

StepScreen / StateUser ActionSystem Response
[#][Screen][Action][Response]

Rejoins happy path at: [Step #]


Error Paths

What happens when something goes wrong.

#StepError ConditionError MessageRecovery ActionFallback
E1[Step #][What fails][What user sees][How user recovers][If recovery fails]
E2[Step #][Error condition][Message][Recovery][Fallback]
E3[Step #][Error condition][Message][Recovery][Fallback]
E4[Step #][Error condition][Message][Recovery][Fallback]

Common error conditions to check:

  • Network failure (offline, timeout, 500 error)
  • Invalid input (wrong format, too long, empty required field)
  • Authentication failure (expired session, wrong credentials)
  • Authorization failure (insufficient permissions)
  • Not found (deleted resource, broken link)
  • Rate limiting (too many requests)
  • Empty state (no data to display)

Edge Cases

#Edge CaseExpected BehaviorTested?
1[Unusual condition, e.g., "User submits form twice rapidly"][Expected outcome]Yes / No
2[Edge case][Behavior][Tested?]
3[Edge case][Behavior][Tested?]
4[Edge case][Behavior][Tested?]

Flow Diagram

[Entry Point]
    │
    ▼
[Step 1: Screen Name]
    │
    ▼
[Decision Point D1] ─── Condition B ──→ [Alt Path]
    │                                        │
    Condition A                              │
    │                                        │
    ▼                                        │
[Step 2: Screen Name]                       │
    │                                        │
    ▼                                        │
[Step 3: Screen Name] ← ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
    │
    │── Error ──→ [Error State] ──→ [Recovery]
    │
    ▼
[Success State]

(Replace with a FigJam, Miro, or Whimsical diagram link for the actual visual.)


Filled Example: E-Commerce Checkout Flow

Flow Overview

FieldDetails
Flow NameCheckout
OwnerAlex Rivera
DateMarch 2026
UserLogged-in customer with items in cart
Entry Point"Checkout" button on cart page
GoalComplete purchase and receive order confirmation
Exit PointOrder confirmation page

Happy Path

StepScreen / StateUser ActionSystem Response
1Cart summaryClicks "Checkout"Loads shipping address form (pre-filled if address on file)
2Shipping addressConfirms or edits address, clicks "Continue"Validates address, shows shipping options with prices
3Shipping methodSelects shipping speed, clicks "Continue"Calculates total with tax, loads payment form
4PaymentEnters card details, clicks "Place Order"Processes payment via Stripe, shows loading spinner
5ConfirmationViews order summaryDisplays order number, sends confirmation email

Decision Points

#StepConditionPath APath B
D12Has saved address?Pre-fill form (happy path)Show empty form
D24Has saved payment method?Show saved card with "Use this card" optionShow empty payment form
D34Order total > $0?Show payment formSkip to confirmation (100% discount code)

Error Paths

#StepError ConditionError MessageRecovery Action
E12Address validation fails"We couldn't verify this address. Please check the street and zip code."Highlight invalid fields. Allow override with "Use this address anyway."
E24Payment declined"Your card was declined. Please try a different payment method."Show payment form again with card fields cleared. Suggest alternative methods.
E34Network timeout during payment"We're having trouble processing your payment. Your card has not been charged."Show "Try Again" button. If retry fails, show "Contact Support" with order details preserved.

Edge Cases

#Edge CaseExpected Behavior
1User has 50+ items in cartCollapse cart summary with "Show all items" toggle. Total visible without scrolling.
2Item goes out of stock during checkoutShow inline alert: "1 item is no longer available." Link to item. Adjust total. Do not block checkout of remaining items.
3Promo code reduces total to $0Skip payment step entirely. Show "Complete Order" instead of "Place Order."
4User clicks browser back from confirmationShow "Your order has been placed" message. Do not resubmit.

Key Takeaways

  • Document three layers: happy path, alternative paths, and error paths. Most bugs and UX failures live in the last two
  • Define the goal in one sentence. If you cannot, the flow is too broad
  • Every decision point should have clear branch conditions and labeled paths
  • Error messages should state the problem and suggest recovery. "Error 500" is not a user-facing message
  • Review and update flows when usability testing or analytics reveal that users take a different path than documented

About This Template

Created by: Tim Adair

Last Updated: 3/4/2026

Version: 1.0.0

License: Free for personal and commercial use

Frequently Asked Questions

How detailed should a user flow be?+
Detailed enough for a designer to create wireframes and an engineer to build the logic without asking follow-up questions. Every screen, decision point, error state, and edge case should be documented. If the flow has more than 15 steps, consider splitting it into sub-flows (e.g., "Checkout: Shipping" and "Checkout: Payment").
What tool should I use to create flow diagrams?+
FigJam and Miro are popular for collaborative diagramming. Whimsical has a dedicated flowchart mode. For simple flows, a text outline (like the one in this template) works fine and is easier to keep updated than a visual diagram. The visual diagram is useful for presentations and stakeholder alignment. The text outline is useful for engineering handoffs.
How do I handle flows that span multiple products?+
Document the handoff points explicitly. At step N, the user leaves Product A and enters Product B. Note what data is passed (URL parameters, session state, API calls), what the user sees during the transition, and who owns each side of the handoff. Cross-product flows are where most user experience failures occur because no single team owns the full path. The [design handoff template](/templates/design-handoff-template) covers the designer-to-engineer handoff within a single product.
When should I update a user flow document?+
Update when the flow changes (new step, removed step, new error handling) or when usability testing reveals that users take a different path than documented. Flows that do not match reality are worse than no documentation because they teach engineers and QA the wrong behavior. Review flows quarterly for high-traffic features. Track actual user paths against documented flows using [funnel analysis](/glossary/conversion-rate).
How do I prioritize which flows to document first?+
Start with the flows that have the highest traffic, the highest revenue impact, or the most support tickets. For most SaaS products, this means: signup, onboarding, core value action (the thing users pay for), and upgrade/payment. Use [product metrics](/glossary/aarrr-pirate-metrics) to identify which flows matter most to your business. ---

Explore More Templates

Browse our full library of AI-enhanced product management templates

Free PDF

Like This Template?

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

or use email

Instant PDF download. One email per week after that.

Want full SaaS idea playbooks with market research?

Explore Ideas Pro →