A task assignment feature in Bubble uses a Task data type with an assigned_to field linked to the User type, a SearchBox or Dropdown for selecting assignees, and workflows that update the assignment and notify the selected team member. This tutorial covers building the assignment UI, notification system, and filtered task views so team members see only their tasks.
Overview: Building a Task Assignment Feature in Bubble
This tutorial shows how to add task assignment functionality to your Bubble app. You will create a task data model with assignee tracking, build a UI for selecting and changing assignees, set up notification workflows, and create filtered views so each team member sees their own tasks. This is a core feature for project management tools, team collaboration apps, and any workflow-based application.
Prerequisites
- A Bubble app with user authentication set up
- A basic Task or Project data type already created
- Multiple user accounts for testing assignments
- Basic familiarity with Bubble Repeating Groups and Workflows
Step-by-step guide
Set up the Task data type with assignment fields
Set up the Task data type with assignment fields
Go to the Data tab → Data types. Create or modify your Task data type with these fields: title (text), description (text), assigned_to (User), assigned_by (User), status (text: To Do, In Progress, Done), priority (text: Low, Medium, High), due_date (date), project (if you have a Project type), and assigned_date (date). The assigned_to field is the key — it links directly to the User data type, allowing you to reference the assignee's name, email, and profile throughout your app.
Pro tip: Add a list field called watchers (list of Users) if you want additional team members to receive notifications about task updates without being the primary assignee.
Expected result: A Task data type exists with assigned_to and assigned_by fields linking to the User type.
Build the assignee selector UI
Build the assignee selector UI
On your task creation or detail page, add a SearchBox element. Set its Type to User and configure it to search on the display_name or email field. Alternatively, use a Dropdown element with choices from Do a search for Users (you may want to filter this to only show team members in the same project or organization). Style the SearchBox to show the user's name and optionally their profile picture. Place it next to the task title or in a task detail panel. Label it clearly as Assignee or Assign to.
Expected result: A searchable field lets users pick a team member to assign the task to.
Create the assignment workflow
Create the assignment workflow
Go to the Workflow tab. Create a workflow for when the assignee is selected. If you are creating a new task, include the assignment in the Create a new Task action: set assigned_to = SearchBox Assignee's value, assigned_by = Current User, assigned_date = Current date/time. If you are reassigning an existing task, create a workflow for When SearchBox Assignee's value is changed: Make changes to Current Page's Task → assigned_to = SearchBox Assignee's value, assigned_by = Current User, assigned_date = Current date/time. Add an Only when condition to prevent setting assigned_to to empty accidentally.
Expected result: Tasks are created with an assignee or can be reassigned by changing the SearchBox value.
Set up assignment notifications
Set up assignment notifications
After the assignment action, add a notification step. Option A: Create a Notification data type with fields recipient (User), message (text), is_read (yes/no), task (Task), and created_date (date). In the assignment workflow, add Create a new Notification with recipient = the assigned user, message = Current User's name has assigned you a task: Task's title. Option B: Send an email using Bubble's Send email action or SendGrid plugin with the task details. Display unread notifications using a bell icon with a count badge showing Do a search for Notifications where recipient = Current User AND is_read = no :count.
Pro tip: For reassignments, also notify the previously assigned user that the task has been reassigned away from them.
Expected result: Assigned users receive a notification (in-app or email) when a task is assigned to them.
Create filtered task views by assignee
Create filtered task views by assignee
On your dashboard or task board page, add a Repeating Group for tasks. Set the Data source to Do a search for Tasks where assigned_to = Current User. This shows only the current user's tasks. Add filter options above the Repeating Group: a Dropdown for status filter, a Dropdown for priority filter, and a toggle for Show all tasks vs My tasks only. For the My tasks toggle, switch the data source constraint between assigned_to = Current User and no constraint. Sort by due_date ascending so urgent tasks appear first.
Expected result: Each team member sees their assigned tasks by default, with options to filter by status, priority, or view all tasks.
Add reassignment and unassignment capability
Add reassignment and unassignment capability
In the task detail view, make the assignee SearchBox editable. When the value changes, run the reassignment workflow (Make changes to Task → assigned_to = new value). Add a Clear/Unassign button that sets assigned_to to empty (use Make changes to Task and leave assigned_to blank). Show the assignment history by creating an AssignmentLog data type with task, from_user, to_user, and timestamp. Each time an assignment changes, create a log entry. Display the log in the task detail panel for audit purposes.
Expected result: Tasks can be reassigned or unassigned, and a history of assignment changes is maintained.
Complete working example
1TASK ASSIGNMENT WORKFLOW SUMMARY2=================================34DATA TYPES:5 Task6 - title (text)7 - description (text)8 - assigned_to (User)9 - assigned_by (User)10 - assigned_date (date)11 - status (text: To Do / In Progress / Done)12 - priority (text: Low / Medium / High)13 - due_date (date)14 - project (Project, optional)1516 Notification17 - recipient (User)18 - message (text)19 - is_read (yes/no, default no)20 - task (Task)21 - type (text: assignment / reassignment / completion)2223 AssignmentLog24 - task (Task)25 - from_user (User)26 - to_user (User)27 - changed_by (User)28 - timestamp (date)2930WORKFLOW 1: Create Task with Assignment31 Event: Button Create Task clicked32 Action 1: Create a new Task33 title, description, priority, due_date = form values34 assigned_to = SearchBox Assignee's value35 assigned_by = Current User36 assigned_date = Current date/time37 status = To Do38 Action 2: Create a new Notification39 recipient = SearchBox Assignee's value40 message = "[Current User's name] assigned you: [title]"41 task = Result of step 14243WORKFLOW 2: Reassign Task44 Event: SearchBox Assignee value is changed45 Only when: SearchBox value is not empty46 Action 1: Create AssignmentLog47 from_user = Current Page's Task's assigned_to48 to_user = SearchBox Assignee's value49 changed_by = Current User50 Action 2: Make changes to Current Page's Task51 assigned_to = SearchBox Assignee's value52 assigned_by = Current User53 assigned_date = Current date/time54 Action 3: Create Notification for new assignee55 Action 4: Create Notification for old assignee5657WORKFLOW 3: Unassign Task58 Event: Button Unassign clicked59 Action: Make changes to Current Page's Task60 assigned_to = (empty)6162DASHBOARD:63 My Tasks: Search Tasks where assigned_to = Current User64 All Tasks: Search Tasks (no assignee constraint)65 Sort: due_date ascending66 Filters: status, priority, assigneeCommon mistakes when building a task assignment feature in Bubble.io: Step-by-Step Guide
Why it's a problem: Using a text field instead of a User field for assigned_to
How to avoid: Always use a field of type User for assigned_to so you maintain the full database relationship.
Why it's a problem: Not handling the case where assigned_to is empty
How to avoid: Add Only when conditions on workflows that reference the assignee. On display elements, use conditional visibility to show Unassigned when the field is empty.
Why it's a problem: Sending notifications without checking if the assignee actually changed
How to avoid: Add an Only when condition: SearchBox Assignee's value is not Current Page's Task's assigned_to before sending notifications.
Best practices
- Use a User-type field for assigned_to to maintain full database relationships
- Notify both the new assignee and the previous assignee when tasks are reassigned
- Show an Unassigned state clearly in the UI when no one is assigned to a task
- Filter dashboard views by assigned_to = Current User as the default view
- Log all assignment changes for accountability and audit trails
- Use SearchBox instead of Dropdown for teams with more than 10-15 members
- Sort tasks by due date and priority to surface urgent items first
- Add bulk assignment capability for assigning multiple tasks at once
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I am building a project management app in Bubble.io and need a task assignment feature. I want team members to assign tasks to each other, receive notifications, and see only their assigned tasks on the dashboard. Can you outline the data types, assignment workflow, and notification system?
Add task assignment to my app. I need a Task data type with an assigned_to field, a SearchBox to select assignees, notification when assigned, and a dashboard that filters tasks by the current user. Include reassignment and assignment history.
Frequently asked questions
Can I assign a task to multiple users?
Yes. Change the assigned_to field from User to list of Users. Modify the SearchBox to allow multiple selections or add an Add Assignee button that adds users to the list one by one.
How do I show the assignee's profile picture next to the task?
In the Repeating Group cell, add an Image element. Set its source to Current cell's Task's assigned_to's profile_image. Add a conditional to show a default avatar when the field is empty.
Can assignees change the task status?
Yes. Add a Status Dropdown in the task cell or detail view. Create a workflow that updates the status when changed. Add an Only when condition to allow only the assignee or the task creator to change status.
How do I prevent users from assigning tasks to people outside their team?
Filter the SearchBox data source to only show users who belong to the same team or project. Use a constraint like team = Current User's team in the search.
Should I use email or in-app notifications for assignments?
Use both. In-app notifications provide immediate visibility within the app, while email notifications reach users who are not currently logged in. Let users configure their notification preferences.
Can RapidDev help build advanced project management features?
Yes. RapidDev can help implement complex features like Kanban boards with drag-and-drop, Gantt charts, workload balancing, automated task routing, and integrations with tools like Slack and email.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation