Figr is the AI product designer that understands your product.
Try for freeSee a demo
Guide

User Stories Examples with Acceptance Criteria

User Stories Examples with Acceptance Criteria
Published
September 23, 2026

When “done” still means different things, teams ship ambiguity instead of product behavior.

A Product Manager marks signup ready, Engineering builds the form, QA tests the happy path, and then someone notices the user can enter an email, never confirm it, and still reach paid features. Payment succeeds but retry behavior is undefined. Collaboration works until two people edit the same record. Last week I watched a Designer walk a team through a polished flow that everyone approved, then the room stalled on a basic question: what exactly proves this story is complete? This is what I mean, the expensive gap usually isn't effort, it's interpretation.

The fix is simple in concept and hard in practice: pair each user story with observable acceptance criteria that describe user outcomes, edge states, and evidence of completion. The seven examples below follow the funnel from acquisition to referral, so Product Managers, BAs, Engineering, and QA can align on what users need, what the system must show, and what should happen when reality gets messy. When teams need shared context across PRDs, research, analytics, existing flows, and edge cases, tools like Figr help keep that conversation grounded instead of speculative.

1. User Account Registration with Email Verification

Registration fails when verification is treated as optional. The record exists, the user can sign in, and nobody can answer a basic release question: should this person reach protected areas before confirming their email?

That ambiguity usually surfaces late. QA tests the happy path, Engineering has already wired auth, and Product realizes "account created" and "account activated" were never separated. For an acquisition story, that gap affects fraud risk, trial quality, and the first-run experience.

A complete example

User story

As a new user, I want to create an account and verify my email so that I can securely access the product.

Acceptance criteria

  • Given a new user enters a valid email and valid password, when they submit the registration form, then the account is created in an unverified state
  • Given the account is unverified, when registration succeeds, then the user sees a message telling them to verify their email before full access
  • Given a verification email has been sent, when the user opens the valid link, then the account is marked verified
  • Given the account is not verified, when the user tries to access protected product areas, then access is blocked and verification guidance is shown
  • Given the user enters an invalid email format, when they submit the form, then an inline error is shown
  • Given the user enters a password that fails policy rules, when they submit the form, then the rule violation is shown before account creation

These criteria work because each one describes something a tester can observe. They also define the state transition that matters for handoff: anonymous user, registered but unverified user, then verified user with access. If the team cannot point to those states, the story is still underspecified.

Failure modes teams miss

The expensive bugs are usually in the boundaries, not the form fields.

A few examples show up often:

  • users click an expired or reused verification link
  • a second signup attempt uses the same email before verification is complete
  • the email sends successfully, but the UI never explains what to do next
  • protected screens block access, but pricing, workspace invites, or trial start events still fire for unverified users

Those are not edge cases in practice. They shape activation quality. If verification is part of your first-run journey, the surrounding copy, timing, and blocked-state behavior matter as much as the form itself. Teams working on activation often need the wider onboarding flow to reduce churn mapped alongside the story so everyone sees where verification sits in the funnel.

Role-specific handoff notes

Product should define the access boundary clearly. "Verify email before full access" is too loose unless the story names which areas stay available and which do not.

Engineering should break out token expiry, resend behavior, and duplicate-email handling as implementation tasks or sub-stories if they affect release scope.

QA should ask for observable evidence, not internal steps. "Store user in database" and "call verification service" belong in technical tasks. Acceptance criteria should stay at the level of visible behavior and system response.

For teams that check address quality before sending mail, tools such as Email Validation API can sit behind the flow. Keep that as a dependency choice, not part of the user story unless the user can see its outcome.

Funnel-stage question for this pattern

At the acquisition stage, ask one question before development starts: what exact event marks a user as activated, registration submitted or email verified?

That answer changes analytics, entitlement rules, lifecycle messaging, and QA scope.

A hand-drawn illustration depicting a user account creation process from sign up to email verification and security.

2. Why search and filter stories often collapse in review

A shopper searches for "running shoes," taps Women's, sets a price range, sorts by lowest price, and gets a grid that still shows out-of-stock items from the wrong category. Review stalls right there. Product says the controls exist, Engineering says the query worked as built, and QA asks what the result set was supposed to do.

Search and filter stories break down because teams specify UI controls instead of result behavior. Acceptance criteria need to define what changes in the list, which state persists, and what the shopper sees when filters conflict. Atlassian's guidance on acceptance criteria is useful here because it keeps the team focused on observable completion, not implementation details.

A complete example

