Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to manage customers in Bubble

Building a customer management system in Bubble involves creating a Customer Data Type with relevant fields, a searchable customer list using Repeating Groups with filters, individual customer detail pages, and interaction history tracking. This tutorial guides you through each component for a basic CRM-style customer management setup.

What you'll learn

  • How to create a Customer Data Type with searchable fields
  • How to build a customer list with search, filter, and sort capabilities
  • How to create a customer detail page with interaction history
  • How to add tags for customer segmentation
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner8 min read25-30 minAll Bubble plansMarch 2026RapidDev Engineering Team
TL;DR

Building a customer management system in Bubble involves creating a Customer Data Type with relevant fields, a searchable customer list using Repeating Groups with filters, individual customer detail pages, and interaction history tracking. This tutorial guides you through each component for a basic CRM-style customer management setup.

Overview: Managing Customers in a Bubble App

This tutorial walks you through building a complete customer management interface in Bubble. You will create a Customer Data Type, build a searchable and filterable customer list, design a customer detail page showing profile information and interaction history, and add tagging for segmentation. This is a foundational feature for any business app — whether you are building a CRM, a service platform, or an internal tool.

Prerequisites

  • A Bubble account with an app
  • Basic familiarity with Bubble's Data tab and Data Types
  • Understanding of Repeating Groups for displaying lists
  • A clear idea of what customer information you need to track

Step-by-step guide

1

Create the Customer Data Type with essential fields

Go to the Data tab and create a new Data Type called Customer. Add these fields: first_name (text), last_name (text), email (text), phone (text), company (text), status (text — active, inactive, lead), source (text — referral, website, ad), notes (text), tags (list of text), created_by (User), and last_contacted (date). If your customers are also app users, add a user_account field (type User) to link the Customer record to a User account. This separation lets you manage customer data independently of login accounts.

Pro tip: Use an Option Set for status and source fields instead of raw text — it prevents typos and makes filtering more reliable.

Expected result: A Customer Data Type with all essential fields for tracking customer information, activity, and segmentation.

2

Build a searchable customer list page

Create a new page called 'customers'. Add a Group at the top with Row layout containing: a Search Input (placeholder: 'Search customers...'), a Dropdown for status filter (choices: All, Active, Inactive, Lead), and a Button labeled 'Add Customer'. Below this group, add a Repeating Group with type Customer. Set the data source to Do a Search for Customer with constraints: first_name contains Search Input's value OR last_name contains Search Input's value OR email contains Search Input's value. Add an Only when condition on the status constraint: Dropdown's value is not 'All'. In each RG cell, display the customer's name, email, company, status (with colored badge), and last contacted date.

Expected result: A customer list page with working search and status filter, showing key customer details in each row.

3

Create an Add/Edit Customer form

Create a Popup element called 'Popup Customer Form'. Inside, add Input elements for each Customer field: first_name, last_name, email, phone, company, a Dropdown for status, a Dropdown for source, and a Multiline Input for notes. Add Save and Cancel buttons. On the Save button, create a workflow: if creating a new customer, use Create a new Customer and set all fields from the inputs. If editing, use Make changes to a thing (the customer stored in a custom state on the popup). Wire the 'Add Customer' button on the list page to show the popup with empty inputs, and add an Edit icon in each RG cell that shows the popup pre-filled with that customer's data via Display data in a group.

Expected result: A popup form for creating new customers and editing existing ones, accessible from the customer list page.

4

Design a customer detail page with interaction history

Create a new page called 'customer-detail' with a content type of Customer. Use the URL slug to load the correct customer (the page data source is automatically set when navigating with Go to page and sending data). At the top, display the customer's name, email, phone, company, and status in a profile card Group. Below, create a Data Type called Interaction with fields: customer (Customer), type (text — call, email, meeting, note), description (text), date (date), and logged_by (User). Add a Repeating Group on the detail page showing all Interactions where customer = Current Page's Customer, sorted by date descending.

Expected result: A customer detail page showing profile information and a chronological list of all interactions with that customer.

5

Add interaction logging with a quick-entry form

On the customer detail page, add a Group below the profile card with Row layout containing: a Dropdown for interaction type (Call, Email, Meeting, Note), a Multiline Input for description, and a Log Interaction button. Create a workflow on the button: Create a new Interaction with customer = Current Page's Customer, type = Dropdown's value, description = Input's value, date = Current Date/Time, and logged_by = Current User. After creation, also update the Customer record: Make changes to Current Page's Customer → set last_contacted = Current Date/Time. Reset the inputs after saving.

Expected result: Users can quickly log interactions from the customer detail page, and the customer's last_contacted date updates automatically.

6

Implement customer tagging for segmentation

On the customer detail page (or the edit popup), add a Multi-dropdown or a tag input for the tags field. To add a tag, create a workflow that uses Make changes to Current Page's Customer → tags add [new tag value]. To remove a tag, use tags remove [tag value]. On the customer list page, add a tag filter: another Dropdown or Multiline Input where the user enters a tag. Add a constraint to the Repeating Group search: tags contains Dropdown Tag Filter's value (use Ignore empty constraints so it shows all customers when the filter is blank).

