Skip to main content
New: 9 PM Courses with hands-on exercises and certificates
TemplateFREE⏱️ 10-15 minutes per story

User Story Template

A complete user story template with acceptance criteria format, INVEST checklist, story splitting techniques, and five connected example stories for a B2B notification system.

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

User Story Template

Free User Story Template — open and start using immediately

or use email

Instant access. No spam.

What This Template Is For

A user story is a short description of a feature written from the perspective of the person who will use it. Stories are the basic unit of work in most agile teams. They replace long spec documents with small, testable increments that can be estimated, prioritized, and delivered in a single sprint.

The problem is that most user stories are either too vague ("As a user, I want a better experience") or too prescriptive ("As a user, I want a blue button at 14px in the top-right corner"). A good story sits in between: specific enough that engineering can build it, open enough that design can solve it, and small enough that QA can test it within a sprint. This template gives you the format, quality checklist, and splitting techniques to write stories at that sweet spot consistently.

Use this template alongside the Sprint Planning Template to build sprint backlogs. For prioritizing which stories to tackle first, the RICE Calculator or MoSCoW Prioritization Template can help rank your backlog. If you are building stories from a larger initiative, start with the PRD Template and break it down into stories using the splitting techniques below.


How to Use This Template

  1. Start with the user role. Who is performing this action? Use a specific persona or role, not "user."
  2. Describe the action. What does this person want to do? Write it as a capability, not a task.
  3. State the benefit. Why does this matter to them? The benefit connects the story to user value.
  4. Write acceptance criteria. These are the conditions that must be true for the story to be considered done. Use the Given/When/Then format for clarity.
  5. Run the INVEST checklist. Every story should pass all six criteria before going into a sprint.
  6. Split stories that are too large. If a story cannot be completed in a single sprint, use the splitting techniques below.
  7. Add the story to your backlog. Include priority, estimate, and any dependencies.

The User Story Format

Standard Format

As a [specific user role],
I want to [perform an action or have a capability],
So that [I achieve a specific benefit or outcome].

Story Card Template

FieldValue
Story ID[US-XXX]
Title[Short, descriptive name]
User StoryAs a [role], I want to [action], so that [benefit].
PriorityP0 (Must Have) / P1 (Should Have) / P2 (Nice to Have)
Estimate[Story points or T-shirt size]
Sprint[Sprint number or "Backlog"]
Dependencies[Other story IDs this depends on, or "None"]
Labels[Feature area, epic, or theme]

Acceptance Criteria Format

Use the Given/When/Then format. Each story should have 3-6 acceptance criteria.

Given [a specific precondition or context],

When [the user performs a specific action],

Then [a specific, observable outcome occurs].

Additional criteria checklist:

  • Happy path is covered (the expected behavior)
  • At least one error/edge case is covered
  • Performance requirements are stated if relevant
  • Accessibility requirements are stated if relevant
  • Data validation rules are defined if the story involves input

The INVEST Checklist

Run every user story through this checklist before adding it to a sprint. A story that fails more than one criterion needs rework.

CriterionQuestionPass?
IndependentCan this story be built and delivered without waiting for another story to finish first?-
NegotiableIs the implementation approach open to discussion between PM, design, and engineering?-
ValuableDoes this story deliver value to the user (not just to the team internally)?-
EstimableCan the engineering team estimate this story with reasonable confidence?-
SmallCan this story be completed within a single sprint?-
TestableCan QA write a test to verify whether this story is done or not done?-

Common INVEST failures and fixes:

FailureSymptomFix
Not Independent"We cannot start this until story X is done"Split into a smaller story that can be built independently, or sequence them across sprints
Not Estimable"We have no idea how long this will take"Create a spike (time-boxed research task) first to reduce uncertainty
Not Small"This will take 3 sprints"Use the splitting techniques below
Not Testable"As a user, I want a good experience"Rewrite with specific, measurable acceptance criteria

Story Splitting Techniques

When a story is too large for a single sprint, split it using one of these patterns.

1. Split by Workflow Step

Break a multi-step workflow into one story per step.

  • Original: "As a user, I want to create and share a report"
  • Split: "As a user, I want to create a report" + "As a user, I want to share a report via email"

2. Split by User Role

If different roles have different needs, write separate stories.

  • Original: "As a team member, I want to manage notifications"
  • Split: "As an admin, I want to configure notification rules" + "As a team member, I want to receive notifications"

3. Split by Input Method

Separate different data entry paths.

  • Original: "As a user, I want to import contacts"
  • Split: "As a user, I want to import contacts from a CSV file" + "As a user, I want to import contacts from Google Contacts"