User story

As a shopper, I want to filter and sort products so that I can find relevant items faster.

Acceptance criteria

  • Given the shopper is viewing search results, when they apply a category filter, then only products in that category are shown
  • Given results are visible, when the shopper applies a price range filter, then only products within that range remain
  • Given multiple filters are active, when the shopper adds an availability filter, then results update to items that match all selected filters
  • Given sorting options are available, when the shopper selects price low to high, then matching results reorder accordingly
  • Given active filters remove all matches, when results refresh, then a no-results message is shown with a way to clear filters
  • Given filters are active, when the shopper removes one filter, then the result set updates immediately

The strongest version of this pattern adds visible constraints that QA can verify without reading code. Results should show the fields the shopper uses to decide, such as product name, image, price, and stock status. If performance matters, name the threshold in the story only when the team agrees it affects release readiness and has a practical way to test it.

The hidden complexity is filter state

Single-filter stories usually pass review. Combined state is where they fail.

The expensive rework shows up in ordinary moments. A shopper opens a product, goes back, and loses selected filters. A search term stays active but the filter chips do not. Counts update on desktop but not on mobile. None of these defects come from a missing sidebar. They come from a story that never defined how state should behave across the session.

A refinement matrix helps expose that risk early:

  • Common combinations: category plus price, search term plus availability, brand plus sort
  • State decisions: selected chips, clear-all behavior, back-navigation behavior, URL persistence
  • Failure modes: zero matches, delayed refresh, stale counts, conflicting filters
  • Role handoffs: Product defines which combinations matter, Engineering flags query or caching constraints, QA turns each state decision into an observable test

This pattern usually sits between acquisition and revenue. The funnel question is simple: is this story meant to increase product discovery, reduce drop-off on listing pages, or improve conversion from search sessions? The answer changes which criteria deserve precision first. If the team cares about conversion, include stock visibility and no-results recovery. If the team cares about discovery, focus harder on relevance, state persistence, and quick filter changes.

3. Task Assignment and Notification Workflow

Assignment stories need criteria across roles, not just screens.

Collaboration products get messy. A manager assigns work. The assignee receives a notification later. Status changes after acknowledgment. If the story only says "send a notification," Product, Engineering, and QA will each imagine a different finish line.

A complete example

User story

As a team lead, I want to assign a task to a teammate so that ownership is clear and the assignee can act on it.

Acceptance criteria

  • Given a task is unassigned, when the team lead assigns it to an eligible teammate, then the task shows the new assignee
  • Given a task has been assigned, when the assignment is saved, then the assignee receives a notification
  • Given the assignee opens the task, when they acknowledge the assignment, then the task status reflects that acknowledgment
  • Given the assignor changes the assignee before acknowledgment, when the update is saved, then the original assignee no longer sees the task as assigned to them
  • Given a user is not the assignee, when they view their personal task queue, then this assigned task does not appear there
  • Given the assignee has access to the task, when they open it from the notification, then they land on the correct task detail view

Linear, Gmail shared tasks, and Slack workflows each show a version of this pattern. The detail that matters isn't the toast or the email. It's the state transition between unassigned, assigned, seen, and acknowledged.

Teams often confuse delivery with comprehension. A notification can be sent and still fail the user story.

Handoff advice by role

  • Product Manager: define who must know what changed
  • Business Analyst: document role-based visibility and reassignment rules
  • Engineering: separate assignment persistence from notification delivery
  • QA: test stale notifications, reassignment, and unauthorized visibility

If your team struggles with the language of alerts and status messages, examples of designing better UI notifications can sharpen the criteria without overprescribing the interface.

4. How to write payment criteria when failure matters most

Payment stories need decline behavior, retry logic, and transaction evidence, not just a success path.

Happy-path writing becomes expensive. A checkout that only defines success creates rework in support, finance, and QA. Stronger agile guidance explicitly warns that acceptance criteria should include error states, offline behavior, and failure conditions, because simple examples often stop too early in this user story template guidance.

A complete example

User story

As a buyer, I want to complete payment or recover from a failed payment so that I can finish my purchase without confusion.

Acceptance criteria

  • Given a valid payment method and valid order, when the buyer confirms payment, then the payment result is shown and the order status updates accordingly
  • Given the card is declined, when the payment attempt fails, then the buyer sees a decline message and can retry
  • Given the card is expired, when the payment is submitted, then the buyer sees that the card details must be updated
  • Given the payment attempt fails for a recoverable reason, when the buyer returns to payment, then previously entered order details remain available
  • Given a payment attempt is processed, when the result is returned, then the system records the payment attempt outcome for later review
  • Given the buyer retries payment, when the next attempt succeeds, then only the successful payment is reflected in the order state

