Create a multi-step review and approval workflow in Bubble with submit for review, approver assignment, approve and reject actions, revision requests, and audit trail logging. This tutorial covers the data model, status management, email notifications, and an admin review dashboard.
Overview: Building a Review and Approval Workflow
Many apps need content or request approval before going live — blog posts, expense reports, job applications. This tutorial builds a complete approval system with submission, review assignment, approval/rejection, revision loops, and audit logging.
Prerequisites
- A Bubble account with an app ready to edit
- A Data Type for the items being reviewed
- Basic understanding of workflows and Option Sets
- Familiarity with sending emails from Bubble
Step-by-step guide
Create the approval data model
Create the approval data model
Create an Option Set called ApprovalStatus with options: Draft, Pending Review, Approved, Rejected, Revision Requested. Add fields to your item Data Type: status (ApprovalStatus), reviewer (User), submitted_date (date), reviewed_date (date), and review_notes (text). Create an AuditLog Data Type with item, action (text), actor (User), timestamp (date), and notes (text).
Expected result: Data model with approval statuses and audit logging.
Build the submission workflow
Build the submission workflow
On the item edit page, add a Submit for Review button. The workflow sets status to Pending Review, submitted_date to now, and assigns a reviewer (either automatically based on role or manually selected). Create an AuditLog entry with action Submitted. Send an email notification to the assigned reviewer.
Expected result: Items can be submitted for review with notifications to reviewers.
Create the reviewer dashboard
Create the reviewer dashboard
Build an admin page showing items pending review. Add a Repeating Group searching items where status is Pending Review and reviewer is Current User. Each cell shows the item title, submitter, date, and Review button. Clicking Review opens the item detail with Approve, Reject, and Request Revision buttons.
Expected result: Reviewers see their pending items and can take action.
Implement approve and reject actions
Implement approve and reject actions
The Approve button workflow: set status to Approved, reviewed_date to now. Create AuditLog entry. Send approval notification to submitter. The Reject button shows a popup for rejection reason, sets status to Rejected, saves review_notes, creates AuditLog, and notifies submitter with the reason.
Expected result: Reviewers can approve or reject with notes and notifications.
Add revision request flow
Add revision request flow
The Request Revision button opens a popup for revision notes. The workflow sets status to Revision Requested and saves notes. The submitter sees their items needing revision, makes changes, and can resubmit (setting status back to Pending Review). Each action creates an AuditLog entry.
Expected result: A revision loop where submitters can address feedback and resubmit.
Build the audit trail view
Build the audit trail view
On the item detail page, add a Repeating Group showing AuditLog entries for this item, sorted by timestamp descending. Display action, actor name, timestamp, and notes. This provides a complete history of all approval actions.
Expected result: A chronological log of all actions taken on each item.
Complete working example
1APPROVAL WORKFLOW — SUMMARY\n============================\n\nDATA MODEL\n Item (existing): + status (ApprovalStatus), reviewer (User),\n submitted_date, reviewed_date, review_notes\n ApprovalStatus: Draft, Pending Review, Approved, Rejected, Revision Requested\n AuditLog: item, action (text), actor (User), timestamp, notes\n\nWORKFLOW: Submit for Review\n Set status = Pending Review, assign reviewer\n Create AuditLog (Submitted), send email to reviewer\n\nWORKFLOW: Approve\n Set status = Approved, reviewed_date = now\n Create AuditLog (Approved), notify submitter\n\nWORKFLOW: Reject\n Set status = Rejected, save rejection notes\n Create AuditLog (Rejected), notify with reason\n\nWORKFLOW: Request Revision\n Set status = Revision Requested, save notes\n Create AuditLog, notify submitter\n\nWORKFLOW: Resubmit\n Set status = Pending Review\n Create AuditLog (Resubmitted)Common mistakes when building review and approval workflows in Bubble
Why it's a problem: Not logging actions in an audit trail
How to avoid: Create an AuditLog entry for every status change with actor, action, timestamp, and notes.
Why it's a problem: Allowing submitters to edit items during review
How to avoid: Disable edit access when status is Pending Review. Only allow edits when status is Draft or Revision Requested.
Why it's a problem: Not sending notifications on status changes
How to avoid: Send email notifications on every status change to the relevant party.
Best practices
- Log every status change in an audit trail
- Send email notifications on all status changes
- Disable editing during pending review
- Allow multiple revision cycles
- Show the complete approval history on item detail pages
- Use Privacy Rules so reviewers only see items assigned to them
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I need a review and approval workflow in Bubble.io for content submissions with submit, approve, reject, and revision request actions plus an audit trail. How do I structure this?
Create an approval system. Add ApprovalStatus Option Set and AuditLog data type. Build workflows for submit, approve, reject, and request revision. Add a reviewer dashboard and audit trail display.
Frequently asked questions
Can I have multiple approval levels?
Yes. Add additional statuses (Level 1 Approved, Level 2 Pending) and chain workflows so approval at one level triggers the next review.
How do I auto-assign reviewers?
Search for users with the reviewer role and assign based on workload (fewest pending reviews) or round-robin using a counter.
Can I set approval deadlines?
Yes. Add a review_deadline field. Create a backend workflow that checks for overdue items and sends reminder emails.
Can RapidDev help build complex approval flows?
Yes. RapidDev builds multi-level approval systems with SLA tracking, escalation, parallel approvals, and compliance reporting.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation