# How to set up scheduled API workflows in Bubble.io: Step-by-Step Guide

- Tool: Bubble
- Difficulty: Intermediate
- Time required: 20-25 min
- Compatibility: Starter plan+ (backend workflows required)
- Last updated: March 2026

## TL;DR

Scheduled API workflows in Bubble let you run backend processes at specific times or on recurring intervals. This tutorial covers scheduling one-off tasks, building recurring workflows with self-rescheduling patterns, managing the schedule queue, and common use cases like daily reports and subscription renewals.

## Overview: Scheduled API Workflows in Bubble

Scheduled workflows are essential for automation — sending reminders, generating reports, processing payments, cleaning up data, and any task that needs to run without user interaction. Bubble lets you schedule backend workflows for a specific future time or create recurring patterns.

## Before you start

- A Bubble app on Starter plan or above
- Backend workflows enabled in Settings → API
- At least one backend API workflow created
- Understanding of backend workflow parameters

## Step-by-step guide

### 1. Schedule a one-off workflow for a specific time

In any workflow (frontend or backend), add the action Schedule API Workflow. Select the backend workflow you want to schedule. Set the Scheduled date to the desired run time — this can be a static date, a dynamic expression like Current date/time +(hours): 24 for tomorrow, or a date from a database field. Set the parameter values. The workflow will run once at the scheduled time.

> Pro tip: Use dynamic date expressions for relative scheduling: Current date/time +(minutes): 30 for 30 minutes from now, or a Booking's date +(hours): -24 for 24 hours before an appointment.

**Expected result:** The backend workflow is scheduled to run once at the specified future time.

### 2. Build a recurring workflow with self-rescheduling

To create a repeating task, make the backend workflow schedule itself as its last action. For example, a daily report workflow: after generating the report, add Schedule API Workflow targeting itself with a Scheduled date of Current date/time +(hours): 24. Add a termination condition — an Only When check that prevents rescheduling if a flag is set to stop the recurrence.

**Expected result:** The workflow runs and then schedules itself to run again, creating a recurring pattern.

### 3. Schedule workflows on a list of items

Use Schedule API Workflow on a List to process multiple items. Set the list to a search result and the workflow to your backend process. Each item in the list gets its own scheduled execution. Bubble processes them sequentially with a small delay between each. This is the standard pattern for bulk operations like sending batch emails or updating many records.

**Expected result:** Each item in the list is processed by its own scheduled workflow execution.

### 4. Monitor and manage the schedule queue

Go to the Logs tab in your editor and check the Scheduler section to see pending and completed scheduled workflows. You can see the scheduled time, status, and any errors. To cancel a scheduled workflow, use the Cancel a Scheduled Workflow action in a workflow, referencing the scheduled workflow's ID (returned by the Schedule API Workflow action as its result).

**Expected result:** You can view, monitor, and cancel scheduled workflows from the Logs tab.

### 5. Build common automated task patterns

Common patterns include: (1) Daily cleanup: delete soft-deleted records older than 30 days. (2) Email reminders: schedule 24 hours before an event date. (3) Subscription renewals: check and process on the billing date. (4) Report generation: aggregate data and email a summary. (5) Data sync: pull data from external APIs on a schedule. Each follows the same pattern: create a backend workflow, schedule it for the right time.

**Expected result:** Automated tasks run reliably on schedule without user intervention.

## Complete code example

File: `Workflow summary`

```text
SCHEDULED WORKFLOWS SUMMARY
=============================

ONE-OFF SCHEDULE:
  Action: Schedule API Workflow
    Workflow: send-reminder
    Scheduled date: Booking's date +(hours): -24
    Parameters: booking = This Booking

RECURRING SCHEDULE (daily report):
  Backend Workflow: daily-report
    1. Generate report data (searches, aggregations)
    2. Send email with report
    3. Schedule API Workflow: daily-report
       Scheduled date: Current date/time +(hours): 24
       Only when: stop_reports is not yes

BULK PROCESSING:
  Action: Schedule API Workflow on a List
    List: Search for Users (subscription_end < Today)
    Workflow: process-renewal
    Parameters: user = This item

CANCELLING:
  Result of Schedule API Workflow → returns workflow ID
  Store the ID in a database field
  Cancel: Cancel a Scheduled Workflow → the stored ID

COMMON PATTERNS:
  1. Reminders: schedule at event_date - 24h
  2. Cleanup: daily, delete deleted=yes AND modified < 30d ago
  3. Billing: on user's billing_date, process payment
  4. Reports: daily/weekly, aggregate and email
  5. Data sync: hourly, pull from external API
  6. Trial expiry: on trial_end_date, downgrade plan

MONITORING:
  Logs tab → Scheduler section
  Shows: pending, completed, failed workflows
  Can view errors and retry failed executions
```

## Common mistakes

- **Creating a recurring workflow without a termination condition** — Without a way to stop, the workflow reschedules itself forever, consuming WUs indefinitely Fix: Always include a conditional check before rescheduling — check a flag, a date limit, or a record status
- **Scheduling on a list with thousands of items at once** — Each item creates a separate scheduled execution, which can overwhelm the scheduler and consume massive WUs Fix: Process in batches — schedule 100 items at a time, then schedule the next batch after the first completes
- **Not storing the scheduled workflow ID for cancellation** — Without the ID, you cannot cancel a scheduled workflow if plans change (e.g., an appointment is cancelled) Fix: Store the Result of Schedule API Workflow (the workflow ID) in a database field so you can cancel it later

## Best practices

- Always include a termination condition for recurring workflows
- Store scheduled workflow IDs in the database for cancellation capability
- Process large lists in batches to avoid overwhelming the scheduler
- Use the Logs tab to monitor scheduled workflow execution and errors
- Schedule during off-peak hours to minimize impact on live app performance
- Add error handling inside scheduled workflows to prevent silent failures

## Frequently asked questions

### What is the minimum scheduling interval?

You can schedule workflows as close as 1 second apart, but very frequent scheduling (every few seconds) consumes significant WUs and may not be reliable. For polling patterns, 1-5 minute intervals are more practical.

### Do scheduled workflows consume WUs?

Yes. Each scheduled workflow execution consumes WUs based on the actions it performs. Recurring workflows that run frequently can accumulate significant WU costs.

### What happens if a scheduled workflow fails?

The workflow fails and the error is logged in the Logs tab. It does not automatically retry. For critical tasks, add error handling that re-schedules the workflow on failure.

### Can I schedule workflows from the development environment?

Yes, but they run against the development database. For production scheduling, deploy your app to live and trigger the initial schedule from the live environment.

### How many workflows can be scheduled simultaneously?

There is no documented hard limit, but very large queues (thousands) may experience delays. Process in batches for large operations.

### Can RapidDev help with complex automation systems?

Yes. RapidDev has built automated systems in Bubble including multi-step approval workflows, billing pipelines, data synchronization jobs, and complex scheduling with dependency management.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/setup-scheduled-api-workflows-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/setup-scheduled-api-workflows-bubble