What good criteria avoid

You don't need to dictate gateways, tokenization, or fraud infrastructure in the acceptance criteria. You do need to define user-visible recovery paths and business evidence. Stripe and Razorpay both make this obvious in practice: specific decline reasons create better recovery than a generic "something went wrong."

A friend at a Series C company once described payment review as "where vague stories become accounting work." That's the zoom-out moment. At scale, every undefined edge case turns into manual support, reconciliations, and angry users.

For teams shaping these paths visually, error state design patterns help expose where message clarity and retry options belong.

A five-step flowchart illustrating payment success, decline, retry, alternative method, and completion states in checkout.

5. Multi-step Form with Progress Tracking and Autosave

Multi-step form stories break when progression, validation, and persistence are bundled into one vague requirement.

Teams say "user can complete setup later," then discover nobody agreed on when a step counts as complete, what autosaves, or where the user resumes. The field has become more structured over time. Research by Lucassen and colleagues identified 13 quality criteria for user stories, and later guidance pushed acceptance criteria toward singular testability, unambiguity, and ties to a unique story ID in the Quality User Story framework paper.

A complete example

User story

As a new customer, I want to complete a multi-step setup form over time so that I can finish onboarding without losing progress.

Acceptance criteria

  • Given the user completes all required fields on the current step, when they select continue, then they move to the next step
  • Given required fields are incomplete or invalid, when the user tries to continue, then they remain on the current step and see field-level errors
  • Given the user enters information on a step, when they pause, then their progress is autosaved
  • Given the user signs out after progress has been saved, when they sign back in, then they return to the last incomplete step
  • Given the user returns to a previous step and edits an answer, when they save changes, then later steps retain compatible saved responses or prompt for updates where needed
  • Given the form shows progress, when the user completes a step, then the progress indicator updates

A refinement habit that helps

Split the work before sprint planning:

  • Validation story: what blocks progression
  • Autosave story: what saves and when
  • Resume story: where the user returns
  • Progress story: what the indicator means

That split reduces fake certainty. If your team wants a better source artifact before refinement, a clear product requirements document guide helps surface the state rules early.

6. What concurrent editing stories need before engineering starts

Real-time collaboration stories need explicit rules for presence, update visibility, conflict handling, and offline recovery.

"Users can edit together" sounds complete until two people change the same field, one loses connectivity, or permissions change mid-edit. This category rewards teams that write scenarios instead of slogans.

An illustration showing two people collaborating on a document with real-time updates and change history features.

A complete example

User story

As a collaborator, I want to edit shared content with others at the same time so that we can work without overwriting each other.

Acceptance criteria

  • Given two authorized users are viewing the same document, when one user begins editing, then the other user can see that collaborator is present
  • Given one user makes a change, when the edit is accepted by the system, then other active viewers see the updated content
  • Given two users edit the same content in conflicting ways, when the conflict occurs, then the system preserves user input and shows the conflict state
  • Given a user loses write access while editing, when they attempt to save further changes, then the save is rejected and the permission change is shown
  • Given a user goes offline while editing, when connectivity returns, then their pending changes attempt to sync and any conflict is surfaced
  • Given a user is only a viewer, when they open the shared content, then editing controls are not available

A 2022 case study assessed stories against IEEE 830 qualities such as completeness, correctness, verifiability, and traceability, and found story quality improved when teams evaluated them using testable acceptance-criteria attributes rather than informal wording in the Software 2022 study. Collaboration stories show why. Informal wording collapses the moment concurrency appears.

The role handoff that prevents pain

  • Product Manager: define what users should understand during conflict
  • Designer: show presence, conflict, and recovery states
  • Engineering: clarify sync model assumptions before commitment
  • QA: test simultaneous edits, reconnect, and permission changes

For a visible example of edge-heavy product work, the Figr gallery includes patterns like task assignment states and trip-change test cases that mirror this kind of complexity.

7. Dynamic Pricing and Discount Application in Cart Checkout

Pricing stories need observable calculation outcomes and promotion rules, not vague promises that discounts apply correctly.

Revenue-stage stories expose whether a team can describe business logic in user-facing terms. Buyers don't care how the pricing engine works. They care whether the total is understandable, fair, and updated when cart conditions change.

A complete example

User story