4. Split by Business Rule

Isolate complex business logic into separate stories.

  • Original: "As a user, I want to see my billing summary"
  • Split: "As a user, I want to see my current plan and usage" + "As a user, I want to see prorated charges for mid-cycle plan changes"

5. Split by Happy Path vs. Edge Cases

Ship the core behavior first, then handle exceptions.

  • Original: "As a user, I want to upload a profile photo"
  • Split: "As a user, I want to upload a JPEG or PNG profile photo" + "As a user, I want to see an error message if my uploaded file is not a supported format"

Filled Example: B2B Notification System (5 Connected Stories)

These five stories are part of a single epic: "Notification Preferences for Team Accounts." They demonstrate how to break an initiative into independent, sprint-sized stories.


Story 1: View Notification Settings

FieldValue
Story IDUS-401
TitleView notification preferences page
User StoryAs a team member, I want to view my current notification settings in one place, so that I know which notifications I am receiving and through which channels.
PriorityP0 (Must Have)
Estimate3 points
SprintSprint 14
DependenciesNone
LabelsNotifications, Settings

Acceptance Criteria:

  1. Given I am logged in, When I navigate to Settings > Notifications, Then I see a list of all notification categories (Comments, Mentions, Status Changes, Due Dates, Weekly Digest) with their current on/off state.
  2. Given I am on the notification settings page, When I view a notification category, Then I see which channels are enabled (In-app, Email, Slack) for that category.
  3. Given I am on the notification settings page, When the page loads, Then it loads within 1 second and displays my current saved preferences.

Story 2: Toggle Individual Notification Categories

FieldValue
Story IDUS-402
TitleToggle notification categories on/off
User StoryAs a team member, I want to turn individual notification categories on or off, so that I only receive notifications that are relevant to my work.
PriorityP0 (Must Have)
Estimate5 points
SprintSprint 14
DependenciesUS-401 (settings page must exist)
LabelsNotifications, Settings

Acceptance Criteria:

  1. Given I am on the notification settings page, When I toggle a notification category off, Then the system stops sending me notifications of that type within 30 seconds.
  2. Given I toggle a notification category off, When I refresh the page, Then the toggle reflects the saved off state.
  3. Given I am on the notification settings page, When I toggle Mentions off, Then I see a confirmation message: "You will no longer receive mention notifications. You can re-enable this at any time."
  4. Given I have all notification categories toggled off, When I try to toggle the last one off, Then the system allows it (no forced minimum).

Story 3: Choose Notification Channels Per Category

FieldValue
Story IDUS-403
TitleSet notification channel per category
User StoryAs a team member, I want to choose which channel (in-app, email, or Slack) I receive each notification type through, so that urgent notifications reach me immediately while less important ones go to email.
PriorityP1 (Should Have)
Estimate5 points
SprintSprint 15
DependenciesUS-402 (toggle must work)
LabelsNotifications, Settings, Slack

Acceptance Criteria:

  1. Given a notification category is toggled on, When I click the channel options, Then I see checkboxes for In-App, Email, and Slack (if Slack integration is connected).
  2. Given Slack integration is not connected, When I view channel options, Then the Slack checkbox is disabled with a tooltip: "Connect Slack in Integrations to enable."
  3. Given I select Email and Slack for the Comments category, When someone comments on my item, Then I receive the notification in both channels within 60 seconds.
  4. Given I select only In-App for Due Dates, When a due date triggers, Then I receive an in-app notification and no email or Slack message.

Story 4: Admin Default Notification Settings

FieldValue
Story IDUS-404
TitleAdmin sets default notification preferences for new team members
User StoryAs a team admin, I want to set default notification preferences for new members who join my workspace, so that new hires start with sensible defaults instead of all notifications on.
PriorityP1 (Should Have)
Estimate3 points
SprintSprint 15
DependenciesUS-403 (channel selection must work)
LabelsNotifications, Admin, Settings

Acceptance Criteria:

  1. Given I am a workspace admin, When I navigate to Admin > Notification Defaults, Then I see the same notification settings interface as individual users, with a header: "These settings apply to new team members."
  2. Given I save default settings, When a new user joins the workspace, Then their notification preferences are pre-populated with the admin defaults.
  3. Given a new user joins with admin defaults applied, When they navigate to their own notification settings, Then they can override any default. Their individual settings take precedence.

Story 5: Quiet Hours

FieldValue
Story IDUS-405
TitleSet quiet hours for notifications
User StoryAs a team member, I want to set quiet hours during which I do not receive push or Slack notifications, so that I am not interrupted outside my working hours.
PriorityP2 (Nice to Have)
Estimate5 points
SprintBacklog
DependenciesUS-403
LabelsNotifications, Settings

