Acceptance criteria are the language that connects product, engineering, and QA. Without them, everyone builds different versions of 'done.'
Acceptance criteria are the definition of "done" for every user story. They ensure that everyone — product managers, engineers, QA, and business stakeholders — share a clear understanding of what success looks like. Without acceptance criteria, features become guesswork, misalignment festers, and delivery quality suffers.
The trap is that many teams skip acceptance criteria or write vague checklists that don't capture user behavior or edge cases. Your actual job is to write acceptance criteria that are concrete, testable, and focused on outcomes — not just technical specs or UI guidelines.
Why acceptance criteria matter more than you think
Acceptance criteria are often treated as an afterthought or a box to check. But they are the foundation of quality and alignment.
- They eliminate ambiguity. When you say "the login should work," that means different things to a developer, a tester, and a business user. Acceptance criteria spell out exactly what "work" means.
- They reduce rework. Clear criteria mean fewer surprises during QA and fewer change requests after release.
- They improve collaboration. When everyone shares the same language and expectations, conversations are more productive and less adversarial.
- They enable automation. Written in the right way, acceptance criteria can be linked directly to automated tests that verify the product behaves as expected.
In practice, teams that invest in acceptance criteria ship faster and with higher confidence.
The Given-When-Then pattern and Gherkin syntax
The most effective way to write acceptance criteria is using the Given-When-Then format. This comes from Behavior Driven Development (BDD), a methodology that focuses on describing software behavior in plain language.
- Given describes the initial context or preconditions.
- When describes the action or event.
- Then describes the expected outcome.
For example:
Given I am a registered user on the login page
When I enter valid credentials and click "Login"
Then I should be redirected to my dashboard
This format makes acceptance criteria easy to read, understand, and automate.
Gherkin is a domain-specific language built around Given-When-Then. It is plain English (or many other languages) and is designed to be both human-readable and machine-executable.
Talvinder explains:
"Gherkin is a domain specific language which allows you to write user acceptance tests based on the acceptance criteria. Why should you consider using Gherkin? It allows you to write acceptance tests that allow the business, QA and developers to understand. It serves as a common ground for all and improves collaboration. Gherkin is able to link user acceptance tests to automated tests directly through the use of cucumber."
Gherkin supports keywords such as Feature, Scenario, Background, Scenario Outline, and Examples, allowing you to organize acceptance criteria systematically.
Behavior Driven Development (BDD) and its value
BDD is a development approach that uses acceptance criteria written in Gherkin to drive the development process. It ensures that the software's behavior is described without specifying how it's implemented — focusing on outcomes rather than code.
This approach aligns product management, QA, and engineering around the user experience.
Talvinder notes:
"This ensures a behavior driven development. It allows the software's behavior to be described using you know without describing how it is to be implemented. You just talk about what is the final outcome and you can use that programmatically to actually test the final behavior. It is very interesting."
Using BDD reduces communication gaps and makes testing more meaningful. It shifts the focus from "Did you write the code?" to "Does the feature actually work for the user?"
Writing acceptance criteria: practical tips
Acceptance criteria should be:
- Clear and unambiguous: Use simple language. Avoid vague terms like "fast" or "intuitive" without quantification.
- Testable: You should be able to write a test (manual or automated) that verifies each criterion.
- Focused on user behavior: Describe how the user interacts with the feature, not just technical details.
- Comprehensive: Cover normal flows, edge cases, and failure modes.
- Concise: Avoid overloading with implementation details that belong in the design or architecture documents.
Talvinder emphasizes:
"Acceptance criteria is a must for every user story whether you use Gherkin, a much more detailed and formal way of writing the acceptance criteria, or simply writing that it should work on these browsers and this is the validation and should have XYZ. It's up to you but writing acceptance criteria is super critical for every single user story. It's a practice that is not followed that clearly that well honestly I wish it was used that frequently but if you use it trust me all the stakeholders will be very very happy when they see a final product which has all the criteria completed."
Example of acceptance criteria using Gherkin
Here is a typical example shared by Talvinder:
Feature: Post a blog
As a customer,
I want to post informative blogs,
So that I can share what I'm doing and raise my profile.
Scenario: Premium user posts a blog
Given I am logged in as a premium user
When I create a new blog post
Then I can publish up to five free blogs
Scenario: Non-premium user attempts to post a blog
Given I am logged in as a non-premium user
When I try to publish a blog
Then I cannot publish any free blogs
This example clearly states the user roles, actions, and expected outcomes. It is easy for developers to implement, testers to verify, and business to understand.
Common pitfalls to avoid
- Writing acceptance criteria as a checklist of technical tasks rather than user outcomes.
- Leaving acceptance criteria vague or incomplete.
- Skipping acceptance criteria to save time, leading to confusion later.
- Writing acceptance criteria that describe implementation instead of behavior.
- Treating acceptance criteria as optional or secondary to user stories.
Avoid these mistakes to keep your delivery predictable and aligned.
Extending Gherkin for product management
Talvinder experimented with extending Gherkin to cover product management gaps, creating a framework called "Carrot." While Gherkin works well for QA and developers, product teams sometimes need additional structure to capture success criteria, metrics, and context.
Carrot introduces keywords like Feature title, Background, Problem, Solution, User Stories, Success Criteria, and Acceptance Criteria in a source-controlled text format.
This approach encourages breaking down products into features, writing detailed acceptance criteria, and collaborating efficiently across teams.
How acceptance criteria fit in the bigger picture
Acceptance criteria are part of a well-structured Product Requirements Document (PRD). They define the "definition of done" for user stories, complementing:
- Business rules and policies
- UX/UI requirements
- API and technical constraints
- Metrics and analytics tracking
Talvinder recommends using frameworks like BEAM (Business rules, Experience, API, Metrics) to ensure comprehensive acceptance criteria.
Embedding acceptance criteria into your workflow
- Write acceptance criteria before development starts.
- Review acceptance criteria with engineering and QA to ensure clarity.
- Use Gherkin to automate acceptance tests where possible.
- Update acceptance criteria as requirements evolve.
- Use acceptance criteria as a communication tool with stakeholders.
Supporting media
Test yourself: Writing acceptance criteria for a login feature
You are PM at a Series B Indian fintech startup. The engineering team is about to start work on the login feature. You need to write acceptance criteria that ensure the feature meets user needs and is testable.
The call: Write acceptance criteria in Given-When-Then format that cover normal login, invalid credentials, and password reset.
Your reasoning:
Where to go next
- Learn how to write effective user stories: User Stories and Backlogs
- Explore Behavior Driven Development in depth: Behavior Driven Development (BDD)
- Master product requirements documentation: Writing Product Requirements Documents
- Improve collaboration with engineering and QA: Cross-functional Team Communication
- Understand automated testing basics: Automated Testing for PMs