As a buyer, I want valid discounts applied correctly at checkout so that I understand what I'm paying and what I've saved.

Acceptance criteria

  • Given the cart contains eligible items, when the buyer applies a valid coupon, then the discount is reflected in the order summary
  • Given a coupon is expired or invalid, when the buyer applies it, then the cart total remains unchanged and the buyer sees why the coupon was rejected
  • Given taxes or fees apply, when the checkout summary is shown, then the buyer sees an itemized breakdown before payment
  • Given multiple promotions could apply, when checkout recalculates, then the system applies the promotion rule defined for that cart and shows the resulting savings
  • Given the buyer removes an item after a discount is applied, when the cart updates, then the total and savings are recalculated immediately
  • Given the buyer proceeds to payment, when the final review is displayed, then the amount to be charged matches the checkout summary

What separates usable criteria from noisy criteria

The best pricing criteria answer three questions:

  • What changed: subtotal, discount, fees, taxes, final total
  • Why it changed: valid code, ineligible item, promotion conflict
  • When it changes: on apply, on remove, on quantity update

Clear pricing criteria reduce revenue leakage and support overhead because users can verify the math themselves.

Commerce teams often pair this with testing artifacts. If you're moving from story to QA, this guide on how to create test cases is a practical next step. For broader conversion thinking around checkout, Quikly's checkout optimization advice is useful as a workflow reference.

7 User Stories with Acceptance Criteria Comparison
‍

Item Implementation complexity Resource requirements Expected outcomes Ideal use cases Key advantages
User Account Registration with Email Verification Low–Medium Basic auth + email service, QA Verified, secure user accounts; measurable activation New-user onboarding, general SaaS products Clear acceptance criteria; easy to test; reduces fake accounts
E-commerce Product Filtering and Search Results Medium Frontend state management, backend filtering, caching Accurate, bookmarkable filtered results with correct counts Marketplaces, catalogs, dashboards Improves discoverability; enforces state handling; sharable URLs
Task Assignment and Notification Workflow Medium–High Role management, notification channels, async processing Assigned tasks with delivery/acknowledgment and audit trail Collaboration tools, project management apps Supports multi-role flows; reduces permission bugs; traceability
Payment Processing with Decline and Retry Logic High PCI-compliant gateway, logging, monitoring, retries Reliable transactions, clear decline reasons, idempotent logging Checkout systems, billing platforms Reduces revenue loss; supports dispute resolution; user trust
Multi-step Form with Progress Tracking and Autosave Medium–High Persistence layer, client autosave, validation logic Resumable flows, validated progression, autosave safety Account setup, long surveys, application forms Improves completion rates; clarifies validation; preserves progress
Real-time Collaboration with Concurrent User Edits Very High Real-time sync infra, conflict resolution, specialized testing Low-latency sync, presence indicators, preserved edits Collaborative editors, design tools, live documents Modern UX expectations; prevents data loss; supports concurrency
Dynamic Pricing and Discount Application in Cart Checkout High Business rules engine, tax integration, testing for edge cases Correct itemized totals, accurate discount application E-commerce checkout, SaaS billing, promotional flows Protects revenue; transparent pricing; reduces support queries


Who should write acceptance criteria and how much detail is enough

The product owner should usually write acceptance criteria, but the team should shape them together.

That nuance gets lost in template-heavy content. One established agile source says the product owner should write the criteria because they are the one who accepts or rejects the backlog item, and the criteria can be rules, examples, tests, or brief notes rather than only Given, When, Then statements in Mike Cohn's guidance. That flexibility matters.

The basic gist is this: use the format that creates shared understanding fastest. Given, When, Then is great when state and triggers matter. Rule lists are fine when constraints are simple. Short examples are often better than abstract rules.

A practical review loop looks like this:

  • Product Manager writes the first pass: user outcome, business rule, visible finish line
  • Business Analyst sharpens conditions: role logic, exceptions, terms
  • Engineering challenges ambiguity: impossible combinations, missing states, dependencies
  • QA turns criteria into tests: pass, fail, and edge scenarios

If your backlog keeps producing surprise work in sprint, the issue usually isn't effort estimation. It's that the story never became a shared test. For teams that want a narrower definition-focused companion, Figr's glossary on what acceptance criteria are is useful alongside these examples.

How Figr helps teams move from vague stories to testable handoff

Figr helps when your acceptance criteria depend on product context scattered across artifacts.