Pro tip: Create an Option Set called Customer Tags with predefined tags (VIP, Enterprise, Churned, etc.) so tags are consistent across all customers.

Expected result: Customers can be tagged for segmentation, and the customer list can be filtered by tag.

Complete working example

Workflow summary
1CUSTOMER MANAGEMENT WORKFLOW SUMMARY
2=====================================
3
4DATA TYPES:
5 Customer
6 - first_name (text)
7 - last_name (text)
8 - email (text)
9 - phone (text)
10 - company (text)
11 - status (Option Set 'Customer Status'): active, inactive, lead
12 - source (Option Set 'Customer Source'): referral, website, ad
13 - notes (text)
14 - tags (list of text or Option Set 'Customer Tags')
15 - created_by (User)
16 - last_contacted (date)
17 - user_account (User, optional)
18
19 Interaction
20 - customer (Customer)
21 - type (Option Set 'Interaction Type'): call, email, meeting, note
22 - description (text)
23 - date (date)
24 - logged_by (User)
25
26OPTION SETS:
27 Customer Status: Active, Inactive, Lead
28 Customer Source: Referral, Website, Ad, Other
29 Interaction Type: Call, Email, Meeting, Note
30 Customer Tags: VIP, Enterprise, SMB, Churned, Trial
31
32PAGES:
33 customers (list page)
34 - Search Input + Status Dropdown + Tag Dropdown
35 - Repeating Group: Customer
36 Data source: Search for Customer
37 first_name contains OR last_name contains OR email contains
38 status = Dropdown value (ignore empty)
39 tags contains Tag Dropdown value (ignore empty)
40 - Button 'Add Customer' Show Popup Customer Form
41
42 customer-detail (detail page, type: Customer)
43 - Profile card: name, email, phone, company, status
44 - Tag list with add/remove
45 - Interaction log: Repeating Group of Interactions
46 Data source: Search for Interaction where customer = page data
47 Sorted by date descending
48 - Quick log form: type dropdown + description + Log button
49
50WORKFLOWS:
51 Add Customer:
52 Show Popup Fill inputs Save Create new Customer
53 Edit Customer:
54 Display data in popup Modify inputs Save Make changes
55 Log Interaction:
56 Create new Interaction Make changes to Customer (last_contacted)
57 Add Tag:
58 Make changes to Customer tags add [value]
59 Remove Tag:
60 Make changes to Customer tags remove [value]

Common mistakes when managing customers in Bubble

Why it's a problem: Using a single search constraint for name instead of searching both first and last name

How to avoid: Use OR logic in your search or create a computed full_name field that combines first and last name for simpler searching

Why it's a problem: Not adding Privacy Rules to the Customer Data Type

How to avoid: Add Privacy Rules that restrict Customer visibility to the user who created them or to admin-role users

Why it's a problem: Forgetting to update last_contacted when logging an interaction

How to avoid: In the Log Interaction workflow, add a Make changes to Customer action that sets last_contacted to Current Date/Time

Best practices

  • Use Option Sets for status, source, and interaction type to prevent inconsistent data entry
  • Add Privacy Rules to restrict customer data visibility based on user role or ownership
  • Create a full_name computed field or search across both first and last name fields
  • Enable Ignore empty constraints on search filters so all customers show when no filter is active
  • Update last_contacted automatically whenever a new interaction is logged
  • Use pagination on the customer list Repeating Group to keep page loads fast as your customer count grows
  • Store the creating user in created_by for ownership tracking and Privacy Rule enforcement

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I am building a customer management system in Bubble. I need a customer list with search and filter, a detail page with interaction history, and tagging for segmentation. Can you help me design the data structure and page layout?

Bubble Prompt

Help me build a customer management feature. I need a Customer Data Type with name, email, status, and tags fields. Create a searchable customer list page and a customer detail page with an interaction log.

Frequently asked questions

Should I use the User Data Type or a separate Customer Data Type?

Use a separate Customer Data Type. This keeps customer business data separate from authentication data, allows you to have customers who are not app users, and gives you more flexibility with Privacy Rules and field management.

How do I handle duplicate customers?

Before creating a new customer, search for existing records with the same email. If found, show a warning or redirect to the existing customer's detail page. Add a unique constraint workflow check on the email field.

Can I import existing customers from a spreadsheet?

Yes. Go to Data tab, App data, select the Customer Data Type, and click Upload. Map your CSV columns to Customer fields. Make sure date fields are formatted correctly and any linked fields use Unique IDs.

How do I export my customer list?

Go to Data tab, App data, select Customer, and click Export. Bubble generates a CSV file with all customer records. For automated exports, enable the Data API in Settings and use it to pull records programmatically.

Will my customer list get slow with thousands of records?

Bubble processes about 100 rows per second, so large lists benefit from pagination (10-20 items per page) and database-level constraints rather than client-side filtering. Keep Repeating Group page sizes small.

Can RapidDev help build a full customer management system?

Yes. RapidDev can build complete customer management systems in Bubble including advanced search, automated tagging, email integration, reporting dashboards, and team collaboration features.

How do I track customer lifetime value?

Create an Order or Payment Data Type linked to Customer. Add a computed field on Customer or use a search aggregation to calculate the sum of all payments. Display this on the customer detail page.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.