A tracking system in Bubble uses a TrackableItem Data Type with status fields and a StatusUpdate Data Type recording each change with timestamps. This tutorial covers building the data model for tracking orders, packages, or tasks, creating a timeline view of status changes, implementing automated notifications when status updates occur, and building real-time tracking dashboards for both administrators and end users.
Overview: Tracking System in Bubble
This tutorial shows you how to build a generic tracking system that can be applied to orders, shipments, tasks, or any item that moves through status stages.
Prerequisites
- A Bubble app on any plan
- Basic understanding of Data Types and Workflows
- Familiarity with Repeating Groups and conditional formatting
- An item type you want to track (orders, packages, tasks)
Step-by-step guide
Design the tracking data model
Design the tracking data model
Create two Data Types. 'TrackableItem' with: tracking_id (text — unique identifier), title (text), current_status (Option Set), owner (User), assigned_to (User), created_date (date), estimated_completion (date). 'StatusUpdate' with: item (TrackableItem), old_status (text), new_status (text), updated_by (User), notes (text), Created Date (auto). Create a 'TrackingStatus' Option Set with your stages: Pending, Processing, In Transit, Delivered (or whatever fits your use case). Add a display_order attribute to the Option Set.
Expected result: A data model supporting item tracking with full status change history.
Build the status update workflow
Build the status update workflow
Create a workflow for updating item status. When the status change button is clicked: first create a StatusUpdate record capturing the old and new status, then Make changes to the TrackableItem setting current_status to the new value. This two-step approach maintains a complete history while keeping the current status easily accessible. Add a notes Input so the updater can add context to the change. Trigger notifications after the status update.
Expected result: Status changes are recorded in a history log while the current status is updated on the item.
Create a visual timeline of status changes
Create a visual timeline of status changes
On the item detail page, add a vertical timeline UI. Use a Repeating Group of StatusUpdate where item = current item, sorted by Created Date ascending. Each cell shows: a colored dot (green for positive statuses, gray for neutral, red for issues), the status name, timestamp formatted as 'March 28, 2026 at 2:30 PM', the updater's name, and any notes. Connect the dots with a vertical line using a thin Group with a colored border. Style the most recent update as larger and highlighted.
Expected result: A visual timeline shows the complete history of status changes for each tracked item.
Automate notifications on status changes
Automate notifications on status changes
After creating a StatusUpdate in the workflow, add notification actions. Send an in-app notification to the item owner when status changes. Send an email with the new status and any notes. For important transitions (like 'Delivered'), send a push notification if configured. Create different email templates for each status transition to provide relevant information. You can also send notifications to the assigned_to user if the status requires their action.
Pro tip: Use database triggers on StatusUpdate creation to decouple notification logic from the update workflow. This keeps workflows clean and notifications reliable.
Expected result: Stakeholders receive automated notifications via in-app alerts and email when statuses change.
Build tracking dashboards
Build tracking dashboards
Create two dashboard views. For administrators: a summary page showing counts per status (how many items in each stage), a table of all items with filtering by status, assigned user, and date range, and alerts for items stuck in a status too long. For end users: a simple tracking page where they enter a tracking ID and see their item's current status, timeline, and estimated completion. Add a progress bar showing the item's position in the overall workflow using the status display_order relative to total stages.
Expected result: Admins see operational dashboards and users can track their items with progress visualization.
Complete working example
1TRACKING SYSTEM SUMMARY2=====================================34DATA MODEL:5 TrackableItem: tracking_id, title,6 current_status (Option Set), owner,7 assigned_to, created_date, est_completion8 StatusUpdate: item, old_status, new_status,9 updated_by, notes, Created Date10 TrackingStatus: Option Set with display_order1112STATUS UPDATE WORKFLOW:13 1. Create StatusUpdate (history record)14 2. Make changes to TrackableItem15 → current_status = new status16 3. Send notifications (in-app + email)1718TIMELINE VIEW:19 RG: StatusUpdates for item (asc by date)20 Cell: colored dot, status, time, user, notes21 Vertical line connecting dots22 Latest update highlighted2324PROGRESS BAR:25 Width = (current status order / total stages) %26 Color: green for on-track, yellow for delayed2728ADMIN DASHBOARD:29 Status counts per stage30 Item table with filters31 Stuck items alert (status unchanged > X days)3233USER TRACKING:34 Input: tracking ID35 Display: current status, timeline, ETA36 Progress bar visualizationCommon mistakes when building a Tracking System in Bubble
Why it's a problem: Updating the item status without creating a history record
How to avoid: Always create a StatusUpdate record before changing the current_status field on the item
Why it's a problem: Not validating status transitions
How to avoid: Define allowed transitions and add Only When conditions to prevent invalid status changes
Why it's a problem: Searching StatusUpdates inside each timeline cell for additional data
How to avoid: Store all necessary display data directly on the StatusUpdate record at creation time
Best practices
- Record every status change as a separate StatusUpdate for complete history
- Use Option Sets with display_order for consistent status progression
- Validate status transitions to prevent invalid changes
- Send automated notifications on every status change
- Show a progress bar relative to total stages for visual tracking
- Alert admins about items stuck in a status beyond expected timeframes
- Archive completed items periodically to maintain dashboard performance
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I want to build an order tracking system in my Bubble.io app where customers can track their order status with a timeline view showing each status change. How should I design the data model?
Help me build a tracking system with status stages (Pending, Processing, Shipped, Delivered), a visual timeline of changes, automated email notifications, and a progress bar showing current position.
Frequently asked questions
Can I track different types of items with the same system?
Yes. Add a 'type' field to TrackableItem and create different TrackingStatus Option Sets for each type. Filter dashboards by item type.
How do I handle items that go backwards in status?
The StatusUpdate history records all changes regardless of direction. Define allowed transitions in your workflow logic to control which backward moves are permitted.
Can end users update the status?
Typically, only administrators or assigned users update status. End users can view the timeline and current status. Control this with role-based access on the status update workflow.
How do I calculate estimated delivery time?
Track average time spent in each status stage across all items. Sum the remaining stage averages from the current status to calculate the estimated completion.
Can I send SMS notifications for status changes?
Yes. Integrate Twilio via the API Connector and add an SMS sending step to the status update workflow alongside the email notification.
Can RapidDev help build a tracking system?
Yes. RapidDev can build complete tracking systems in Bubble including real-time updates, SMS/email notifications, customer portals, and analytics dashboards.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation