Schedule reminder emails

Sometimes an approval sits untouched because the approver's first email got buried. A scheduled reminder email nudges them automatically: if a submission is still waiting on a step after a delay you choose (minutes, hours, or days), Droplet sends a follow-up. This guide walks you through the setup step by step. It lives in the Code Builder, but you do not need to be a programmer; every block you need is here to copy and paste.

Schedule reminder emails

How it works

A scheduled reminder has two halves, and they live on the same workflow step:

  • The schedule lives in the Workflow tab. It says when to send: for example, three days after the submission arrives on the step.

  • The email lives in the Notifications tab. It is the subject and body of the reminder itself.

The two halves are joined by a shared ID that you choose, such as supervisorReminder. The schedule points at the email by that ID, and Droplet checks the pairing when you save, so it will tell you if the two sides do not match.

The reminder goes to the person the step is assigned to. If they complete the step before the delay is up, there is nothing left to remind them about; reminders only matter while the submission is still sitting on the step.

Reminders are set per step. If your workflow has three approval steps and you want reminders on all three, repeat this setup on each one.

Before you start

  • Work in a draft. Open the form in the builder and create a new draft if you are viewing a published version. Nothing you change takes effect until you publish, so you can set this up safely and review it first. If you are new to the builder, start with Create and edit a form and Configure workflows.

  • Know your step's name. Every workflow step has a short internal name such as step1 or supervisor. You will see it in the Code Builder; it is the label each block of settings sits under.

  • Copy the blocks exactly. The Code Builder speaks JSON, a structured text format that is picky about commas, quotes, and brackets. That sounds scarier than it is: paste the examples from this article and change only the words inside the quotation marks. If something is off, Droplet shows you an error when you save instead of accepting a broken form.

Step 1: Open the Code Builder

1
Open the three-dot menu

With your form open in the builder, click the menu at the top right of the screen.

2
Choose Code Builder

Select Code Builder at the bottom of the menu. The visual builder switches to a code view with tabs along the top: Form, Workflow, Visibility, Notifications, and more. To switch back at any time, open the same menu and choose Visual Builder.

The form builder three-dot menu open, with Code Builder highlighted at the bottom
Code Builder lives at the bottom of the form builder's three-dot menu.

Step 2: Add the schedule to the workflow step

Click the Workflow tab. You will see your steps listed by name inside "steps", and each step has an "onEnter" section that describes what happens the moment a submission arrives on it. This is where the schedule goes.

