Clients/Form reminders & the check-in worklist
updated 2026-07-12
Clients

Form reminders & the check-in worklist

Automatic escalating reminders when clients miss any form — weekly check-ins, onboarding, or other forms — plus a worklist to track every one by state.

Whenever you ask a client to fill in a form — a weekly check-in, an onboarding questionnaire, or any other form you assign — you want them to submit on time, and if they miss it, you need to know. Protocol automates the reminding for every one of these and gives you a single place to track its state.

Reminders apply to all three kinds of form to-do by default. The rest of this page says “check-in” for short, but the same ladder, worklist, and settings cover onboarding and other forms too.

How it works: the escalation ladder

When you enable check-in reminders for your clients, each missed check-in triggers an escalating sequence. The steps are yours to configure — decide how many hours between reminders, how many reminders before it’s “fully missed,” and which channels (push and/or email) deliver each one.

Pre-reminder 24h before (optional) Check-in due Client gets push + to-do Missed 1st Reminder 1 after interval Missed 2nd Reminder 2 repeat interval Fully missed After max reminders you get notified

Each step depends on your policy settings. You control the timing, number of reminders, and message text.

Check-ins escalate on your schedule: optional nudge before due, then client gets a reminder, then reminders count up, then you're alerted once it's fully missed.

Each step sends a notification:

  • Pre-reminder (optional) — sends 24 hours before the check-in is due, so the client can plan ahead. Off by default.
  • Check-in due — sends when the check-in reminder date arrives. The client gets a push notification and a to-do in their app.
  • Missed reminders — each time the interval passes and they still haven’t submitted, send another reminder (push and/or email, your choice).
  • Fully missed — once you’ve sent as many reminders as you configured, the check-in escalates to “fully missed” and you get a notification so you know to follow up directly.

At any point, if the client submits their check-in, the escalation stops — that check-in is complete and won’t send any more reminders.

Configure your policy

You set one default policy and it applies to every form (check-ins, onboarding, and other forms) for your whole roster. Open Escalation settings from the check-in worklist to tune it:

Check-in reminders policy
Enable check-in reminders
  <div style="border-top:1px solid #eef1f4; padding-top:12px; margin-top:12px;">
    <div class="wlabel">Days between reminders</div>
    <div class="winput" style="width:100px"><span style="color:#39414e">2</span></div>
  </div>

  <div>
    <div class="wlabel">Maximum reminders before fully missed</div>
    <div class="winput" style="width:100px"><span style="color:#39414e">2</span></div>
  </div>

  <div class="wfield"><span class="fl">Send pre-reminder (24h before)</span><span class="wtoggle"></span></div>

  <div style="border-top:1px solid #eef1f4; padding-top:12px; margin-top:12px;">
    <div class="wlabel">Notify via</div>
    <div style="display:flex; gap:8px; margin-top:8px">
      <div class="wchip"><span style="font-size:12px">Push notification</span></div>
      <div class="wchip"><span style="font-size:12px">Email</span></div>
    </div>
  </div>

  <div style="border-top:1px solid #eef1f4; padding-top:12px; margin-top:12px;">
    <div class="wlabel">Message text — Due reminder</div>
    <div class="winput" style="min-height:50px"><span style="color:#6b7480; font-size:12px">Hey! Your check-in is due today. Submit your progress whenever you're ready.</span></div>
  </div>

  <div>
    <div class="wlabel">Message text — Missed reminders</div>
    <div class="winput" style="min-height:50px"><span style="color:#6b7480; font-size:12px">Still waiting on your check-in. Your coach will follow up soon.</span></div>
  </div>
</div>
Set a policy once; it applies to all your clients. Pick the reminder interval, how many reminders before escalating to you, channels, and customize the message text for each step.

Key settings:

  • Enable check-in reminders — toggle on/off for all clients at once.
  • Days between reminders — how many days after a missed check-in before you send reminder 1, then reminder 2, etc. (e.g., 2 days = remind them 2 days after it was due, then 2 days after that).
  • Maximum reminders — once you’ve sent this many reminders, escalate to “fully missed” and notify you.
  • Pre-reminder — send a nudge 24 hours before the check-in is due (helps clients not forget).
  • Notify via — push notification, email, or both.
  • Message text — customize what each notification says (at the due step, and at each missed reminder step).

Once you save, the policy is live for every form — check-ins, onboarding, and other forms. Clients start receiving reminders on their next form to-do.

Override individual forms

The default is on for every form. When one form needs different handling, add a per-form override in the same settings screen — turn escalation off for that form, or give it its own interval, max misses, and reminder message. Everything you don’t set on the override inherits the default.

Per-form overrides
Monthly Feedback
48
1
🗑
Quick nudge — your monthly feedback form is waiting.
+ Add a form override…
Per-form overrides sit under the default policy. Toggle a form off, or give it its own interval, max misses, and custom reminder message. Blank fields inherit the default.

Common uses: turn escalation off for a one-time survey you don’t chase, shorten the interval on a time-sensitive onboarding form, or write a form-specific reminder message.

The check-in worklist

To see the state of every form to-do across your roster at a glance, open Clients → Check-ins (a tab on the client list). It’s a worklist organized by state — each bucket shows to-dos at that stage:

