Guide · Planning

User stories explained: how to describe features so they get built right

A user story is a short description of a feature from the user’s point of view, written as “As a [role] I want [action] so that [benefit]”. Together with acceptance criteria it tells the developer who the feature is for, why it exists and when it is done. Here you get the format, 12 examples from a booking system, a template for acceptance criteria and a method for prioritising with MoSCoW.

11 min read · Updated 1 October 2026

A clinic owner writes in the requirements for her new booking system: “Customers must be able to book online.” The developer builds a calendar where the customer picks a time. At the first demo it turns out customers need to choose a practitioner, some treatments require a consultation first, a deposit must be paid, and the customer should get a text message the day before. None of it was wrong. The sentence was simply so short that everyone filled the gaps with their own assumptions. User stories with acceptance criteria are the tool that closes those gaps before code is written.

This guide is written for those of you buying software who want to describe your needs so precisely that the supplier builds what you mean. It applies to apps, web apps, portals and websites with features alike.

What is a user story?

A user story describes one thing a specific user wants to be able to do, and why. The format has three parts: the role, the action and the benefit. The role makes you think about who the feature is for. The action describes what they want to do. The benefit, the “so that” part, is the most important, because it tells the designer and developer which problem the feature solves, so they can suggest a better solution if one exists.

Template: As a [role] I want [action] so that [benefit]. Example: As a customer I want a text message the day before my appointment so that I don’t forget it.

User stories come from agile software development and are often described with the three Cs: Card, Conversation and Confirmation. The card is the sentence itself. The conversation is the dialogue between you and the team where details are clarified. The confirmation is the acceptance criteria, which decide when the story is done. A story is in other words an invitation to a conversation, and it is the conversation that creates shared understanding.

How do you write a good user story?

The most widely used checklist is called INVEST. If a story meets the six points, it is typically ready to be estimated and built. Use the list when reviewing your drafts:

  • Independent: the story can be built and delivered on its own.
  • Negotiable: it describes the need and leaves the solution open for dialogue.
  • Valuable: it delivers value to a user or the business.
  • Estimable: the team understands it well enough to judge its size.
  • Small: it can be built and tested within a few days.
  • Testable: there are clear criteria for when it works.

Weak user story

  • “The system must have booking”
  • “As a user I want a good experience”
  • “As an admin I want to manage everything”
  • No benefit, no criteria

Strong user story

  • “As a customer I want to see free slots for a specific practitioner so that I can book with the one I usually see”
  • One role, one action, one benefit
  • Can be built and tested within a few days
  • Has 3–6 acceptance criteria
The same need written twice. The right-hand version can be estimated and tested.

User story examples from a booking system

Here are 12 user stories from a typical booking system for a clinic or service business. Note that there are three roles: the customer, the staff member and the administrator. Many forget the last two, even though they use the system every day.

Example user stories with priorities. The priorities apply to the first version and will vary from business to business.

RoleUser storyPriority
CustomerAs a customer I want to see free slots for the next four weeks so that I can pick a time that suits meMust
CustomerAs a customer I want to choose treatment and practitioner so that I get the right length and personMust
CustomerAs a customer I want an email confirmation so that I have the booking in writingMust
CustomerAs a customer I want to cancel up to 24 hours before so that I don’t have to callShould
CustomerAs a customer I want a text message the day before so that I don’t forgetShould
CustomerAs a customer I want to pay a deposit with MobilePay so that my slot is securedCould
CustomerAs a customer I want to join a waiting list so that I hear if a slot opens upWon’t (this time)
StaffAs a staff member I want to see today’s bookings on my phone so that I can prepareMust
StaffAs a staff member I want to block time off for holidays so that customers cannot book itMust
AdministratorAs an administrator I want to create and edit treatments with price and duration so that the offering is always up to dateMust
AdministratorAs an administrator I want to see bookings and no-shows per month so that I can plan staffingCould
AdministratorAs an administrator I want payments transferred to e-conomic so that bookkeeping happens automaticallyShould

What are acceptance criteria, and how do you write them?

Acceptance criteria are the concrete conditions that must be met before a story is done. They are your most important protection as a client, because they turn “done” into something you can test. A popular format is Given–When–Then: given a certain situation, when the user does something, then this happens. Here are the criteria for the cancellation story:

  • Given the appointment is more than 24 hours away, when the customer taps “Cancel” in the confirmation email, then the slot is released and the customer gets a receipt.
  • Given the appointment is less than 24 hours away, when the customer tries to cancel, then the clinic’s phone number and an explanation of the rule are shown.
  • Given the customer paid a deposit, when the appointment is cancelled in time, then the deposit is refunded automatically.
  • Given the appointment is cancelled, then another customer can book the slot immediately.
  • Given an appointment is cancelled, then the practitioner is notified in their overview.

Notice how many questions five short criteria answer: what the 24-hour rule means in practice, what happens to the payment, and who gets notified. Each of them would otherwise have surfaced as a discussion at the demo or as a bug after launch. The criteria are also what you test against when you approve the delivery, and they are a good starting point for a usability test.

What is the difference between epics, user stories and tasks?

Three levels in the same backlog. As a client you mostly work with the top two.

LevelWhat it isExampleSize
EpicA larger area containing many storiesOnline bookingWeeks
User storyOne thing a user wants to doCancel an appointment up to 24 hours beforeDays
TaskA technical step the team takes to build the storyAdd cancellation link to the email templateHours

