Skip to main content
A reminder is a scheduled ping the AI SDR fires to itself at a future time. When it fires, the AI SDR re-enters your chat as if you’d just typed the reminder’s prompt, and takes whatever follow-up action is appropriate — updating a deal, drafting an email, checking a queue, posting to Slack. Reminders can be one-shot or recurring. This is the “set it and forget it” side of the AI SDR — instead of you remembering to check back, the agent remembers for you.
Reminders run on the server even when you’re offline. If a reminder fires at 2am, it still executes — the results wait for you in the chat history the next morning.

When to use a reminder

Good fits:
  • Follow-up nudges — “remind me in 3 days to check if Jane replied”
  • Recurring audits — “every Monday at 9am, summarize at-risk deals”
  • Time-bound triggers — “when the contract I just sent hits 7 days unsigned, draft a gentle bump email”
  • Queue-polling — “every 30 minutes, check if my Calendly job is done and let me know”
Not a fit:
  • Immediate tasks — just ask the AI SDR now
  • CRM activities like call reminders — use a Task (Sales Sequences → task steps or the Tasks page)
  • Calendar invites — create a real calendar event, not a reminder

Create one

From the chat

Just ask:
The AI SDR creates the reminder row, shows a confirmation in chat, and returns you a reminder id you can reference later.

From the UI

Go to CRM → Reminders for a table of every reminder on the account. You can create one manually (New reminder) but the natural-language path is usually easier.

Fields

Each reminder has:

Example: polling-until-done

Then set:
  • repeat_every_seconds: 1800
  • max_fires: 20
  • stop_if_output_contains: ["completed", "failed"]
The reminder polls every 30 minutes, up to 10 hours, and stops automatically when the job finishes.

Recurring fires and dedupe

Recurring reminders bump fire_at forward by repeat_every_seconds after each successful fire, up to max_fires. Each fire is deduped independently — a retry of fire #3 won’t re-run the successful fire #2.
Behind the scenes, each fire has its own audit key (sales_agent.reminder.<id>.fire.<n>) with a 10-minute dedupe window. That’s how recurring reminders know to re-fire on schedule rather than being blocked by the dedupe on a prior fire. You generally don’t need to think about this — it Just Works — but if a reminder seems to have fired only once and stopped, check Reminders → row → Last error for the diagnostic.

Manage live reminders

The Reminders page shows all reminders on the account with status, next-fire time, attempts, and any last error. Per row:
  • Pause — freeze future fires. Status flips to paused.
  • Resume — unfreeze.
  • Cancel — terminate; row stays for audit but never fires again.
  • Fire now — force an immediate fire for testing (useful when debugging a prompt).
  • Scanner heartbeat — small timestamp indicating the last time the cron scanner picked up this row. If it’s stale, the scheduler isn’t running.
You can also update a scheduled reminder through the AI SDR:
Once a reminder has fired (status fired, failed, or cancelled), the row is immutable.

What the AI SDR sees on fire

When a reminder fires, the AI SDR gets:
  • Your original prompt, injected as a fresh user message
  • Any context JSON merged into its working state
  • The full account + user context (so it acts as you, not as a generic agent)
So a prompt like “check if Jane replied to the proposal email” works — the agent uses your identity and account to look up Jane and the thread.
Write the prompt as if you were typing it fresh to the AI SDR right then. “Check the deal I sent on Monday” won’t work because “Monday” is ambiguous at fire time. Instead: “Check deal deal_abc123 and report if it’s been signed.” Or embed the deal id in context.

Troubleshooting

Look at Reminders → row → Last error. If it’s blank, the scanner heartbeat may be stale — check that the reminders cron is running. If there’s an error like a tool failure, fix the underlying cause (bad id, revoked OAuth, missing permission) and the next scheduled fire will run normally.
Add a stop_if_output_contains phrase that matches the “done” case, or lower max_fires. Or just cancel the row.
Open the chat for that reminder’s session — the reminder’s fire shows up as a chat turn with the full AI SDR output. The Reminders page also logs the last fire’s output snippet.
Not directly. Reminders are time-based. For event-based actions, use the sequence engine’s exit triggers or a workflow. A middle-ground: schedule a poller (recurring reminder) that checks the condition every N minutes and stops when satisfied.