Find the step you want to add a reminder to, and add a scheduledActions block inside its "onEnter", right after the existing "assign" block (add a comma after assign's closing brace first):

"scheduledActions": [
  {
    "type": "remind",
    "when": { "interval": 3, "unit": "day" },
    "notificationTemplateId": "supervisorReminder"
  }
]

Here is what each part means, in plain words:

SettingWhat it does
"type": "remind"Tells Droplet this scheduled action is a reminder email. Leave it exactly as written.
"when"How long to wait after the submission enters the step. { "interval": 3, "unit": "day" } means three days. Change the number and the unit to suit.
"notificationTemplateId"The ID that joins the schedule to the email you will write in Step 3. Pick something descriptive; you will type the same ID there.
The Code Builder Workflow tab showing a scheduledActions block inside a step's onEnter section
The schedule in place: a scheduledActions block inside the supervisor step's onEnter, next to the step's assign settings. This example also includes the optional repeating setting.

Choosing the timing

For the first send, the unit in when can be "minute", "hour", or "day". Always write it in the singular, even when the interval is more than one:

You wantWrite
30 minutes{ "interval": 30, "unit": "minute" }
12 hours{ "interval": 12, "unit": "hour" }
3 days{ "interval": 3, "unit": "day" }
2 weeks{ "interval": 14, "unit": "day" }

Days are the largest unit for the first send, so write longer waits in days: 14 days for two weeks, 30 days for a month. If you try a unit Droplet does not accept, the save fails with a clear message listing the allowed values. The shortest allowed delay is 5 minutes; anything lower is raised to 5 minutes automatically.

Optional: repeat the reminder

One nudge is often enough, but for long-running approvals you can keep reminding on a cycle. Add a repeating line to the same block:

"scheduledActions": [
  {
    "type": "remind",
    "when": { "interval": 3, "unit": "day" },
    "repeating": { "interval": 7, "unit": "day" },
    "notificationTemplateId": "supervisorReminder"
  }
]

This sends the first reminder after three days, then repeats it every seven days for as long as the submission is still waiting on the step. Choose a repeat cycle you would be comfortable receiving yourself; weekly is a good default.

The repeat cycle accepts a wider set of units than the first send: "minute", "hour", "day", "week", or "month", still written in the singular.

Step 3: Write the reminder email

Now click the Notifications tab. This tab holds the emails each step sends, grouped under the step's name. Add a reminder entry for your step, using the same step name as in the Workflow tab and the same ID you chose in Step 2:

{
  "supervisor": {
    "onEnter": [
      {
        "id": "supervisorReminder",
        "type": "remind",
        "template": {
          "subject": "Reminder: a field trip request needs your review",
          "body": "<p>Hi ##recipientFirstName##, this is a friendly reminder that a field trip request is still waiting for your review.</p><p><a href='##notificationUrl##'>Open the request</a></p>"
        }
      }
    ]
  }
}
The Code Builder Notifications tab showing a remind notification with an id, type, and template
The reminder email in the Notifications tab. The id matches the notificationTemplateId from the Workflow tab, and the body links the reader back to the submission.

Three things to check as you adapt this:

  • The id must match the notificationTemplateId from Step 2, exactly, including capitalization. This is the thread that ties the two halves together.

  • Keep "type": "remind" on the notification too. It marks this entry as the reminder email rather than a normal step notification.

  • Always include ##notificationUrl## in the body. It becomes a working link that takes the recipient straight to the submission. Without it the reminder tells someone they have work waiting but gives them no way to get there, and Droplet will warn you about the missing link when you save.

Reminder templates use ##notificationUrl## for the link. The ##assignmentUrl## token you may know from assignment notifications is not available here, and Droplet will flag it as nonexistent if you use it.

The body accepts the same HTML and dynamic tokens as other notifications, so you can personalize with ##recipientFirstName##, pull in form values by their field ID (for example ##requestTitle##), and style the email however you like. See Workflow notifications for the full token list and a polished HTML email template you can reuse.

If the step already has notifications under "onEnter", such as a customized assignment email, do not replace them. Just add the reminder as one more entry in the array, separated by a comma.

Step 4: Save and check your work

Click Save at the top right. Droplet validates both tabs together, and this safety net is the best part of doing the setup in code:

  • If everything lines up, the button returns to Publish with no messages. You are ready to test.

  • If something is off, a panel opens on the right listing errors (which block the save) and warnings (which do not). Fix what it points at and save again.

The messages you are most likely to meet, and what they mean:

MessageWhat it meansFix
Action points to a notification that does not exist of type "remind"...The schedule's notificationTemplateId has no matching email. Either Step 3 is missing, or the two IDs differ.Make the notification's id match the schedule's notificationTemplateId exactly, on the same step.
...does not reference a notification URL...Your email body has no link back to the submission, so the recipient gets a nudge with nowhere to click.Add ##notificationUrl## to the body, ideally inside a clear link or button.
...references a nonexistent "assignmentUrl"The body uses a token that reminder emails do not support.Swap ##assignmentUrl## for ##notificationUrl##.
"when.unit" does not match any of the allowed types...The timing unit is not one Droplet accepts, often a plural like "days" or a unit that is only valid on repeating.Use "minute", "hour", or "day" (singular) in when, and write longer waits in days.
Unexpected non-whitespace character / parse errorA stray comma, quote, or bracket broke the JSON.Look at the line number in the message. The most common culprits are a missing comma between entries and an extra closing brace at the end.

A complete working example

Here are both halves side by side for a step named supervisor, exactly as saved on a working form. In the Workflow tab, the step with its schedule:

"supervisor": {
  "status": "pending",
  "label": "Supervisor",
  "onEnter": {
    "assign": {
      "nameElementId": "supervisorName",
      "emailElementId": "supervisorEmail"
    },
    "scheduledActions": [
      {
        "type": "remind",
        "when": { "interval": 3, "unit": "day" },
        "repeating": { "interval": 7, "unit": "day" },
        "notificationTemplateId": "supervisorReminder"
      }
    ]
  },
  "onSubmit": [ { "target": "completed" } ],
  "onReject": [ { "target": "rejected" } ]
}

And in the Notifications tab, the matching email:

{
  "supervisor": {
    "onEnter": [
      {
        "id": "supervisorReminder",
        "type": "remind",
        "template": {
          "subject": "Reminder: a field trip request needs your review",
          "body": "<p>Hi ##recipientFirstName##, this is a friendly reminder that a field trip request is still waiting for your review.</p><p><a href='##notificationUrl##'>Open the request</a></p>"
        }
      }
    ]
  }
}

Read together: when a submission reaches the Supervisor step, it is assigned using the names on the form, and a reminder is scheduled. If the supervisor has not acted after three days, they get the email above, and again every seven days after that until they do.

Test it

Reminders do not send from Preview. To see one for real, publish the form, run a test submission through to the step, and use a short delay like { "interval": 5, "unit": "minute" } while testing. Once you have seen the email arrive and the link works, set the timing back to the real value and publish again.

Name your IDs after what they do and when they fire, such as remind-approver-3d or remind-hr-weekly. When a form has several reminders, descriptive IDs make the pairing between the two tabs much easier to follow.

  • Workflow notifications covers everything about the emails a step can send, including recipients, dynamic fields, and a branded HTML template that works nicely for reminders too.

  • Configure workflows explains steps, assignment, and routing, which is useful background for knowing where a reminder belongs.

Would you rather not touch the code at all? Contact the Droplet support team with the step name, the delay you want, and the wording of the email, and we will set the reminder up with you.

Last reviewed by Nick Duell and published on July 8, 2026 5PM ET