How do you prioritise user stories with MoSCoW?

MoSCoW is the most widely used method for prioritising a list of user stories. Each story goes into one of four categories. The hard part is being honest about what is a must. A useful question is: “Can we launch without it, and will anyone still use the solution?” If the answer is yes, it is a should or a could. The method comes from the DSDM framework, which recommends that must-have stories make up no more than about 60 % of the effort, leaving room for the unexpected.

The MoSCoW categories with examples from the booking system.

CategoryMeaningExample
Must haveWithout it the solution does not work or cannot launchSee free slots and book
Should haveImportant, but a temporary workaround existsOnline cancellation. Until then the customer calls
Could haveNice to have if time and budget allowNo-show statistics
Won’t have (this time)Deliberately postponed to a later versionWaiting list

How do user stories turn into a fixed price?

1

Write

You write the story with role, action and benefit.

2

Clarify

Designer and developer ask questions, and you add acceptance criteria.

3

Prioritise and price

Stories are prioritised with MoSCoW, and musts and shoulds are priced.

4

Build and show

The story is built and shown at a demo in a test version.

5

Accept

You test against the acceptance criteria and approve the story.

From wish to finished feature. The same sequence repeats for every story.

A prioritised list of user stories is the best basis for a fixed price, because both you and the supplier can see exactly what is included. Our packages are built around the number of features: Small has 12 features and 1 integration for DKK 18,000 for web or DKK 28,000 for an app, Medium has 24 features and Large 36. A must-have story often equals one feature, so a good list makes it easy to see which package fits. See the details under pricing, and read more about the difference between fixed price and hourly billing.

Which mistakes do we see most often in user stories?

  • The role is “user”. Write which user: customer, staff member, administrator, accountant.
  • The benefit is missing. Without “so that” the team cannot suggest a better solution.
  • The story describes a screen in place of a need, for example “a page with a dropdown”.
  • The story is too big. “As a customer I want to manage my bookings” is an epic.
  • No acceptance criteria, so “done” becomes a matter of taste.
  • Everything is a must. Then nothing is prioritised, and the budget decides instead of the value.
  • Error cases are forgotten: what happens when the payment fails or the slot is taken?

Template: how to get started with your user stories

  1. List every user type who will use the solution, including your own staff.
  2. For each user type, write the 3–5 most important things they need to do.
  3. Phrase each one as “As a [role] I want [action] so that [benefit]”.
  4. Split large stories until each can be built in a few days.
  5. Add 3–6 acceptance criteria to every must-have story.
  6. Prioritise with MoSCoW, and be strict about the must category.
  7. Write the non-functional requirements as a short list: security, speed, accessibility, hosting.
  8. Review the list with your supplier before asking for a fixed price.

User stories are best written together, and a product discovery workshop is the obvious place to do it. If you prefer a more traditional document, the stories can go straight into our requirements specification template. And to understand how stories are used during development, read our guide to agile vs waterfall. If you already have a list, send it to us and get a written fixed-price proposal within 24 hours.

Questions about user stories

Who should write the user stories?
Anyone can write them, and that is precisely their strength. Often the client or product owner writes the first draft, because they know the users and the goal. The stories are then reviewed with the designer and developer, who ask questions, add acceptance criteria and point out where something is unclear. The most important thing is that one person on your side owns the list and has the mandate to prioritise it.
What is the difference between a user story and a use case?
A use case is a more detailed description of a complete interaction between a user and a system, often with a main flow, alternative flows and error situations written out step by step. A user story is deliberately short and invites a conversation. In practice they complement each other: user stories give overview and priority, while a use case can describe a particularly complex flow, such as a product return.
How many user stories does a typical project have?
A scoped website or app often has 15–40 stories, a web app or customer portal 40–100, and larger platforms several hundred grouped into epics. The number matters less than the size: stories that can each be built and tested in a few days give a more precise estimate and more frequent progress. A very long list is often a sign the first version should be trimmed.
Can user stories replace a requirements specification?
For most small and mid-sized projects, yes. A prioritised list of user stories with acceptance criteria covers most of what a requirements specification needs: what to build, for whom, and when it is done. What is typically missing are the non-functional requirements such as security, speed, accessibility and hosting. You can write those as a short checklist alongside the stories.
Can we use AI to write user stories?
AI tools are good at producing a first draft, suggesting acceptance criteria and spotting gaps, such as error cases you forgot. They simply do not know your customers, your rules or the exceptions in your workflows. Use AI to get started quickly and as a sparring partner, and let the people who know the users correct and prioritise the list. Never share personal data or confidential information in the tools.
What are story points?
Story points are a relative unit that development teams use to judge how big a story is compared with others. A 5-point story is roughly twice the size of a 2 or 3-point one. The points are used to plan how much the team can complete in a period. As a client you rarely need to deal with them. With a fixed price, turning the estimates into a total price is the supplier’s job.

Want us to build it for you?

You get a fixed-price proposal within 24 hours.

Dennis Nielsen

Dennis Nielsen

Head of Operations, Ceptiv

Free consultation

One free hour of advice before you start.

Describe your project and I will contact you as soon as possible, so we can schedule a no-obligation meeting. You leave with practical advice on how to get your project off to a good start.

  • Free
  • 1 hour
  • No obligation