Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to schedule daily reminder workflows in Bubble

Build a scheduled daily reminder system in Bubble using backend API workflows that run every 24 hours. This tutorial shows how to create a recurring workflow that finds users due for reminders, sends personalized emails or in-app notifications, and handles timezone differences so each user gets reminded at their preferred local time.

What you'll learn

  • How to create a recurring backend workflow that runs daily
  • How to query users who need reminders based on their preferences
  • How to send personalized reminder emails from Bubble
  • How to let users customize their reminder time and frequency
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate6 min read20-25 minGrowth plan+ (requires backend workflows)March 2026RapidDev Engineering Team
TL;DR

Build a scheduled daily reminder system in Bubble using backend API workflows that run every 24 hours. This tutorial shows how to create a recurring workflow that finds users due for reminders, sends personalized emails or in-app notifications, and handles timezone differences so each user gets reminded at their preferred local time.

Overview: Setting Up Automatic Daily Reminders in Bubble

Daily reminders keep users engaged with your app — whether it is a task reminder, habit tracker prompt, or subscription renewal notice. This tutorial uses Bubble's backend API workflows with recursive scheduling to create a system that runs every 24 hours, finds users who should receive a reminder, and sends personalized emails.

Prerequisites

  • A Bubble app on the Growth plan or higher
  • Backend workflows enabled in Settings → API
  • A User data type with email addresses
  • Basic understanding of backend workflows and scheduling

Step-by-step guide

1

Add reminder preference fields to the User data type

Go to the Data tab, select the User data type, and add fields: reminder_enabled (yes/no, default yes), reminder_time (text, e.g. '09:00'), reminder_timezone (text, e.g. 'America/New_York'), and last_reminder_sent (date). These let each user control whether they receive reminders and at what time.

Expected result: The User data type has fields for reminder preferences and tracking.

2

Create the daily reminder backend workflow

Navigate to Backend workflows. Create a new workflow called send_daily_reminders. This workflow does not need external parameters. Add a step: Do a search for Users where reminder_enabled is yes and last_reminder_sent is less than Current date/time rounded down to day (ensuring each user gets only one reminder per day). For each user found, schedule a send_single_reminder workflow.

Expected result: A backend workflow that finds all users due for a reminder today.

3

Create the individual reminder workflow

Create another backend workflow called send_single_reminder with a parameter: user (type User). Add a Send email action with the recipient set to user's email, subject like 'Your Daily Reminder', and a personalized body using dynamic data such as the user's name and relevant app data. After sending, add Make changes to user setting last_reminder_sent to Current date/time.

Pro tip: Include a one-click unsubscribe link in the email that sets reminder_enabled to no via a backend workflow triggered by URL.

Expected result: Each user receives a personalized email and their last_reminder_sent date is updated.

4

Set up the recurring schedule

The daily reminder workflow needs to reschedule itself. At the end of the send_daily_reminders workflow, add a Schedule API Workflow action that schedules send_daily_reminders to run again in 24 hours (Current date/time plus 24 hours). This creates a self-perpetuating daily loop. To start the loop the first time, manually schedule the initial run from a one-time admin workflow or the API Workflow admin page.

Pro tip: Add a termination condition by checking an app-level setting (e.g., an Option Set flag) to stop the loop if needed.

Expected result: The reminder workflow runs every 24 hours automatically, rescheduling itself each time.

5

Add a user preference page for reminder settings

