# How to set up automated performance monitoring in Bubble.io: Step-by-Step Guide

- Tool: Bubble
- Difficulty: Beginner
- Time required: 15-20 min
- Compatibility: All Bubble plans (external tools on free tiers)
- Last updated: March 2026

## TL;DR

Set up performance monitoring for your Bubble app by using Bubble's built-in App Metrics and Server Logs, integrating external uptime monitors like UptimeRobot, tracking page load times with custom logging, and setting up alert thresholds so you catch performance issues before users complain.

## Overview: Setting Up Performance Monitoring in Bubble

This tutorial shows you how to monitor your Bubble app's health and performance. You will use Bubble's built-in metrics dashboard, set up external uptime monitoring, create custom performance logging, and configure alerts. This is essential for any production app where downtime or slow performance impacts users and revenue.

## Before you start

- A Bubble account with an app deployed to live
- A free UptimeRobot account (or similar monitoring service)
- Basic understanding of Bubble's Settings tab
- Familiarity with Bubble workflows and data types

## Step-by-step guide

### 1. Explore Bubble's built-in metrics

Go to Settings then click on the Metrics section (or the Logs tab). Here you will find the Workload metrics chart showing WU consumption over time, broken down by activity type. The Server Logs tab shows individual workflow executions with their WU cost and duration. Review the pie chart to identify which workflows and searches consume the most resources. Check this regularly to spot trends before they become problems.

**Expected result:** You can identify your app's heaviest WU consumers and monitor trends in the Metrics dashboard.

### 2. Set up external uptime monitoring

Create a free account at UptimeRobot.com (or Pingdom, Better Uptime, etc.). Add a new monitor with type HTTP(s). Enter your live app URL (e.g., https://yourapp.bubbleapps.io or your custom domain). Set the monitoring interval to 5 minutes. Configure alert contacts (email and/or SMS). UptimeRobot will ping your app every 5 minutes and alert you immediately if it goes down or responds slowly.

> Pro tip: Add a second monitor for a key API endpoint or backend workflow URL to catch partial outages where the page loads but backend features fail.

**Expected result:** External monitoring checks your app every 5 minutes and alerts you to downtime via email or SMS.

### 3. Create a custom performance log

Create a data type called PerformanceLog with fields: page_name (text), load_time_ms (number), user (User), timestamp (date), and notes (text). On key pages, add a Page is loaded workflow that calculates the time since the page started loading (using a Custom State set to Current date/time at the start) and creates a PerformanceLog record. This gives you real page load time data from actual users.

**Expected result:** Page load times are recorded in the database from real user sessions.

### 4. Build a performance dashboard

Create an admin page called admin-performance. Add charts or summary statistics: average page load time over the last 7 days, slowest pages, WU usage trend, and uptime percentage (from UptimeRobot's API if available). Display PerformanceLogs in a Repeating Group sorted by load_time_ms descending to identify the slowest page loads. For comprehensive monitoring solutions, consider working with RapidDev.

**Expected result:** An admin dashboard shows key performance metrics and identifies slow pages.

### 5. Set up alert thresholds

Create a backend workflow that runs daily. It searches for PerformanceLogs from the last 24 hours and calculates the average load time. If the average exceeds your threshold (e.g., 5 seconds), send an alert email to the admin. Similarly, check if daily WU consumption exceeds 80% of your plan's allocation. This gives you proactive warnings before performance degrades to the point where users notice.

**Expected result:** Automated alerts notify you when performance metrics exceed acceptable thresholds.

## Complete code example

File: `Workflow summary`

```text
PERFORMANCE MONITORING — WORKFLOW SUMMARY
===========================================

DATA TYPE:
  PerformanceLog
    - page_name (text)
    - load_time_ms (number)
    - user (User)
    - timestamp (date)
    - notes (text)

PAGE LOAD TRACKING:
  Custom State: page_start_time (date)
  Workflow 1: Page is loaded
    Action 1: Set state page_start_time = Current date/time
    (This runs immediately when the page starts)
  Workflow 2: Do when condition is true
    Condition: RepeatingGroup Main's data source is loaded
    Action: Create PerformanceLog
      page_name = Current page's name
      load_time_ms = (Current date/time - page_start_time) in ms
      user = Current User
      timestamp = Current date/time

EXTERNAL MONITORING:
  UptimeRobot (free tier):
    Monitor type: HTTP(s)
    URL: https://yourapp.bubbleapps.io
    Interval: 5 minutes
    Alerts: email + SMS

BACKEND WORKFLOW: daily_performance_check
  Runs: daily at 08:00
  Step 1: Search PerformanceLogs (last 24 hours)
  Step 2: Calculate average load_time_ms
  Step 3 (Only when avg > 5000):
    Send email alert to admin
  Step 4: Check WU usage via Settings
  Step 5 (Only when WU > 80% of allocation):
    Send email alert to admin

ADMIN DASHBOARD:
  - Average load time (last 7 days)
  - Slowest pages (top 10 by load_time_ms)
  - WU usage trend chart
  - Recent alerts list
```

## Common mistakes

- **Only monitoring from within Bubble itself** — If Bubble's servers go down, your internal monitoring goes down too. You need external monitoring to detect outages Fix: Use an external service like UptimeRobot that checks your app from outside Bubble's infrastructure.
- **Logging performance data on every page for every user** — This creates a large volume of PerformanceLog records that consume storage and WUs Fix: Sample performance data — log every 10th page load (using a random number check) or only log for specific pages.
- **Not acting on the monitoring data** — Collecting metrics without reviewing them provides no benefit. Performance issues go unnoticed until users complain Fix: Set up automated alerts with thresholds and review the performance dashboard weekly.

## Best practices

- Use external uptime monitoring in addition to Bubble's built-in tools
- Check Bubble's App Metrics weekly to identify WU consumption trends
- Log page load times from real user sessions for accurate performance data
- Set up automated alerts for performance thresholds
- Sample performance logs to avoid excessive database writes
- Review and optimize the heaviest WU-consuming workflows monthly
- Monitor after each deployment for performance regressions

## Frequently asked questions

### Is UptimeRobot free?

Yes. UptimeRobot's free tier includes 50 monitors with 5-minute check intervals. This is sufficient for most Bubble apps.

### How do I check my WU usage programmatically?

Bubble does not expose WU data via API. You can monitor it manually in Settings or set up budget alerts at 75% and 100% thresholds in your plan settings.

### What is a good target for page load time?

Under 3 seconds is good, under 5 seconds is acceptable. Pages taking over 5 seconds should be optimized by reducing searches, limiting Repeating Group rows, and optimizing images.

### Can RapidDev help with performance optimization?

Yes. RapidDev specializes in Bubble development and can audit your app for performance bottlenecks, optimize database queries, reduce WU consumption, and implement comprehensive monitoring.

### Should I monitor the development environment too?

Focus monitoring on production. Development mode has its own WU allocation and different performance characteristics.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/setup-automated-performance-monitoring-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/setup-automated-performance-monitoring-bubble