State
Client
Due
Actions
<!-- Fresh bucket -->
<div style="border-bottom:1px solid #f3f6f9; background:#f9fafb">
  <div style="padding:12px 16px; font-size:11px; font-weight:600; color:#6b7480; letter-spacing:.02em">Fresh (4)</div>
  <div style="display:flex; align-items:center; gap:12px; padding:12px 16px; border-top:1px solid #f1f3f6">
    <div style="flex:1"><span style="font-size:12px; color:#7c8593">Fresh</span></div>
    <div style="flex:2"><span style="font-size:13px; color:#39414e">Alex Chen</span></div>
    <div style="flex:1"><span style="font-size:12px; color:#6b7480">Jul 8</span></div>
    <div style="flex:1; display:flex; gap:6px; font-size:11px"><span style="color:#4b7fd9; cursor:pointer">↗ See</span> <span style="color:#4b7fd9; cursor:pointer">💬 Msg</span></div>
  </div>
</div>

<!-- Due soon bucket -->
<div style="border-bottom:1px solid #f3f6f9; background:#f9fafb">
  <div style="padding:12px 16px; font-size:11px; font-weight:600; color:#6b7480; letter-spacing:.02em">Due soon (3)</div>
  <div style="display:flex; align-items:center; gap:12px; padding:12px 16px; border-top:1px solid #f1f3f6">
    <div style="flex:1"><span style="font-size:12px; color:#7c8593">Due soon</span></div>
    <div style="flex:2"><span style="font-size:13px; color:#39414e">Morgan Lee</span></div>
    <div style="flex:1"><span style="font-size:12px; color:#d8a24a">Jul 6</span></div>
    <div style="flex:1; display:flex; gap:6px; font-size:11px"><span style="color:#4b7fd9; cursor:pointer">↗ See</span> <span style="color:#4b7fd9; cursor:pointer">💬 Msg</span></div>
  </div>
</div>

<!-- Missed 1st bucket -->
<div style="border-bottom:1px solid #f3f6f9; background:#f9fafb">
  <div style="padding:12px 16px; font-size:11px; font-weight:600; color:#6b7480; letter-spacing:.02em">Missed 1st (1)</div>
  <div style="display:flex; align-items:center; gap:12px; padding:12px 16px; border-top:1px solid #f1f3f6">
    <div style="flex:1"><span style="font-size:12px; color:#7c8593">Missed 1st</span></div>
    <div style="flex:2"><span style="font-size:13px; color:#39414e">Jamie Rodriguez</span></div>
    <div style="flex:1"><span style="font-size:12px; color:#c87133">Jul 4</span></div>
    <div style="flex:1; display:flex; gap:6px; font-size:11px"><span style="color:#4b7fd9; cursor:pointer">↗ See</span> <span style="color:#4b7fd9; cursor:pointer">💬 Msg</span></div>
  </div>
</div>

<!-- Fully missed bucket -->
<div style="border-bottom:1px solid #f3f6f9; background:#f9fafb">
  <div style="padding:12px 16px; font-size:11px; font-weight:600; color:#6b7480; letter-spacing:.02em">Fully missed (1)</div>
  <div style="display:flex; align-items:center; gap:12px; padding:12px 16px; border-top:1px solid #f1f3f6">
    <div style="flex:1"><span style="font-size:12px; color:#7c8593">Fully missed</span></div>
    <div style="flex:2"><span style="font-size:13px; color:#39414e">Taylor Kim</span></div>
    <div style="flex:1"><span style="font-size:12px; color:#c87133">Jun 30</span></div>
    <div style="flex:1; display:flex; gap:6px; font-size:11px"><span style="color:#4b7fd9; cursor:pointer">↗ See</span> <span style="color:#4b7fd9; cursor:pointer">💬 Msg</span></div>
  </div>
</div>
The check-in worklist, grouped by state. Each bucket shows how many are in that stage, and every row has quick actions: see the client's profile, send them a message, or adjust the check-in.

The buckets:

  • Fresh — check-in reminder was just created or a client just missed it for the first time. No reminders sent yet.
  • Due soon — the check-in is coming up in the next few days.
  • Missed 1st — you’ve sent one reminder and the client hasn’t submitted yet.
  • Missed 2nd (and beyond) — you’ve sent more reminders; this one hasn’t landed yet.
  • Fully missed — you’ve sent the max number of reminders you configured, and the client still hasn’t submitted. Time for you to reach out directly.

Narrow the view — two controls sit next to the bucket toggles:

  • Form type — filter to just Check-ins, Onboarding, or Other forms (or show all). Each row also shows the form name under the client, so you can tell at a glance which form is outstanding.
  • Time window — the Missed and Fully-missed buckets default to the last 14 days so old, no-longer-actionable misses don’t pile up. Widen it (30 / 90 days / all time) when you want the full history. Fresh and Due-soon are always current.

Row actions — every row gives you quick options:

  • See (↗) — jump to that client’s profile so you can review their history and follow up in context.
  • Message (💬) — open a chat window to message them directly without leaving the worklist.
  • Mark done — if the client submitted but the system didn’t catch it, mark it complete to close the worklist row.
  • Snooze — if a client is traveling or in a special situation, snooze the check-in for a few days (you pick how many). Reminders pause until the snooze ends.
  • Dismiss — if you’re OK with them skipping this one (temporary exception), dismiss it and move on. The next recurring check-in still runs as normal.

Why the worklist matters

Without it, missed check-ins get buried in your calendar and your inbox. The worklist is your single place to see who hasn’t checked in and who needs a nudge. Because it groups by state, you can prioritize: handle the “Fully missed” clients first (they need direct outreach), then work through “Missed 1st” and “Missed 2nd” tiers if you have bandwidth.

Since every form to-do is tied to your policy, you only set up reminders once — they run automatically for every check-in, onboarding, and other form across your roster. The worklist surfaces the signal so you don’t miss anyone.


Next: learn how to use Progress tracking to map check-in answers into metrics you can chart and compare over time.