Skip to content

13.1 Multi-User Scenarios

Taibles is built for teams. Multiple users can work on the same taible simultaneously, with real-time updates ensuring everyone stays in sync. This section explains how teams collaborate effectively using Taibles.


Overview: Collaboration Features

Built for Teams

Taibles supports:

🔄

Real-Time Updates

See changes instantly as teammates work. WebSocket-powered live sync with no page refresh needed.

👥

User Assignment

Assign rows to team members, filter to see "my tasks", and balance workload across your team.

No Conflicts

Optimistic locking prevents overwrites. Multiple users can edit simultaneously without data loss.

Real-time collaboration:

  • Multiple users viewing same taible simultaneously
  • Live updates via WebSocket (no page refresh)
  • See changes as they happen
  • No conflicts or data loss

User assignment:

  • Assign rows to specific users
  • Filter to see "my tasks"
  • Workload distribution
  • Clear ownership

Transparent operations:

  • See execution progress in real-time
  • Track status changes live
  • Clear visual indicators
  • Coordinated workflow

Part 1: Real-Time Collaboration

How It Works

WebSocket-powered live updates:

A
User A
Makes a change
🖥️
Taibles Server
Saves & broadcasts
B
User B
Sees change instantly
⚡ Updates in ~100ms

When any user makes a change:

  1. The change is sent to the Taibles server
  2. Server saves to database
  3. Server broadcasts update to all connected users
  4. Everyone sees the change within milliseconds

No page refresh needed - Changes appear instantly for all users


What Updates in Real-Time

Cell state changes:

Watch Execution Progress in Real-Time

All users see the same states as cells execute

🕐
Queued
Waiting to execute
🕐
Queued
⚙️
Running
Done
Animation demonstrates real-time state changes all users see

When execution starts, everyone sees the progression:

  • Cell shows "Queued" with clock icon (amber)
  • Cell shows "Running" with spinning gear (green)
  • Cell shows "Done" with checkmark (green)
  • All users see each state change instantly

All within 100ms - Real-time batching for performance


Manual edits:

Manual Edits Sync Instantly

When someone edits a cell, everyone sees the update immediately

User A (Editing)
User B (Viewing)
Customer Name
John Smith
Try editing the name and clicking Save to see the real-time update

When someone edits a cell:

  1. User types and saves
  2. Cell flashes briefly to show update
  3. All other users see the new value immediately
  4. Cell flashes for them too

Row additions:

New Rows Appear for Everyone

When someone adds a row, all users see it instantly

IDTask NameStatus
1Task 1Done
2Task 2Done
3Task 3In Progress
Click to add a row - all users would see it instantly

When someone adds a row:

  • Row appears at bottom for everyone
  • All users can start working on it immediately
  • No coordination needed

Column changes:

Column Changes Appear Instantly

When an admin adds a column, all users see it without refresh

ID
Name
Status
Sample row data would appear here...
Admins can add columns - all users see changes instantly

When an admin adds or modifies a column:

  • Column appears in grid for all users
  • Configuration updates apply immediately
  • No refresh needed

Automation updates:

Automation Updates in Real-Time

When a trigger fires, all users see the new row and execution progress

IDCustomerEnrich DataLead Score
1John Doe✓ Done✓ Done
2Jane Smith✓ Done✓ Done
Watch the new row appear and cells execute in real-time

When a trigger fires (like a webhook):

  • New row created and visible to all
  • Cells start calculating
  • Everyone sees execution progress live
  • States update in real-time: Queued → Running → Done

Collaborative Viewing

Scenario: Marketing Team Reviews Leads

S
Sarah
Manager
👁️Views all 1,000 leads
📊Monitors metrics
🔔Sees new leads arrive
📝Watches team updates
M
Mike
Sales Rep
🔍Filter: Assigned To = Mike
📋Sees 47 leads
✏️Updates "Contacted"
Changes visible to all
L
Lisa
Sales Rep
🔍Filter: Assigned To = Lisa
📋Sees 53 leads
✏️Adds notes
Changes visible to all

Setup:

Taible: Inbound Leads (1,000 rows)

Team:
- Sarah (Manager) - Reviewing all leads
- Mike (Sales Rep) - Working on assigned leads
- Lisa (Sales Rep) - Working on assigned leads

