# Schedule an appointment

Schedule, manage, and fulfil time-bound interactions (such as appointments, visits, or sessions). The pattern aligns with the [GovStack Scheduler building block](https://scheduler.govstack.global/) and the [GovStack messaging building block](https://messaging.govstack.global/).

Users jobs to be done:

* choose a suitable time and place for a service interaction\
  understand what options are available and why
* confirm, change, or cancel a booking when circumstances change
* receive clear confirmation and reminders

### Steps

Scheduling an appointment may be triggered:

* as part of a broader service flow
* by a notification to user&#x20;
* when user seeks out a scheduling service

{% @mermaid/diagram content="---
config:
theme: redux
layout: dagre
look: classic
-------------

flowchart LR
PH1\["Entrypoint"] --> n1\["Check elegibility"]
PH6\["Manage (view/change/cancel)"] --> PH7\["Close appointment"] & n2\["Provide additional information"]
PH6 -- Cancel booking --> CXL\["Outcome"]
CXL --> n7\["Notification"]
PH7 -- "Follow-up needed" --> n8\["Notification"]
PAY\["Payment"] --> PH5\["Check your answers and submit"]
PH5 --> n3\["Outcome <br>(and get a credential)"]
n3 --> n6\["Notification"]
n4\["Add preference or additional information"] --> PAY
PH7 --> n5\["Give feedback"]
n1 --> PH2\["Provide information"]
PH2 --> n9\["Choose from <br>available options"]
n6 --> PH6
n7 --> PH7
n9 --> n4
n8 --> n9
PH6 -- Reschedule --> n9

PH1@{ shape: rounded}
n1@{ shape: rounded}
PH6@{ shape: rounded}
PH7@{ shape: rounded}
n2@{ shape: rounded}
CXL@{ shape: rounded}
PAY@{ shape: rounded}
PH5@{ shape: rounded}
n3@{ shape: rounded}
n4@{ shape: rounded}
n5@{ shape: rounded}
PH2@{ shape: rounded}
" %}

<details>

<summary><strong>Example user flow</strong></summary>

<figure><img src="https://content.gitbook.com/content/u8moxPbFWK9pTxPYNIyh/blobs/esQBcsRNKwVZj8goGHAJ/Schedule%20an%20appointment.png" alt=""><figcaption></figcaption></figure>

</details>

## **1.** Check eligibility

Before scheduling proceeds, the service may need to determine whether the user is eligible and what constraints apply.&#x20;

Use the [check eligibility](https://specs.govstack.global/service-patterns/2.-functional-patterns/check-eligibility) functional pattern.&#x20;

Let users view availability before authentication, unless identity is required to determine valid options, enforce limits, or meet legal or privacy obligations. &#x20;

Use [matching](https://specs.govstack.global/service-patterns/3.-step-patterns/matching) where needed to link to existing records and apply constraints.

### 2. Ask for additional information (if needed)

Collect the minimum information needed to support the appointment scheduling. Information such as:&#x20;

* interaction or appointment type
* preferences affecting availability (location, mode, time range)
* accessibility or support needs
* any other inputs required to calculate availability

### 3. Select an available option

Presents valid options such as appointment date and time for the user to choose and explain constraints where necessary.

Collect additional user preferences, support requirements or contextual information linked to the booking.&#x20;

Use the [ask a question](https://specs.govstack.global/service-patterns/3.-step-patterns/ask-a-question) step pattern.

### 4. Take payment (if required)

Where required, payment is collected as a prerequisite&#x20;

Collect payment where it is a requirement to confirming the appointment booking.

Use the [payment](https://specs.govstack.global/service-patterns/2.-functional-patterns/make-a-payment) functional pattern.

### 5. Check appointment details and submit

Allows the user to review booking details, make changes and confirm submission.

Use the [check answers](https://specs.govstack.global/service-patterns/3.-step-patterns/check-answers) step pattern.

### 6. Confirm booking

Confirm that the booking has been successfully created and communicate what happens next.

Useful information to include:

* booking reference
* confirmed time, location, and mode
* next steps or instructions

### 7. Manage booking&#x20;

Allow the user to view, change, or cancel the booking.

***

<br>
