Pro feature
This needs the Pro plan or higher. Compare plans →
Requests
Invitations, reminders & expiry
Delivering the link, chasing the people who go quiet, and deciding when a request stops being worth waiting for.
Two ways to deliver a link
Every request comes back with a url. You can send it yourself — in your own email, a Slack message, an SMS — or ask
formbase to email it. Sending it yourself works on every plan. Letting formbase send invitations and reminders requires a
Pro or Business plan; a Free account can have formbase email its first 10 invitations to try it (see
free invitations).
The request invitation
Create a request with delivery: “email” and a recipient email address, and formbase sends the
request invitation: a short email carrying a button that opens the request link.
You author it once per form, not once per request. In the editor, open Settings → E-mail Notifications and scroll to the Requests group at the bottom:
| Field | What it is |
|---|---|
| From | noreply@formbase.so, or your own address once you set up a custom email domain and pick it for the form. |
| To | Fixed: the request recipient, set by the automation on each request. |
| Subject | Optional. Left empty, formbase sends "We need a few things from you". Mentions are allowed. |
| Body | Optional. Left empty, formbase 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. |
There is no free-text message from the caller — an automation cannot inject a paragraph into this email. What it can do is supply values: mention a context field or a prefilled field in the subject or body and each recipient gets their own version. That keeps the copy under your control while still reading as if it were written for them.
Translate it
If the form has published languages, the invitation follows the request’s language. Translate the email copy alongside the
rest of the form — see Translating form content.
Delivery status
| Status | Meaning |
|---|---|
| not_requested | The request was created with delivery "none" — you are delivering the link. |
| queued | Accepted and waiting to be sent. |
| sent | Handed to the email provider. |
| failed | formbase could not send it. See Troubleshooting. |
| bounced | The provider reported a hard bounce or a complaint for that address. |
The invitation is sent at most once. It is queued, and dropped unsent if the request ends before the queue reaches it — nobody is invited to a dead link.
If it never arrived, send a reminder.
requests.remindcarries the same link and counts against the eight-reminder cap. On Free, where reminders aren’t available, copy the request’s link and send it yourself.- Invitations and reminders share a budget of 10 emails per day per form and recipient address.
Reminders
A reminder schedule is an ordered list of idle offsets — 1 day, 3 days, 1 week — after which formbase emails someone who has gone quiet. One schedule serves two kinds of target: a public-link respondent sitting on an unfinished draft, and a request recipient who has not completed.
It lives in Settings → E-mail Notifications → Send reminders. That switch is the master: turn it off and neither channel gets the form’s schedule.
| Setting | What it does |
|---|---|
| Send reminders | The master switch for both channels. Pro or Business. |
| Reminder schedule | Up to five steps, chosen from 12 hours, 1 day, 3 days, 1 week, and 2 weeks. |
| Public-link drafts | A shaded block with two pickers. To: the field that holds the address a draft gets written to. Wait for: a draft is chased once the To field and every field you pick here are filled in. Request reminders skip this block and always go to the request recipient. |
| Subject and body | One reminder email, shared by both channels. Mentions are allowed. |
How the schedule runs
Offsets are measured from the target’s last activity, not from creation. A schedule of 1 day then 3 days means “one day idle, then three days idle”.
New activity restarts it. If the recipient opens the request and answers something, the clock goes back to the first step.
It stops on its own once the request is completed, expired, or canceled.
A sweep runs every 15 minutes, so a reminder lands within a quarter of an hour of the step falling due, not to the second. A schedule that fell far behind is not fired as a burst: the gap you put between two steps is honoured.
Eight reminders is the hard ceiling for one request, scheduled and manual together. Activity can restart a schedule forever; this is what stops that becoming a loop.
Overriding per request
An automation can pass its own reminders when creating a request — [“2d”,“5d”] for a schedule of its own, or an
empty list to switch reminders off for that one request. An explicit schedule wins even over the form’s master switch, because a caller
that passed one asked for reminders on this request specifically.
Leave reminders out and the request inherits the form’s schedule, if the master switch is on and the request has a recipient
address.
Chasing someone now
You do not have to wait for the next step. Send reminder in the request drawer — or requests.remind from an
automation — queues one immediately. The automatic schedule is untouched: the next scheduled reminder still lands when it was going to.
Two floors apply: at least ten minutes between manual reminders, and the same overall ceiling of eight per request.
Expiry
Every request has a hard end. When it passes, the link stops working, the status becomes expired, and your automation is told through the callback — so a workflow that has been parked for a month resumes instead of hanging forever.
Default: 30 days after creation.
Maximum: 365 days. Pass
expiresAtas a millisecond timestamp to set your own.- After expiry the link shows the outcome page — a plain notice, never the form.
A sweep flips lapsed requests every 15 minutes, so the status and the callback follow
expiresAtwithin a quarter of an hour. The link itself stops opening the moment the expiry passes.
{
"method": "requests.create",
"params": {
"formId": "j57...",
"recipient": { "email": "ada@acme.com", "name": "Ada" },
"delivery": "email",
"reminders": ["1d", "3d"],
"expiresAt": 1795392000000,
"callbackUrl": "https://automation.example/webhook/resume-abc"
}
}