Create a settings section on your user profile page. Add a Checkbox for enabling reminders (bound to Current User's reminder_enabled), a Time Picker or dropdown for preferred time, and a timezone dropdown. Create a Save workflow that updates the Current User's reminder fields. Show a confirmation message after saving.

Expected result: Users can enable/disable reminders and choose their preferred notification time.

6

Handle timezone-aware scheduling

Instead of sending all reminders at one fixed UTC time, the send_daily_reminders workflow should filter users whose reminder_time matches the current hour in their timezone. Add a constraint or post-search filter: users whose reminder_time converted to UTC equals the current UTC hour. This ensures users get reminders at their preferred local time rather than a fixed server time.

Expected result: Users receive reminders at their configured local time regardless of timezone.

Complete working example

Workflow summary
1DAILY REMINDERS WORKFLOW SUMMARY
2====================================
3
4DATA MODEL
5 User (additional fields):
6 - reminder_enabled (yes/no, default: yes)
7 - reminder_time (text, e.g. '09:00')
8 - reminder_timezone (text, e.g. 'America/New_York')
9 - last_reminder_sent (date)
10
11BACKEND WORKFLOW: send_daily_reminders
12 (Runs every hour to check all timezones)
13 Step 1: Search for Users
14 - reminder_enabled = yes
15 - last_reminder_sent < start of today
16 - reminder_time matches current UTC hour for user's timezone
17 Step 2: Schedule API Workflow on a list
18 send_single_reminder for each matching user
19 Step 3: Schedule API Workflow
20 send_daily_reminders in 1 hour (hourly loop)
21
22BACKEND WORKFLOW: send_single_reminder
23 Parameter: user (User)
24 Step 1: Send email
25 - To: user's email
26 - Subject: Your Daily Reminder
27 - Body: personalized content with user's name
28 Step 2: Make changes to user
29 - last_reminder_sent = Current date/time
30
31FRONTEND: User Settings
32 Checkbox: Enable reminders reminder_enabled
33 Dropdown: Reminder time reminder_time
34 Dropdown: Timezone reminder_timezone
35 Button: Save Make changes to Current User

Common mistakes when scheduling daily reminder workflows in Bubble

Why it's a problem: Forgetting the termination condition for recursive workflows

How to avoid: Check an app-level flag (like an Option Set value) at the start of the workflow. If disabled, do not reschedule.

Why it's a problem: Sending duplicate reminders on the same day

How to avoid: Always update last_reminder_sent immediately after sending and add a search constraint to exclude users reminded today.

Why it's a problem: Not handling email delivery failures

How to avoid: Consider using SendGrid or another email service via API Connector for delivery tracking and retry logic.

Best practices

  • Include an unsubscribe link in every reminder email
  • Track last_reminder_sent to prevent duplicate sends
  • Run the scheduler hourly to handle different timezone preferences
  • Use backend workflows (not frontend) so reminders send even when no one is using the app
  • Log reminder sends in a separate data type for debugging
  • Test with a small group before enabling for all users
  • Monitor your WU consumption — bulk email workflows can consume significant workload units

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I need to build an automatic daily reminder system in Bubble.io that sends personalized emails to users every morning at their preferred time. How do I set up recurring backend workflows, handle timezones, and let users manage their preferences?

Bubble Prompt

Create a daily reminder system. Add reminder preference fields to the User data type. Build a recurring backend workflow that runs daily, finds users due for reminders, and sends personalized emails. Add a settings page where users can enable/disable reminders and set their preferred time.

Frequently asked questions

Do I need a paid plan for daily reminders?

Yes. Backend workflows require the Growth plan or higher. Frontend scheduled workflows do not work when the user is not on the page.

How many reminders can Bubble send per day?

Bubble's built-in email sending has limits based on your plan. For high-volume sending (1000+ emails/day), use SendGrid or Mailgun via the API Connector.

Can I send reminders via SMS instead of email?

Yes. Replace the Send email action with an API Connector call to Twilio or another SMS provider. Store phone numbers on the User data type.

Will recursive workflows run up my WU costs?

Yes. Each email send consumes WUs. Monitor usage in Settings → Metrics and consider batching sends during off-peak hours.

How do I test the reminder workflow without waiting 24 hours?

Schedule the workflow to run in 1 minute instead of 24 hours during testing. Remember to change it back before going live.

Can RapidDev help build a notification system for my app?

Yes. RapidDev can build multi-channel notification systems with email, SMS, push notifications, timezone handling, and preference management.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.