Most weak stories aren't written by careless people. They're written by busy teams pulling from memory. The PRD says one thing, research calls out another, analytics show a drop-off, and the existing flow has edge states no one remembered in refinement. That's where context changes story quality.

A 2025 experimental study on AI-generated test cases from user stories reported 98.67% average acceptance-criteria coverage, with a 93–100% range across stories, showing that acceptance criteria can serve as a traceable QA target rather than a narrative artifact in Thoughtworks' experimental research. The important takeaway isn't blind automation. It's traceability.

A practical workflow

Step 1. Load the product context.

  • Bring in PRDs, research, screens, and existing flows
  • Include analytics or recordings when drop-offs or confusion matter
  • Use Figr's docs, PRDs, and research context workflow when the source material is fragmented

Step 2. Turn the story into observable scenarios.

  • Write who wants what and why
  • Add visible outcomes for success, failure, and recovery
  • Keep implementation details in tasks, not acceptance criteria

Step 3. Map missing states before handoff.

  • Check empty, invalid, expired, unauthorized, offline, and conflict states
  • Compare the story against existing flows
  • Use edge case mapping for product flows when the main path looks deceptively clean

Step 4. Hand Engineering and QA the same finish line.

  • Convert criteria into reviewable scenarios
  • Generate design direction or QA artifacts where needed
  • Connect stories to PRD to UX flow translation when requirements and interface behavior drift apart

The Visual Context Graph makes stronger stories possible

Figr's Visual Context Graph matters because good acceptance criteria depend on more than text.

The five layers are a useful lens for story quality:

  • Visual context: the current screens, states, and flow patterns the user sees
  • Behavioral context: what users do, where they hesitate, and which branches matter in the journey
  • Design system context: tokens, components, variants, and state rules that shape what is feasible and consistent
  • Product knowledge context: PRDs, research, prior decisions, terminology, and business logic behind the story
  • Implementation context: existing components, technical constraints, and handoff realities that affect what can ship cleanly

Acceptance criteria aren't written in a vacuum. A registration story improves when visual context reveals the blocked-access state. A collaboration story improves when behavioral context surfaces concurrent edits. A checkout story improves when product knowledge context captures promotion rules. Engineering handoff gets cleaner when implementation context shows existing patterns that QA can test against.

For teams trying to catch complexity earlier, examples of edge cases in software products often trigger the missing conversations before sprint commitment.

Turn the Story Into a Shared Test

Strong user stories examples with acceptance criteria all follow the same pattern: user outcome first, observable behavior next, edge states included, and evidence of completion visible to everyone in the handoff. That's true whether you're working on signup, filtering, assignments, payments, collaboration, or checkout logic.

The teams that avoid expensive rework don't write longer stories. They write clearer confirmation. Atlassian's framing of acceptance criteria as the measurable gate for done, and the older Card, Conversation, Confirmation model behind user stories, both point to the same discipline: a story isn't ready when it's eloquent, it's ready when Product, Engineering, and QA can test the same reality in Atlassian's user story guide.

Start small. Pick one backlog item already heading toward refinement. Rewrite its criteria as observable scenarios. Then map the missing states before the meeting starts: invalid input, empty state, conflict, retry, expired condition, blocked access, offline behavior. That single exercise usually reveals whether the story is small enough, clear enough, and testable enough to move.

If you want help grounding that work in your actual product context, Figr is one practical option. It can connect the story to existing flows, design system states, PRDs, research, and handoff artifacts so the criteria reflect real product behavior instead of generic templates. When you're ready, try Figr.

FAQ

What is the best acceptance criteria format

Use the format that makes behavior easiest to verify. Given, When, Then works well for state changes. Rule lists work well for straightforward constraints.

What are user story acceptance criteria

They are the conditions a story must satisfy to be considered complete. They define observable outcomes, not implementation tasks.

How should Jira acceptance criteria be written

Write them as testable statements inside the story, using scenarios or concise rules. The key is clarity, not the Jira field itself.

What is the difference between an epic and a user story

An epic is a larger body of work that must be split into smaller stories. A user story should describe a specific user outcome small enough to hand off and finish.

What belongs in an acceptance criteria checklist

Include success behavior, failure states, edge cases, role permissions, data or input rules, and the visible evidence that proves the story is done.

Figr is built for teams that need stories and acceptance criteria tied to real product context, not blank-page templates. It brings together screens, PRDs, research, analytics, design systems, and edge cases so Product, Design, Engineering, and QA can work from the same evidence. If that sounds useful for your next refinement cycle, visit Figr.