# Formstep Docs — Requests

# Requests overview

A request sends a form to one named person, with what you already know filled in. See how it differs from the public link and what happens after you send it.

## What a request is

A form is the design you build once. A request sends it to one person, with their own link and their own answers filled in. You see whether they have opened it and answered, Formstep can remind them, and the answers come back to you, or to the workflow that sent it.

![A request open in the recipient's browser: their name filled in and locked with the note Filled in by the sender, their email filled in, and the rest of the form left for them to answer.](https://formstep.io/docs/images/requests/recipient-prefilled.png)

What the recipient sees: their answers filled in, some locked.

| | Public link | Request |
| - | - | - |
| Who answers | Anyone with the link | One person you name |
| How many answers | Any number | One |
| Filled in for them | Nothing, or the same for everyone | Their own answers, some locked |
| You can follow up | No | Yes: see who answered and remind them |

Any published form can be sent as a request, and the same form can have a [public link](https://formstep.io/docs/sharing-publishing/overview/) too.

## What happens after you send it

1. [They get their link](https://formstep.io/docs/requests/invitations-and-reminders/) — In an invitation email from Formstep or from you. They can open it as often as they like, on any device.

2. **They see your form** In your brand and their language, with their answers filled in.

3. [They submit](https://formstep.io/docs/requests/managing-requests/) — The answers land in the form's inbox and on the Requests page, and the workflow that sent the request is told.

If they do not answer, reminders follow up, and the request expires after 30 days unless you choose otherwise. You can see where each request stands on the [Requests page](https://formstep.io/docs/requests/managing-requests/).

## Pages in this section

- [Send a request](https://formstep.io/docs/requests/creating-requests/) — Send a published form to one person from the New request sheet, with the answers you already know filled in and locked where they may only confirm.

- [Bulk send](https://formstep.io/docs/requests/bulk-send/) — Send one form to a whole list at once on Pro and Business: type, paste, upload a CSV or pick HubSpot contacts, and each person gets their own request.

- [Field keys](https://formstep.io/docs/requests/field-keys/) — The short names Zapier, Make, n8n, AI agents and your own code use for the fields of a form: where to find them, and how to keep them stable.

- [Decisions & approvals](https://formstep.io/docs/requests/decisions-and-approvals/) — Ask for a yes, a no or a request for changes, and let your workflow act on the answer.

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

- [The Requests page](https://formstep.io/docs/requests/managing-requests/) — See everything you are waiting on, follow one request through its timeline, and act on it.

- [Troubleshooting requests](https://formstep.io/docs/requests/troubleshooting/) — An invitation that never arrived, a link that shows a notice instead of the form, a workflow that was not told, or one that stopped matching after an edit.

# Send a request

Send a published form to one person from the New request sheet, with the answers you already know filled in and locked where they may only confirm.

## Send one by hand

1. **Open the New request sheet**

   Open a published form and click **New request**, the paper plane icon at the top right of the form page.

2. **Say who it is for**

   Under _Who is it for?_, enter their email and name. The email is needed even if you will send the link yourself.

3. **Fill in what you know**

   Under _What they see_, fill in the answers you already have. Click **Lock** on any answer they may only confirm.

4. **Choose Email or Link**

   **Email** has Formstep send the invitation, on Pro and Business. On Free, your first [10 invitations](https://formstep.io/docs/subscription-billing/limits-quotas/#free-invitations) go to your own address only. **Link** emails nothing and gives you the link to send however you like.

5. **Send it**

   Click **Send invitation** or **Create link**. The request appears on the [Requests page](https://formstep.io/docs/requests/managing-requests/).

![The New request sheet with a recipient, two prefilled answers, one of them locked, and Email or Link beside Send invitation](https://formstep.io/docs/images/requests/request-sheet.png)

The New request sheet: who it is for, what they see, and how it reaches them.

Under **Callback and options** you can change when the request expires (30 days unless you set 1 to 365) and add an **External id**, your own reference such as a CRM record. To send the same form to a list of people, see [Bulk send](https://formstep.io/docs/requests/bulk-send/).

## Prefill, locked fields and hidden fields

A request can carry three kinds of values for one person.

| Value | Use it for | The recipient |
| - | - | - |
| Prefill | Answers you already know, such as their company name | Sees it and can change it |
| Locked field | Facts they only confirm, such as a contract number | Sees it and cannot change it |
| Hidden field | Values the form needs but does not ask, such as a case number | Cannot change it, and sees it only where you show it |

### Prefill

Prefilled answers save the recipient typing: they check and correct instead. Formstep does not look the values up for you. Fill them in by hand, or let your workflow look them up first, for example in [HubSpot](https://formstep.io/docs/integrations/hubspot/#requests).

### Locked fields

A locked answer is shown but cannot be changed. Locking applies to this one request, not to the form. A locked answer needs a value, or the recipient could never submit.

### Hidden fields

Values for the form’s [hidden fields](https://formstep.io/docs/building-forms/hidden-fields/), such as a case number or an amount. Logic, calculated fields and email text can use them, and they come back unchanged with the answers. They are not secret: the recipient sees a value wherever you [mention](https://formstep.io/docs/building-forms/answer-piping/) it in the form or the invitation.

Repeating groups, multi-select questions, matrices and files can only be filled in from a workflow. The sheet says how many such fields the form has.

## Try it on yourself first

**Try it yourself**, at the bottom of the sheet, creates a test request from what you filled in and gives you its link. Answer it as the recipient would. A test request emails nobody, does not count toward your monthly allowance, and expires after a day. On Free you can make 10 a day. Its answers stay out of the inbox, stats, exports and integrations. To find it on the Requests page, open **Filter** and tick **Show test requests**.

## What the recipient sees

Your form, in your theme and their language, with their answers filled in and locked answers read-only. There is no captcha and no sign-in. A request has no message of its own, so put what they need to know in the form. A [mention](https://formstep.io/docs/building-forms/answer-piping/) of a prefilled or hidden value makes it personal.

![A request opened by the recipient: their name filled in and locked, with the note 'Filled in by the sender.', and their email filled in](https://formstep.io/docs/images/requests/recipient-prefilled.png)

The recipient opens your form with the prefilled answers in place.

## Send requests from a workflow

Zapier, Make, n8n, an AI agent or your own code can create the same request, with the same prefill, locks and hidden fields. Fill in the sheet once, then open the **⋯** menu and choose **From an automation**: it shows the request you filled in as a ready-made call. See the [automation guides](https://formstep.io/docs/guides/overview/), or [Create requests from code](https://formstep.io/docs/developers/requests-api/) for every option.

> **What a request costs**
>
> Each request counts once toward your [monthly allowance](https://formstep.io/docs/subscription-billing/limits-quotas/) when you create it, whether or not anyone answers. Public link submissions share the same allowance.

## Next steps

[Bulk send](https://formstep.io/docs/requests/bulk-send/) — Send one form to a list of people

[Invitations, reminders & expiry](https://formstep.io/docs/requests/invitations-and-reminders/) — The email, the reminders and when a request ends

[The Requests page](https://formstep.io/docs/requests/managing-requests/) — Follow every request you sent

[Field keys](https://formstep.io/docs/requests/field-keys/) — The names a workflow uses for your fields

# Bulk send

Send one form to a whole list at once on Pro and Business: type, paste, upload a CSV or pick HubSpot contacts, and each person gets their own request.

This needs the Pro plan or higher. [Compare plans](https://formstep.io/pricing/)

## Start a list

Open your published form and click **New request**. Under **Who is it for?**, click **Add another person**, or **Import** to upload a CSV, paste a list, or find HubSpot contacts. With two or more people, the sheet shows a table. The rest of the sheet works as it does for one person.

![The New request sheet with five people in a table with Company name and case\_id columns, Everyone and Need a fix tabs with Import and Columns above it, one address outlined red, Add person under it, and Email or Link beside Create 4 links in the footer](https://formstep.io/docs/images/requests/bulk-send-table.png)

A send to several people: everyone in one table, the row that needs a fix outlined red and counted in Need a fix, and Send counting only the rows that can go.

## Add people

You can mix these sources in one list:

| Source | How |
| - | - |
| Type | Click Add person under the table, then type the name and the email address into the new row. |
| Paste | Paste one person per line into any Name or Email cell, or into Paste a list in Import. Columns copied from a spreadsheet work too. |
| Upload CSV | Pick a CSV whose first row names the columns: email (required), name, and any of the form's field keys. Download CSV template, in Import, downloads exactly those headers. |
| HubSpot | In Import, choose Find in HubSpot, search the workspace's HubSpot account by name or email, tick the ones you want and click Add. Contacts already in the table show as Added. |

A CSV column named after a field key fills that field for each person. A choice column takes the option’s key or label, a switch column `true` or `false`. Columns that match no field are ignored and listed under the table. Commas, semicolons, and tabs all work as separators.

A HubSpot contact adds only an email address and a name. See [HubSpot and requests](https://formstep.io/docs/integrations/hubspot/#requests).

## Columns and what everyone shares

Each field is either a **column**, with a value per person, or the same for everyone. A CSV makes its fields columns. To choose yourself, click **Columns** above the table.

Fields that are not columns appear under **What they see**, with one value for everyone. A lock applies to every person, so a locked column needs a value in every row.

## Rows that need a fix

The table checks every row and outlines a bad cell in red. Hover it to see why. Rows with a red cell are not sent; **Need a fix**, above the table, counts and lists them. Edit the cell to fix it.

| Red cell | Why |
| - | - |
| Email | No address, an address that is not one, or a second row for an address already in the list. |
| A number column | A value that is not a number. |
| A choice column | A value that is neither an option's key nor its label. |
| A locked column | An empty cell: the person could never fill it in. |

## Send

1. **Pick the delivery**

   **Email** sends each person their link and reminders. **Link** emails nobody and gives you the links.

2. **Click Send**

   The button shows the count, such as **Send 20 invitations**. From 20 invitations on, Formstep asks you to confirm first.

3. **Read the receipt**

   The receipt shows how many went out. **Download links** saves a CSV with each person's link. **Open in Requests** shows the send.

People who were sent leave the table. Anyone not sent stays, with the reason, so you can fix it and send again. To check what people will get first, click **Try it yourself**: it sends a test request to you, built from the first row.

## In Requests

Each person’s request is an ordinary request: you can remind, cancel, or delete one without touching the others. On the [Requests page](https://formstep.io/docs/requests/managing-requests/), a send shows under one heading, such as _Sent to 4 people_. Click it, or pick the send under **Filter**, **Sent together**, to see only that send.

## Limits

| Limit | What happens |
| - | - |
| 500 people per send | The table stops adding people at 500 and says so. |
| Monthly allowance | Each request spends one unit, like any request. When the allowance runs out partway, the send stops there and the rest stay in the table. |
| Invitations per hour | Formstep emails at most 200 invitations an hour per account, 30 in its first 7 days. A larger send emails as far as it can; the rest stay in the table to send later, or as links. |
| Plan | Pro and Business. On Free, the sheet sends to one person at a time. |

A workflow sends to a list by creating one request per person. See the [automation guides](https://formstep.io/docs/guides/overview/).

## Next steps

[Send a request](https://formstep.io/docs/requests/creating-requests/) — Prefill, locked fields and hidden fields, one person at a time

[The Requests page](https://formstep.io/docs/requests/managing-requests/) — Follow every request, filter by send, remind and cancel

# Field keys

The short names Zapier, Make, n8n, AI agents and your own code use for the fields of a form: where to find them, and how to keep them stable.

## What they are for

When Zapier, Make, n8n, an AI agent or your own code fills in a request or reads the answers, it names each field by its key. A question titled “Company name” gets the key `company_name`. You only need to care about keys if a workflow uses your form.

## Where to find them

![The Fields tab of the editor's side panel with three sections: Questions listing Company name, Company website and Work email with their type icons and keys, Hidden Fields with vendor\_id, and AI Validation with the two checks named by their sentences and their keys website\_check and email\_domain.](https://formstep.io/docs/images/requests/keys-table.png)

The Fields tab lists every key, and you can change each one in place.

In the editor, click **Fields** (the key icon) on the right edge. On a phone, it is in the top bar’s **⋯** menu. The tab lists every key: questions with their options, hidden fields, calculated fields and [AI Validations](https://formstep.io/docs/building-forms/ai-validation/). Click a field’s name to jump to it in the form.

You do not have to set anything: a key comes from the question’s title until you change it. To choose your own, type it in the Fields tab. Use letters, digits and underscores. Each key must be unique in the form. A title with no Latin letters, such as one in Arabic or Chinese, gets a key like `field_3`, so give it a readable one if a workflow reads it.

## Keys stay the same after publishing

From the first publish on, each field keeps its key:

- Rewording a question keeps the key. “Company name” renamed to “Legal entity name” is still `company_name`.

- Moving a question, or changing its type, keeps the key.

- Duplicating a question gives the copy a new key.

> **Changing a published key breaks workflows**
>
> If you type a new key on a published form, every workflow that uses the old one stops matching once you publish. Update the workflow at the same time.

## When a key is about to disappear

Deleting a question and adding a new one in its place gives the new question a new key, so workflows lose that answer. Publishing warns you first and names the field. To keep your workflows working, open the **Fields** tab and type the old key on the new field. If you removed the field on purpose, publish anyway and update the workflows.

## Option keys

Every choice of a choice question, and every row and column of a matrix, has a key of its own too, such as `pro` for the choice “Pro plan”. A workflow can check which choice was picked in any language the recipient used. Option keys come from the label, you can change them in the Fields tab, and they stay the same after publishing.

Developers: [Create requests from code](https://formstep.io/docs/developers/requests-api/) shows how keys appear in what a workflow sends and receives.

## Next steps

[Send a request](https://formstep.io/docs/requests/creating-requests/) — Prefill and lock fields for one person

[Troubleshooting requests](https://formstep.io/docs/requests/troubleshooting/) — When a workflow stops matching after an edit

# Decisions & approvals

Ask for a yes, a no or a request for changes, and let your workflow act on the answer.

## Why a special question

Every author words “yes” differently, which makes a plain choice question hard for a workflow to act on. The **Decision** question always records one of three fixed values, `approve`, `decline` or `changes`, whatever its labels say and in any language. When the recipient picks one, the request ends with that **outcome**.

## Add one to your form

1. **Add the question**

   In the editor, click **Decision** in the Blocks tab, or press **/** and pick it.

2. **Reword the labels**

   The question reads "Do you approve?" with Approve, Decline, and Request changes. Reword them as you like, for example "Sign off" or "Send back for edits".

3. **Ask why, if you need to**

   Add a long-text question after it, and use [conditional logic](https://formstep.io/docs/building-forms/conditional-logic/) to show it only for decline and changes.

4. **Publish**

   Requests sent after you publish end with an outcome.

> **Keep the three keys**
>
> Reword the labels freely, but keep all three options and their [keys](https://formstep.io/docs/requests/field-keys/#option-keys). Publishing warns you if one is missing. A Decision question inside a [repeating group](https://formstep.io/docs/building-forms/repeating-groups/) gives no outcome.

## The three values

| Value | Default label | Means |
| - | - | - |
| approve | Approve | The recipient agreed. |
| decline | Decline | They said no. The request still completes, with decline as its outcome. |
| changes | Request changes | They want something changed before they agree. Usually the cue to send a new request. |

If you add a fourth option, picking it is an ordinary answer: the request completes with no outcome.

## Where the outcome shows up

- On the [Requests page](https://formstep.io/docs/requests/managing-requests/): Approved, Declined or Changes requested on the request, and an **Outcome** filter.

- In the form’s submissions, as an ordinary answer to the Decision question.

- In what a waiting workflow receives, so Zapier, Make or n8n can take a different path for each verdict. Expired and canceled requests have no outcome.

An AI agent can add a Decision question and read the outcome too. Developers: see [Request callbacks](https://formstep.io/docs/developers/callbacks/#payload).

## Next steps

[Option keys](https://formstep.io/docs/requests/field-keys/#option-keys) — The names a workflow reads for each choice

[The Requests page](https://formstep.io/docs/requests/managing-requests/) — Filter requests by outcome

# Invitations, reminders & expiry

Let Formstep email the request link, chase people who go quiet, and close requests that go stale. Emails need Pro or Business, and expiry works on every plan.

This needs the Pro plan or higher. [Compare plans](https://formstep.io/pricing/)

On every plan you can send the request link yourself, by email, chat or text message, and every request expires. Emails from Formstep need Pro or Business; see [what Free includes](https://formstep.io/docs/subscription-billing/limits-quotas/#free-invitations).

## The request invitation

Choose **Email** in the New request sheet, and Formstep sends the **request invitation**: a short email with a button that opens the request. A workflow can ask for the same email.

You write it once per form. Open **Settings**, the **Emails** tab, and scroll to **Requests** at the bottom:

| Field | What it is |
| - | - |
| From | noreply\@formstep.io, or your own address once you set up a custom email domain and pick it for the form. |
| Subject | Optional. Left empty, Formstep sends "We need a few things from you". Mentions are allowed. |
| Body | Optional. Left empty, Formstep sends its built-in message; Preview shows exactly what goes out. Mentions are allowed. |
| Button | Labelled Open request; it carries the request link. Always present, not editable. |

To personalise the email, mention a prefilled answer or a hidden field in the subject or body. If the form has more languages, the email uses the request’s language; [translate the email text](https://formstep.io/docs/building-forms/translating-form-content/) with the rest of the form.

- The invitation is sent once. If the request ends before it goes out, it is not sent.

- If it never arrived, see [Troubleshooting](https://formstep.io/docs/requests/troubleshooting/#invitation-problems).

- One recipient address gets at most 10 emails a day per form, invitations and reminders together.

## Reminders

A reminder schedule emails someone who has gone quiet, for example 1 day, 3 days and 1 week after their last saved answer. It reminds request recipients who have not submitted, and people who left an unfinished draft on a share link. Turn it on in **Settings**, **Emails**, **Send reminders**.

| Setting | What it does |
| - | - |
| Send reminders | Turns reminders on for requests and public-link drafts. |
| Reminder schedule | Up to five steps, chosen from 12 hours, 1 day, 3 days, 1 week, and 2 weeks. |
| Public-link drafts | To: the question that holds the respondent's email address. Wait for: remind only once these questions are answered. Requests ignore these and always remind the recipient. |
| Subject and body | One reminder email for both. Mentions are allowed. |

### How the schedule runs

- Each step counts from the last answer the recipient saved, or from when the request was created if they have saved nothing. Every saved answer starts the schedule over. Opening the link does not, so a mail scanner that opens it cannot reset it.

- Reminders stop when the request is completed, expired, or canceled.

- Reminders go out within 15 minutes of the step’s time.

- One request gets at most 8 reminders, automatic and manual together.

### A different schedule for one request

A workflow can give one request its own reminder schedule, or none, even when **Send reminders** is off. Otherwise the request uses the form’s schedule.

### Chasing someone now

Click **Send reminder** on the request page to send one now. The schedule carries on as before. Leave at least 10 minutes between manual reminders.

## Expiry

When a request expires, the link shows a short notice instead of the form, the status becomes **Expired**, and a waiting workflow is told.

- Default: **30 days** after creation. Maximum: **365 days**.

- Set it in the New request sheet under **Callback and options**, **Expires in (days)**.

- The link stops working right away; the status and callback follow within 15 minutes.

For an overview of what reminders do and what they cost, see [Form reminders](https://formstep.io/form-reminders/) on formstep.io.

## Next steps

[Send emails from your domain](https://formstep.io/docs/branding-domains/custom-domains/#custom-email-domains) — Invitations and reminders from your own address

[Troubleshooting requests](https://formstep.io/docs/requests/troubleshooting/) — When an invitation never arrived

# The Requests page

See everything you are waiting on, follow one request through its timeline, and act on it. Send a reminder, cancel it, replay its callback, or delete it.

## The list

Click **Requests** in the sidebar. Each row shows the recipient, the form, and where the request stands, such as “Not opened · sent 2 hr. ago”. Click a row to open the request beside the list, and press `↑` or `↓` to move between rows. On a narrow screen the request opens on its own page.

![The Requests page: the list on the left, a send of four people under its heading and two single requests, and Sara Lindqvist's request open beside it](https://formstep.io/docs/images/requests/requests-page.png)

The Requests page: every request in the workspace, with the one you picked beside the list.

| You see | It means |
| - | - |
| Not opened | The link has never been opened. The detail line shows reminders sent, or how soon it expires. |
| Opened | They opened the link but have not answered anything yet. |
| In progress | They have started answering. The detail line shows how many questions are answered. |
| Completed / Expired / Canceled | The request has ended, on the date shown. A completed request cannot be answered again. An expired or canceled one is deleted 30 days after it ended. |
| Callback failed | A red badge: the request ended, but the workflow waiting for it could not be told. See below. |
| Test | A grey badge: a test request, so nothing was emailed and its answers count nowhere. |

- **Search** finds a recipient’s name or email, or your external id.

- **Sort** by Created, Last activity, or Name.

- **Filter** by status, [outcome](https://formstep.io/docs/requests/decisions-and-approvals/), form, send, or **Callback failed**. Tick **Show test requests** to see test requests.

The requests of one [bulk send](https://formstep.io/docs/requests/bulk-send/) are grouped under one heading. Click it to see only that send.

## One form’s requests

Open a published form and pick the **Requests** tab at the top. The list works like the Requests page, for this form only.

![A form page on its Requests tab: the Overview strip open with Pending, Completed, Time to complete, Time to open, Invitations sent, and Expired or canceled, and a few requests listed below](https://formstep.io/docs/images/requests/requests-overview.png)

The form page's Requests tab: the Overview strip for the selected period, then this form's requests.

### The Overview strip

The **Overview** strip shows six figures for the requests created in the chosen period, the last 30 days by default. Click its header to fold it. It works on every plan.

| Figure | What it means |
| - | - |
| Pending | Requests sent and not answered yet. Test requests are left out. |
| Completed | The share of requests created in the range that were completed, with "X of Y" beneath it. |
| Time to complete | Median time between creating a request and the recipient completing it. |
| Time to open | Median time between creating a request and the recipient first opening its link. |
| Invitations sent | Invitation emails sent, out of the requests set to be emailed. It does not confirm they reached the inbox. |
| Expired or canceled | Requests that expired, or were canceled, before the recipient completed them. |

## One request in detail

Each request has its own address, so you can bookmark it or share it with a colleague. The heading shows the recipient, where the request stands, their email, the language, who sent it and when, and when it expires.

![A completed request: the answers listed with their field keys on the left, the form and timeline on the right](https://formstep.io/docs/images/requests/request-page-detail.png)

A completed request's page.

### Answers

Every field of the form, with its field key and answer. **Prefilled** marks values you sent, and a lock marks the ones the recipient could not change. While the request is pending, you see what you prefilled and _Not answered yet_ for the rest. On Pro and Business, you also see the answers the recipient has saved so far.

[AI Validation](https://formstep.io/docs/building-forms/ai-validation/) results show after the answers they checked: **Passed**, **Needs review** with a reason, or **Not checked**. **Translate** shows a completed request’s answers in your workspace language.

### Form, timeline and callback

Beside the answers, **Preview** shows the form as the recipient sees it, **Go to form** opens the form’s page, and **Download** saves a completed request as a PDF. The timeline lists everything that happened, newest first, with failures in red. Email and callback entries leave the timeline after 30 days, while created, opened and completed stay. If a workflow is waiting on the request, the Callback section shows [whether it was told](#callback).

### What you can do

- **Send reminder** emails a pending request’s recipient now, on Pro and Business. The reminder schedule carries on as before.

- **Cancel request**, in the **⋯** menu, withdraws a pending request. The link stops working, and a waiting workflow is told.

- **Copy link** copies the recipient’s link, so you can send it another way.

- **Delete request**, in the **⋯** menu, erases the request. See below.

### When a workflow is waiting

A request sent by Zapier, Make, n8n, an AI agent or your own code can ask to be told when it ends. When the recipient submits, or the request expires or is canceled, Formstep sends the outcome and the answers to that workflow. This message is the _callback_, and the request’s **Callback** section shows whether it arrived.

If the workflow could not be reached, Formstep keeps trying for a few hours. If it still fails, the request gets a **Callback failed** badge and the workspace owner gets an email. Once the workflow is fixed, click **Replay** to send it again. Developers: see [Request callbacks](https://formstep.io/docs/developers/callbacks/).

### Deleting a request

Deleting cannot be undone. It removes the request with its answers, files, documents, and history. The link stops working, and no callback is sent. Use it when a recipient asks you to erase their data. To stop a request and tell your workflow, cancel it instead.

Formstep also deletes requests on its own: an expired or canceled request without answers [30 days after it ended](https://formstep.io/docs/submissions-analytics/submission-retention/#unanswered-requests), and ended requests once the form’s [retention window](https://formstep.io/docs/submissions-analytics/submission-retention/#retention-and-requests) passes.

## Next steps

[Troubleshooting requests](https://formstep.io/docs/requests/troubleshooting/) — What to do when something failed

[Invitations, reminders & expiry](https://formstep.io/docs/requests/invitations-and-reminders/) — Set the schedule these actions work with

# Troubleshooting requests

An invitation that never arrived, a link that shows a notice instead of the form, a workflow that was not told, or one that stopped matching after an edit.

## The invitation never arrived

Open the request on the [Requests page](https://formstep.io/docs/requests/managing-requests/) and read its timeline. The first invitation line tells you which case you are in.

| Timeline says | What it means | What to do |
| - | - | - |
| Invitation queued | Accepted and about to be sent. | Give it a minute. If it stays queued, check the request has an email address. |
| Invitation sent | The email left Formstep. | Ask the recipient to check their spam folder. Sending from your own email domain helps. |
| Invitation failed | Formstep could not send it, the address bounced, or the recipient marked it as spam. | If the address is wrong, send a new request to the right one. Otherwise copy the link and send it yourself. |
| No invitation line | The request was created with Link, so nothing was emailed. | Copy the link and send it yourself. |

Sending from [your own email domain](https://formstep.io/docs/branding-domains/custom-domains/#custom-email-domains) makes invitations more likely to reach the inbox. On Free, Formstep emails only your first 10 invitations, to your own address.

## The link shows a notice instead of the form

The request has ended: it was completed, it expired, or it was canceled. A completed request cannot be answered again. If the recipient needs another go, send a new request.

## The workflow was not told

The request page’s **Callback** section shows where Formstep tried to send the outcome and what happened. _Callback failed_ means Formstep tried for about four hours and gave up. Ask whoever runs the workflow to fix it, then click **Replay** to send it again. Developers: see [Request callbacks](https://formstep.io/docs/developers/callbacks/).

## A workflow stopped matching after an edit

An answer is missing from what the workflow receives, or it can no longer fill in a field. A published field key was changed, or its question was deleted and replaced. Type the old key on the field in the editor’s **Fields** tab and publish again. See [When a key is about to disappear](https://formstep.io/docs/requests/field-keys/#removed-keys).

Developers: see the [API error reference](https://formstep.io/docs/developers/rest-api/#error-reference) for every error a request call can return.

## Next steps

[The Requests page](https://formstep.io/docs/requests/managing-requests/) — Read a request's timeline and callback

[Invitations, reminders & expiry](https://formstep.io/docs/requests/invitations-and-reminders/) — The email, the reminders and when a request ends