Sarah's view:

  • No filters applied (sees all 1,000 leads)
  • Watches new leads arriving from webhook
  • Monitors lead scores calculating
  • Sees status updates from team

Mike's view:

  • Filter: Assigned To = Mike
  • Sees: 47 leads assigned to him
  • Updates "Contacted" status
  • All changes visible to everyone instantly

Lisa's view:

  • Filter: Assigned To = Lisa
  • Sees: 53 leads assigned to her
  • Adds notes to "Notes" column
  • All changes visible to everyone instantly

💡 Real-Time Benefits

✅ New leads appear for everyone instantly
✅ Status updates visible immediately
✅ Notes appear as soon as saved
✅ No refresh needed
✅ No conflicts or overwrites

No Conflicts, No Overwrites

Optimistic locking prevents conflicts:

Solution: Protected Changes

Initial State

Version 1Taible has 5 columns

User A

Loads taible (Version 1)

Modifies Column X

User B

Loads taible (Version 1)

Modifies Column Y

User A saves first

Version 2Column X changes saved ✓

User B tries to save

Conflict DetectedSave rejected ✗

System detects version mismatch (User B still has Version 1, but current is Version 2)

User B refreshes and retries

1. Refreshes page, sees User A's changes

2. Makes Column Y changes again to Version 2

Version 3Both changes preserved ✓

Scenario: Two users edit same row

Initial state:

  • Row 1: Status = "New", Notes = ""

User A starts editing:

  • Changes Status to "Contacted"
  • Not saved yet, still typing

User B starts editing:

  • Adds Notes: "Called, left voicemail"
  • Saves immediately

User A saves:

  • Status becomes "Contacted"

Final state:

  • Row 1: Status = "Contacted", Notes = "Called, left voicemail"
  • Both changes preserved!

Why it works:

  • Each field updated independently
  • Version checking prevents overwrites
  • Last write wins per field
  • No data loss

💡 Edge Case

