# How to add a report user feature in Bubble

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

## TL;DR

A report user feature lets community members flag problematic users with specific reasons, block interactions with those users, and gives admins a review queue to warn, suspend, or ban reported accounts. This tutorial covers creating user reporting workflows, implementing user blocking at the interaction level, building admin review and escalation flows, and handling temporary suspensions and permanent bans.

## Overview: Adding a Report User Feature in Bubble

This tutorial guides you through building a user reporting and blocking system. You will create report forms with reason categories, implement bidirectional user blocking, build an admin moderation queue, and add suspension and ban workflows.

## Before you start

- A Bubble app with user authentication and profiles
- Basic understanding of Bubble Data Types and privacy rules
- An admin role system (or the ability to add one)

## Step-by-step guide

### 1. Create the UserReport and BlockedUser Data Types

Create a UserReport Data Type with fields: reported_user (User), reporter (User), reason (Option Set: UserReportReason — Harassment, Spam, Fake Account, Inappropriate Content, Other), details (text), status (Option Set: ReportStatus — Pending, Reviewed, Dismissed). Create a BlockedUser Data Type with fields: blocker (User), blocked (User). Add fields to the User Data Type: is_suspended (yes/no), suspension_end_date (date), is_banned (yes/no), report_count (number).

**Expected result:** Your database supports user reports, blocking, and suspension/ban tracking.

### 2. Add report and block buttons to user profiles

On user profile pages, add a Report User button (visible when Current User is logged in and is not the displayed user). Clicking opens a popup with a reason dropdown and details textarea. The Submit workflow creates a UserReport and increments the reported user's report_count. Add a Block User button that creates a BlockedUser record with blocker = Current User and blocked = displayed user. After blocking, swap the button to 'Unblock' (which deletes the BlockedUser record). Filter content throughout your app to hide posts and messages from blocked users using constraints.

**Expected result:** Users can report and block other users from their profile pages.

### 3. Build the admin moderation queue

Create an admin page showing pending user reports. Display a Repeating Group of UserReports where status = Pending, grouped by reported_user to consolidate multiple reports about the same person. In each row, show the reported user's name, total report count, list of reasons, and action buttons: Dismiss (sets status to Dismissed), Warn (sends a notification to the user), Suspend (sets is_suspended = yes and suspension_end_date), and Ban (sets is_banned = yes). For suspensions, create a scheduled backend workflow that clears is_suspended when suspension_end_date passes.

> Pro tip: RapidDev can help build sophisticated moderation systems with multi-level escalation, appeal processes, and automated pattern detection for your Bubble app.

**Expected result:** Admins can review reported users and take actions ranging from warnings to permanent bans.

### 4. Enforce suspensions and bans across the app

Add page-level checks for suspended and banned users. On every page's 'Page is loaded' event, add conditions: if Current User's is_banned = yes, redirect to a 'banned' page explaining the ban. If Current User's is_suspended = yes and suspension_end_date is after Current Date/Time, redirect to a 'suspended' page showing when the suspension ends. Also prevent suspended/banned users from creating content by adding Only when conditions to all submission workflows: Only when Current User's is_banned is no and Current User's is_suspended is no.

**Expected result:** Suspended and banned users cannot access the app or create content, seeing appropriate explanation pages instead.

## Complete code example

File: `Workflow summary`

```text
USER REPORTING AND MODERATION SYSTEM
======================================

DATA TYPES:
  UserReport: reported_user, reporter, reason, details, status
  BlockedUser: blocker, blocked
  User (additional fields): is_suspended, suspension_end_date, is_banned, report_count

REPORT WORKFLOW:
  → Create UserReport (status: Pending)
  → Increment reported_user's report_count

BLOCK WORKFLOW:
  → Create BlockedUser (blocker = Current User, blocked = target)
  → Filter all content displays: exclude blocked users

ADMIN ACTIONS:
  Dismiss: Report status → Dismissed
  Warn: Send notification to reported user
  Suspend: User is_suspended → yes, set end date
  Ban: User is_banned → yes

ENFORCEMENT:
  Every page load: check is_banned and is_suspended
  Every submission: Only when not banned and not suspended
  Scheduled: clear is_suspended when end date passes
```

## Common mistakes

- **Not checking for bans and suspensions on every page** — If enforcement checks are only on some pages, suspended or banned users can still access parts of your app Fix: Add ban and suspension checks to every page's Page is loaded workflow, or use a reusable element that runs the check
- **Allowing blocked users to still see the blocker's content** — One-directional blocking still lets the blocked person view and potentially interact with the blocker's profile and posts Fix: Filter content in both directions — hide the blocker's content from the blocked user and vice versa
- **Not providing an appeal mechanism for banned users** — Permanent bans without appeals can be applied incorrectly due to false reports, and users have no way to contest them Fix: Add an appeal form on the banned page that creates an appeal record for admin review

## Best practices

- Implement bidirectional blocking to prevent any interaction between blocked users
- Check ban and suspension status on every page load
- Use scheduled backend workflows to auto-lift temporary suspensions
- Allow appeals for banned users to handle false reports
- Group reports by user in the admin queue for efficient review
- Store report_count on the User record for fast threshold checking

## Frequently asked questions

### How do I prevent false reports from being used to ban innocent users?

Require multiple reports from different users before escalation. Track reporters who frequently file dismissed reports and reduce their report weight. Always require admin review before suspensions and bans.

### Should blocking be bidirectional?

Yes. When User A blocks User B, both users should be unable to see each other's content or interact. This prevents the blocked person from continuing to engage with the blocker.

### How long should temporary suspensions last?

Common durations are 24 hours for first offense, 7 days for second, and 30 days for third. Permanent bans for severe or repeated violations. Define your policy clearly in community guidelines.

### Can suspended users still view content without posting?

That depends on your policy. You can choose read-only suspension (allow viewing, prevent posting) or full suspension (redirect to suspension page). Implement the level that matches your community needs.

### Can RapidDev help build a complete moderation system?

Yes. RapidDev can implement comprehensive user moderation including reporting, blocking, suspension tiers, ban appeals, and automated detection patterns for your Bubble community app.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/add-a-report-user-feature-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/add-a-report-user-feature-in-bubble
