# Service Patterns

Avoid reinventing common service flows using service patterns which provide tested models of how transactional services typically work.

Service patterns operate at two levels: **functional patterns** and **step patterns**.

<figure><img src="https://content.gitbook.com/content/u8moxPbFWK9pTxPYNIyh/blobs/E3HNq4h8YJlB19isP3vi/service%20patterns.png" alt=""><figcaption></figcaption></figure>

### Functional patterns

Functional patterns describe common end-to-end service journeys, such as:

* Apply
* Register
* Request
* Make a payment
* Report
* Book

They show the typical stages of a service and how steps connect over time.

Use functional patterns to:

* Frame the overall journey
* Identify essential stages
* Avoid structural gaps

They are starting points, not rigid templates.

[2.-functional-patterns](https://specs.govstack.global/service-patterns/2.-functional-patterns "mention")

### Step patterns

Step patterns are steps that are reused across many journeys.

Examples include:

* Collect information
* Verify identity
* Upload documents
* Match records
* Calculate fees
* Send notification

Each step pattern includes guidance on purpose, content, user considerations, and technical implications.

Use step patterns to help you:

* Design consistent interactions
* Align with building blocks
* Reduce common usability errors

[3.-step-patterns](https://specs.govstack.global/service-patterns/3.-step-patterns "mention")

### How to use service patterns

Service patterns support the [GovStack Implementation Playbook](https://app.gitbook.com/s/DLeKag4x9xUV26hiPlNo/implementation/design-service/2-designing-the-future-service-to-be).

You can use them to:

* Compare your **as-is** service against common structures
* Assemble and adapt a **to-be** journey
* Prototype faster with fewer unknowns
* Align service design with architecture

Patterns do not replace research or testing. They accelerate it.

Start with a functional pattern, select the relevant step patterns, adapt them to your context, and validate through user testing.
