# Send requests and act on their outcome

Create a Formstep request from a Make scenario, prefill it per field, and run a scenario when the recipient completes it, it expires or is canceled.

![A Make scenario with three Formstep modules: Create a request, Get a request and Make an API call, each with a green check after a run](https://formstep.io/docs/guides/make/make-request-scenario.png)

## Before you start

You need a [Formstep connection in Make](https://formstep.io/docs/guides/make/connect/) and a published form. A request is one recipient’s copy of the form; see [Requests](https://formstep.io/docs/requests/overview/) for how they work.

## 1. Create a request

Add **Formstep** › **Create a request** and pick the **Form**. Picking it loads one input per question under **Prefill**, one per hidden field under **Context**, and the **Read-only fields** picker:

![The Create a request module with the Make smoke test form picked, a Prefill input for Full name and one for Company set to Prefilled Co, and the Read-only fields picker](https://formstep.io/docs/guides/make/make-create-request-prefill.png)

A choice question takes its option key, a date takes YYYY-MM-DD.

| Field | What it does |
| - | - |
| Recipient email and name | Who the request is for. An email is needed to send the invitation and reminders. |
| Delivery | **I deliver the link myself**: the scenario sends the request link, for example by email or SMS. **Email the invitation**: Formstep emails it to the recipient. |
| External ID | Your own id, such as a ticket or order number. Running the module again with the same external ID and inputs returns the same request instead of a second one. |
| Test request | A dry run: nothing is emailed, the link opens and can be completed, and it counts nowhere. Test requests never reach a trigger. |

The module returns the request: **Request ID**, **Request link** and **Status** ( `pending`). Map the link into your email or message module when you deliver it yourself.

## 2. Act when the recipient answers

In a second scenario, add **Formstep** › **Watch requests**. Under **Webhook**, click **Create a webhook**, pick the **Form** and the **Event**:

| Event | Fires when | Carries |
| - | - | - |
| Request completed | The recipient submits the request. | The request, the answers and the submission. |
| Request expired | The request reaches its expiry date unanswered. | The request. |
| Request canceled | Someone cancels the request. | The request, with the reason. |

![A Watch requests bundle for request.completed: Data › Answers lists Company and Full name, Answers (display) lists the same questions, then Form, Request and Submission](https://formstep.io/docs/guides/make/make-watch-requests-bundle.png)

Answers and Answers (display) list each question by its title, the same as in Watch public link submissions.

**Data › Request** holds the request’s id, your external ID, its status, the recipient and, with a [Decision question](https://formstep.io/docs/requests/decisions-and-approvals/), the **outcome**: `approve`, `decline` or `changes`. Add a filter on it to branch on the verdict. Test requests never reach this trigger.

## 3. Look up and manage requests

| Module | Use it to |
| - | - |
| Get a request | Read one request by its id: status, outcome, timeline, and the answers once it is completed. Pick the form so the answers map by question. |
| Search requests | List a form's requests, newest first, by status or external ID. |
| Cancel a request | Withdraw a pending request, with an optional reason. Its link stops working. |
| Remind a request | Email the recipient a reminder now. Needs a recipient email and Pro or Business; see [Invitations, reminders and expiry](https://formstep.io/docs/requests/invitations-and-reminders/). |
| Make an API call | Call any other method of the [Formstep API](https://formstep.io/docs/developers/rest-api/) with the same connection. |

> **When a module fails**
>
> The error message says why in words, for example that the request is already canceled. Reminding too soon after the last reminder, or canceling a request that is no longer pending, fails the same way. Add an error handler to the module to route these cases.

## Next steps

[Field keys](https://formstep.io/docs/requests/field-keys/) — The short names your scenarios prefill and read answers by

[Invitations, reminders & expiry](https://formstep.io/docs/requests/invitations-and-reminders/) — Email the link, chase people who go quiet, close stale requests