If two users edit the **same field** simultaneously: - Last save wins - No corruption (won't merge incorrectly) - Best practice: Coordinate when editing same field

Real-Time State Indicators

Column headers show execution status:

Column Headers Show Live Status

Click the header to navigate to the first active cell

Lead Enrichment
⚙️ Running: 3 🕐 Queued: 47 ⚡ Failed: 2
👆 Click the header above
Navigates to first running/queued cell
These counts update in real-time as cells execute

The column header displays live counts:

  • Running: 3 (with spinning gear icon)
  • Queued: 47 (with clock icon)
  • Failed: 2 (with error icon)

Click the header → Navigates to first running/queued cell

All users see same indicators in real-time


Individual cells show execution states:

StateVisualIconWhen You See It
IdleIdleCell not yet calculated
QueuedQueued🕐Waiting to execute
Running⚙️ Running ⚙️Currently executing
DoneDoneSuccessfully completed
FailedFailedExecution error
Rate Limited Rate Limited ⏸️Throttled by rate limit
SkippedSkippedCondition not met
StateBadge ColorIconWhen You See It
IdleGrayNoneCell not yet calculated
QueuedAmberClockWaiting to execute
RunningGreenSpinning gearCurrently executing
DoneGreenCheckmarkSuccessfully completed
FailedRedLightning boltExecution error
Rate LimitedYellowPauseThrottled by rate limit
SkippedGrayCircle-slashCondition not met

All users see state changes as they happen


Performance and Scalability

How Taibles handles many users:

📦

Batching

100ms update window
Groups multiple changes
Single WebSocket message
Reduced network traffic

Efficient Updates

Only changed data sent
Not entire grid
Minimal bandwidth usage
Fast on slow connections
🚀

Optimized Rendering

Only visible cells rendered
Smooth scrolling
No performance degradation
Handles 10,000+ rows
Result: Feels fast even with 10+ simultaneous users

Batching (100ms window):

  • Multiple updates grouped together
  • Sent as single WebSocket message
  • Reduces network traffic
  • Smooth UI updates

Efficient updates:

  • Only changed data sent
  • Not entire grid
  • Minimal bandwidth usage
  • Fast even with slow connections

Optimized rendering:

  • Only visible cells rendered
  • Smooth scrolling
  • No performance degradation
  • Handles 10,000+ row taibles

Result: Feels fast even with 10+ simultaneous users


Use Cases for Real-Time Collaboration

1. Team Dashboard Monitoring

📺

Team Dashboard Monitoring

Support team monitors ticket queue on wall-mounted display

📋 Setup
Taible: Support Tickets
Display: Wall-mounted monitor
Real-time updates:
  • • New tickets arrive (webhook)
  • • Agents assign themselves
  • • Status updates live
  • • SLA timers countdown
✨ Benefits
Everyone sees current state
No manual refresh
Immediate new ticket visibility
Team coordination

Scenario: Support team monitors ticket queue

Setup:

Taible: Support Tickets
Displayed on: Wall-mounted monitor

Updates in real-time:
- New tickets arrive (webhook)
- Agents assign themselves
- Status updates (open → in-progress → closed)
- SLA timers countdown

Benefits:

  • Everyone sees current state
  • No manual refresh
  • Immediate visibility of new tickets
  • Team coordination

2. Campaign Performance Tracking

📊

Campaign Performance Tracking

Marketing team watches live campaign results together

📋 Setup
Taible: Campaign Responses
Watchers:
  • • Campaign manager
  • • Data analyst
  • • Executive
Real-time updates:
  • • Form submissions (webhook)
  • • Lead scoring calculations
  • • Conversion tracking
✨ Benefits
Live performance metrics
Immediate issue detection
Collaborative decision-making
Celebrate wins together

Scenario: Marketing team watches campaign results

Setup:

Taible: Campaign Responses
Multiple users watching simultaneously:
- Campaign manager
- Data analyst
- Executive

Updates in real-time:
- Webhook from form submissions
- Lead scoring calculations
- Conversion tracking

Benefits:

  • Live performance metrics
  • Immediate issue detection
  • Collaborative decision-making
  • Celebrate wins together

3. Approval Workflows

Approval Workflows

Content approval pipeline with real-time handoffs

📋 Setup
Taible: Content Queue
Roles:
  • • Writers: Submit content
  • • Editors: Review & approve
  • • Publishers: Publish approved
Real-time updates:
  • • New submissions appear
  • • Approval status updates
  • • Publishing status updates
✨ Benefits
No waiting for refresh
Clear pipeline visibility
Fast turnaround
Coordinated workflow

Scenario: Content approval pipeline

Setup:

Taible: Content Queue

Roles:
- Writers: Submit content
- Editors: Review and approve
- Publishers: Publish approved content

Updates in real-time:
- New submissions appear
- Approval status updates
- Publishing status updates

Benefits:

  • No waiting for refresh
  • Clear pipeline visibility
  • Fast turnaround
  • Coordinated workflow

Part 2: User Assignment

Why User Assignment Matters

👤 Clear Ownership

  • "This row is Mike's responsibility"
  • No confusion about who handles what
  • Clear accountability

⚖️ Workload Distribution

  • Balance tasks across team
  • See who's overloaded
  • Fair assignment

🔍 Filtered Views

  • "Show me my tasks"
  • Focus on your work
  • Reduce noise

📊 Reporting

  • Tasks per user
  • Completion rates
  • Performance metrics

Benefits:

Clear ownership:

  • "This row is Mike's responsibility"
  • No confusion about who handles what
  • Accountability

Workload distribution:

  • Balance tasks across team
  • See who's overloaded
  • Fair assignment

Filtered views:

  • "Show me my tasks"
  • Focus on your work
  • Reduce noise

Reporting:

  • Tasks per user
  • Completion rates
  • Performance metrics

User-Select Columns

What they are:

📋

UserSelectColumnOverview

Component placeholder - demonstrates UserSelectColumnOverview

  • Manual column type (like text or number)
  • Dropdown of organization users
  • Single or multiple user selection
  • Displays user's name

Use for:

  • Assigned To (who owns this row)
  • Reviewed By (who checked it)
  • Approved By (who approved it)
  • Created By (manual tracking)

Creating User-Select Column

Step-by-step guide:

📋

CreateUserSelectColumnSteps

Component placeholder - demonstrates CreateUserSelectColumnSteps

  1. Click "+ Add Column" button in toolbar

  2. Search for "User Select" in column type list

    • Icon shows users symbol
    • Category: Manual column types
  3. Click "User Select"

  4. Configure the column:

    • Column Name: assigned_to
    • Label: "Assigned To"
    • Description: "Team member assigned to this task"
    • ☐ Allow multiple selections (check if needed)
  5. Click "Add Column"

  6. Column appears in grid

💡 Single vs Multiple

- **Single selection**: One user per row (typical) - **Multiple selection**: Several users per row (co-owned tasks)

Assigning Users to Rows

Method 1: Click cell to assign

📋

AssignUserClickCellDemo

Component placeholder - demonstrates AssignUserClickCellDemo

  1. Find the row you want to assign

  2. Click the cell in "Assigned To" column

  3. Dropdown opens showing all organization users:

    • User's full name displayed
    • Email shown below name
    • Scrollable list
  4. Click a user to assign them

  5. User's name appears in the cell

  6. All viewers see assignment immediately (real-time)


Method 2: Bulk assignment

📋

BulkAssignmentDemo

Component placeholder - demonstrates BulkAssignmentDemo

  1. Select multiple rows using checkboxes on the left

  2. Right-click the selected rows

  3. Choose "Set field value" → "Assigned To"

  4. Select a user from the dropdown

  5. All selected rows assigned to that user at once

Use for: Batch assignment, workload distribution


Method 3: Automated assignment (Advanced)

📋

AutomatedAssignmentDemo

Component placeholder - demonstrates AutomatedAssignmentDemo

Use a Code column to auto-assign based on logic:

groovy
// Round-robin assignment example
def users = ['mike@company.com', 'lisa@company.com', 'sarah@company.com']
def rowNumber = data['row_number'] as Integer
def assignedUser = users[rowNumber % users.size()]
return assignedUser

Use for: Load balancing, skill-based routing, automatic distribution


Filtering by Assigned User

Show only your tasks:

📋

FilterByAssignedUserSteps

Component placeholder - demonstrates FilterByAssignedUserSteps

Step 1: Open filter panel

  1. Click "Filter" button (funnel icon in toolbar)

  2. Filter panel opens on the right side


Step 2: Create filter

  1. Click "+ Add Filter" button

  2. Configure the filter:

    • Field: assigned_to
    • Operator: equals
    • Value: [Select your user from dropdown]
  3. Click "Apply"

  4. Grid shows only your rows


Save as personal view:

📋

SavePersonalViewDemo

Component placeholder - demonstrates SavePersonalViewDemo

  1. Click "Save View" button (after applying filter)

  2. Enter name: "My Tasks"

  3. View is saved (only you see this personal view)

  4. Switch views using view dropdown in toolbar

Result: Quick toggle between "All Tasks" and "My Tasks"


Team Workload View

See workload distribution:

📋

TeamWorkloadViewDemo

Component placeholder - demonstrates TeamWorkloadViewDemo

Option 1: Group by assigned user

  1. Click column header (Assigned To)

  2. Choose "Group by this column" from menu

  3. Grid groups rows by user:

    ▼ Sarah Johnson (12 tasks)
      - Task 1
      - Task 2
      ...
    
    ▼ Mike Chen (8 tasks)
      - Task 3
      - Task 4
      ...
    
    ▼ Lisa Rodriguez (15 tasks)
      - Task 5
      - Task 6
      ...
  4. See count per user at a glance

Use for: Workload balancing, capacity planning


Use Case: Support Ticket Assignment

Complete workflow example:

📋

SupportTicketWorkflowDemo

Component placeholder - demonstrates SupportTicketWorkflowDemo

Setup:

Taible: Support Tickets

Columns:
- ticket_id (auto-generated)
- customer_email (text)
- subject (text)
- description (text)
- priority (dropdown: High/Medium/Low)
- assigned_to (user-select) ← Assignment column
- status (dropdown: New/In Progress/Resolved)
- resolution (text)

Workflow:

Step 1: Tickets arrive

Webhook from support form
→ New row created
→ assigned_to = (unassigned)
→ status = "New"

All agents see new ticket in real-time


Step 2: Manager assigns

Manager (Sarah):
1. Sees new ticket
2. Checks team workload
3. Assigns to Mike (least busy)
4. Clicks cell → Selects "Mike Chen"

Mike sees assignment immediately (no refresh)


Step 3: Agent works ticket

Mike:
1. Applies filter: assigned_to = Mike
2. Sees his 8 tickets
3. Opens ticket, reads description
4. Updates status = "In Progress"
5. Contacts customer
6. Adds resolution notes
7. Updates status = "Resolved"

All updates visible to team in real-time


Step 4: Manager monitors

Sarah:
1. Views all tickets (no filter)
2. Sees Mike's status updates live
3. Tracks SLA compliance
4. Reassigns if agent unavailable

💡 Workflow Benefits

✅ Clear ownership (no duplicate work)
✅ Fair distribution (manager sees workload)
✅ Focus (agents see only their tickets)
✅ Transparency (team sees all activity)
✅ Real-time (no lag, no refresh)

Part 3: Comments and Notes

Current: Notes Columns

Available now:

📋

NotesColumnsDemo

Component placeholder - demonstrates NotesColumnsDemo

Text columns for notes:

  • Create a "Notes" column (text type)
  • Create a "Review Comments" column (text area type)
  • Create an "Internal Notes" column (text type)

Usage:

  1. Click cell
  2. Type notes
  3. Save (click away or press Enter)
  4. All users see notes immediately

Limitations:

  • No threading (single text field)
  • No @mentions
  • No user attribution (can't see who wrote what)
  • No timestamps per comment

Workaround: Manual Comment Tracking

📋

ManualCommentTrackingDemo

Component placeholder - demonstrates ManualCommentTrackingDemo

Pattern for tracking who wrote what:

Create a "Comments" text area column and use this format:

[2025-11-19 10:15 - Sarah] Reviewed, looks good
[2025-11-19 11:30 - Mike] Fixed issues, ready for approval
[2025-11-19 14:20 - Lisa] Approved and published

Manual format includes:

  • Date and time
  • User name
  • Comment text

Pros: Timestamped, attributed, chronological Cons: Manual formatting, not structured


Summary: Multi-User Scenarios

You now understand how teams collaborate in Taibles:

Real-Time Collaboration:

  • WebSocket-powered live updates (100ms latency)
  • Multiple users viewing simultaneously
  • All changes visible instantly
  • No conflicts, no overwrites
  • Optimistic locking prevents data loss

What Updates in Real-Time:

  • Cell state changes (Idle → Queued → Running → Done)
  • Manual edits (text, numbers, selections)
  • Row additions (from users or triggers)
  • Column changes (configuration updates)
  • Automation updates (trigger-created rows)

User Assignment:

  • User-select columns (single or multiple)
  • Click cell to assign
  • Bulk assignment for multiple rows
  • Filter to see "my tasks"
  • Workload distribution visibility

Practical Workflows:

  • Support ticket assignment
  • Campaign monitoring
  • Approval workflows
  • Team dashboards
  • Collaborative data entry

Current Features & Limitations:

  • Notes: Basic text columns now
  • User tracking: Manual timestamp format
  • Workload views: Grouping available now

Real-World Collaboration Patterns

Pattern 1: Manager + Team Members

📋

ManagerTeamPattern

Component placeholder - demonstrates ManagerTeamPattern

Manager: Assigns tasks, monitors progress, reassigns as needed
Team: Filters to "my tasks", updates status, adds notes
Everyone: Sees real-time updates, no coordination overhead

Pattern 2: Pipeline with Handoffs

📋

PipelineHandoffPattern

Component placeholder - demonstrates PipelineHandoffPattern

Stage 1 (Sarah): Receives, qualifies, assigns to stage 2
Stage 2 (Mike): Enriches, analyzes, assigns to stage 3
Stage 3 (Lisa): Reviews, approves, marks complete
Handoffs: Visible in real-time, no email needed

Pattern 3: Distributed Team

📋

DistributedTeamPattern

Component placeholder - demonstrates DistributedTeamPattern

Multiple time zones, some asynchronous work
Real-time updates when overlap
Filter to see what changed since you last looked
Status updates propagate without meetings

Next Steps

You've completed Section 13.1: Multi-User Scenarios! You now know:

  • How real-time collaboration works (WebSocket, no refresh)
  • What updates in real-time (cells, rows, columns, automations)
  • How to assign users to rows (user-select columns)
  • How to filter by assigned user ("my tasks")
  • Practical workflows for team collaboration

Next: Section 13.2: Permissions & Access Control → Learn how Taibles handles user roles, permissions, and data security.

Let's master access control!

Built with VitePress