# How to integrate user generated content approval workflow in Bubble.io: Step-by-

- Tool: Bubble
- Difficulty: Intermediate
- Time required: 20-25 min
- Compatibility: All Bubble plans
- Last updated: March 2026

## TL;DR

A content approval workflow in Bubble routes user-submitted content through a review queue where moderators can approve, reject, or request revisions before publication. This tutorial covers building the submission form, moderator dashboard, approval/rejection workflows, and auto-publish after approval with notification at each stage.

## Overview: Building a Content Approval Workflow in Bubble

This tutorial shows how to build a moderation system that reviews user-generated content before it goes live. Essential for community platforms, marketplaces, and any app where user submissions need quality control.

## Before you start

- A Bubble app with user-generated content
- User roles including moderator/admin
- Basic understanding of Workflows and Privacy Rules
- Email or notification system set up

## Step-by-step guide

### 1. Add status tracking to your content data type

Add fields to your content type (e.g., Post): status (Option Set: Draft/Pending Review/Approved/Rejected/Revision Requested), submitted_at (date), reviewed_at (date), reviewer (User), rejection_reason (text), revision_notes (text). Set the default status to Draft. Content is only visible to the public when status = Approved.

**Expected result:** Content records track their review status through the approval pipeline.

### 2. Build the submission flow

On the content creation page, add a Submit for Review button alongside Save Draft. The Submit workflow updates the content status to Pending Review and sets submitted_at. Send a notification to moderators about the new submission. Display the current status on the author's dashboard so they know where their content stands.

**Expected result:** Users can submit content for review and track its status.

### 3. Create the moderator review dashboard

Build an admin page showing a Repeating Group of content where status = Pending Review, sorted by submitted_at ascending (oldest first). Each cell shows title, author, submission date, and a Preview button. The Preview opens the content in a popup styled like the public view. Add action buttons: Approve, Reject, and Request Revision.

**Expected result:** Moderators see a queue of content awaiting review.

### 4. Implement approval, rejection, and revision workflows

For Approve: set status = Approved, reviewed_at = now, reviewer = Current User. Trigger auto-publish (make content visible). Send approval notification to author. For Reject: set status = Rejected, add rejection_reason from a text input. Notify author with reason. For Request Revision: set status = Revision Requested, add revision_notes. Notify author with specific feedback. When author resubmits, status returns to Pending Review.

> Pro tip: For platforms with high content volume, RapidDev can help build AI-powered content moderation that auto-approves safe content and flags potentially problematic submissions.

**Expected result:** Content moves through the approval pipeline with notifications at each stage.

### 5. Set Privacy Rules for content visibility

Set Privacy Rules on the content type: Public visibility only when status = Approved. Authors can see their own content in any status. Moderators can see content in Pending Review, plus all other statuses. This ensures unpublished content is never visible to regular users.

**Expected result:** Only approved content is visible to the public; authors and moderators see appropriate items.

## Complete code example

File: `Workflow summary`

```text
CONTENT APPROVAL WORKFLOW SUMMARY
==================================

STATUS LIFECYCLE:
  Draft → Pending Review → Approved (published)
                        → Rejected (with reason)
                        → Revision Requested → Pending Review

SUBMISSION:
  Author clicks Submit → status = Pending Review
  Notify moderators

REVIEW DASHBOARD:
  Filter: status = Pending Review, sort by submitted_at
  Actions: Approve, Reject, Request Revision

APPROVE: status=Approved, notify author, publish
REJECT: status=Rejected, add reason, notify author
REVISION: status=Revision Requested, add notes, notify

PRIVACY:
  Public: status = Approved only
  Author: own content in any status
  Moderator: all Pending Review + assigned content
```

## Common mistakes

- **Making all content visible by default** — Without status-based visibility, user submissions appear publicly before review Fix: Set Privacy Rules so only content with status = Approved is visible to the public.
- **Not notifying authors about review decisions** — Authors left without feedback become frustrated and stop contributing Fix: Send email or in-app notifications with specific feedback when content is approved, rejected, or needs revision.
- **Not providing a reason for rejections** — Authors cannot improve their content if they do not know why it was rejected Fix: Require moderators to enter a rejection_reason or revision_notes before completing the action.

## Best practices

- Require review before any user content goes public
- Notify authors at every status change with specific feedback
- Use Privacy Rules to enforce content visibility by status
- Process the oldest submissions first (FIFO queue)
- Provide revision notes with specific actionable feedback
- Track reviewer and review date for accountability
- Allow authors to see their content status on their dashboard

## Frequently asked questions

### Can I auto-approve content from trusted users?

Yes. Add a is_trusted field to User. In the submission workflow, if the author is trusted, set status directly to Approved and skip the review queue.

### How do I handle revision resubmissions?

When an author edits rejected/revision content and resubmits, set status back to Pending Review. The content re-enters the moderation queue for another review.

### Can I add multiple levels of approval?

Yes. Add additional statuses like First Review Approved and Final Review. Route content through two moderator levels before final publication.

### How do I prevent moderator bias?

Assign reviews randomly or in round-robin fashion. Track approval/rejection rates per moderator. Consider blind review where the author's identity is hidden.

### Can I use AI to pre-screen content?

Yes. Call OpenAI or Claude API via the API Connector to analyze content before it enters the queue. Auto-reject clearly inappropriate content and flag borderline cases for human review.

### Can RapidDev help build advanced moderation systems?

Yes. RapidDev can build AI-powered moderation with automated screening, multi-tier review, analytics dashboards, and integration with content classification APIs.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/integrate-user-generated-content-approval-workflow-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/integrate-user-generated-content-approval-workflow-in-bubble