Acceptance Criteria:

  1. Given I am on the notification settings page, When I enable quiet hours, Then I can set a start time and end time (e.g., 6:00 PM to 8:00 AM) and a timezone.
  2. Given quiet hours are active, When a notification triggers, Then in-app and Slack notifications are held and delivered when quiet hours end. Email notifications are delivered immediately (emails are asynchronous by nature).
  3. Given quiet hours are active, When I open the app during quiet hours, Then I see a banner: "Quiet hours active. Notifications will resume at [time]."
  4. Given a held notification exists, When quiet hours end, Then held notifications are delivered in a single batch (not individually) to avoid notification spam.

Story Mapping: How These Stories Connect

Sprint 14Sprint 15Backlog
US-401: View settings (P0)US-403: Channel selection (P1)US-405: Quiet hours (P2)
US-402: Toggle categories (P0)US-404: Admin defaults (P1)

Epic summary. Sprint 14 delivers the core value: users can see and control their notifications. Sprint 15 adds channel flexibility and admin tools. Quiet hours go to backlog for a future sprint based on user demand.


Common Mistakes to Avoid

  • Writing stories as technical tasks. "Create a notifications table in PostgreSQL" is a task, not a story. The user does not care about the database. Write the story from the user's perspective, then break it into tasks during sprint planning.
  • Bundling multiple features into one story. "As a user, I want to view, edit, and share my notifications" is three stories. Split them. Each story should deliver one testable behavior.
  • Vague acceptance criteria. "The page should be fast" is not testable. "The page loads in under 1 second at P95" is. Every acceptance criterion needs a specific, measurable condition that QA can verify.
  • Skipping the benefit clause. "As a user, I want to set quiet hours" is incomplete. The benefit ("so that I am not interrupted outside my working hours") explains why this matters and helps the team make design tradeoffs.
  • Writing stories in isolation. Stories exist within an epic. Map them to a story map (see above) so the team understands sequencing, dependencies, and the incremental value each sprint delivers.

Key Takeaways

  • Every user story needs three parts: a specific role, a clear action, and a meaningful benefit
  • Use Given/When/Then acceptance criteria to make stories testable by QA
  • Run the INVEST checklist on every story before adding it to a sprint
  • Split stories that cannot be completed in a single sprint using workflow, role, or business rule patterns
  • Map connected stories to show sequencing and dependencies across sprints

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 acceptance criteria be?+
Detailed enough that QA can write a test from them without asking the PM clarifying questions. A good rule of thumb: 3-6 acceptance criteria per story. Fewer than 3 means you probably missed edge cases. More than 8 means the story is too large and should be split. Use the Given/When/Then format to keep criteria structured and testable. For broader guidance on writing requirements, see the [Product Requirements Checklist](/templates/product-requirements-checklist).
What is the difference between a user story and a task?+
A user story describes a capability from the user's perspective ("As a team member, I want to toggle notifications"). A task describes implementation work ("Add a notifications_preferences table to the database"). Stories are what you put in the backlog and prioritize with stakeholders. Tasks are what the engineering team creates during [sprint planning](/guides/how-to-run-sprint-planning) to break a story into buildable units. One story typically produces 2-5 tasks.
How do I estimate user stories?+
Most teams use story points on a Fibonacci scale (1, 2, 3, 5, 8, 13). A 1-point story is trivial and well-understood. A 13-point story is complex and uncertain. If a story is estimated at 13 or higher, split it. Planning Poker (each team member privately selects a point value, then everyone reveals simultaneously) reduces anchoring bias. The absolute numbers do not matter. What matters is relative consistency: a 5-point story should take roughly 2-3x the effort of a 2-point story.
Should every story have a design mockup attached?+
Not necessarily. Simple stories (toggle a setting, display a value) often do not need a mockup. Complex stories (new page layouts, multi-step workflows, novel interactions) benefit from at least a wireframe. The test is whether the engineering team can build the story without design ambiguity. If the acceptance criteria fully specify the behavior, a mockup is optional. If the criteria leave room for interpretation on how something looks or flows, include a mockup.
When should I use a spike instead of a user story?+
Use a spike when the team cannot estimate a story because the technical approach is unknown. A spike is a time-boxed research task (usually 1-2 days) that produces information, not shippable code. The output of a spike is a recommendation: "We should use WebSockets for real-time sync because polling would add 3 seconds of latency." After the spike, write the actual user story with the technical approach known. ---

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 →