Last updated April 21, 2026
When an agency has more than one person, each agent should see their own pipeline — not the whole agency's. Owners and admins still see everything so they can manage the team, but agents get a focused view of just their trips, tasks, leads, and commissions.
This article explains exactly what each role sees, how "unassigned" records behave, and where the rules are enforced.
| Role | Trips / Tasks / Leads | Bookings, Invoices, Payments | Commissions | Team payouts |
|---|---|---|---|---|
| Owner | All in workspace | All in workspace | All in workspace | All |
| Admin | All in workspace | All in workspace | All in workspace | All |
| Assistant | All in workspace | All in workspace | All in workspace | All |
| Agent | Only trips assigned to them + unassigned | Only linked to their trips | Only tied to their bookings | Only their own |
| Solo owner (one-person workspace) | Everything, always | Everything | Everything | N/A |
"Unassigned" means the assigned_to field on a trip is empty. Unassigned trips stay visible to every agent so the team can pick them up — this is how lead triage and the shared inbox work.
Role-based scoping applies everywhere the data is agent-specific:
Reports and the agency-wide analytics page remain owner/admin only.
An agent in a team workspace does not see:
Public share links (proposal URLs, published itinerary tokens, client portal links) work independently of role — anyone with the link can view them as intended.
Records with no assigned_to stay visible to every agent. That covers:
This matches how the inbox triage page and the leads queue already work. Once an agent claims a trip (sets assigned_to), it disappears from other agents' views.
Agent visibility is enforced at two layers:
assigned_to cannot leak another agent's data.The DB-layer enforcement was added in migration 256_role_aware_agent_rls.sql. Tables covered:
trips, tasks, leads, email_threads, bookings, payments, invoices, proposals_v2, itineraries, promotion_applications, inbound_emails, commission_entries, commission_submissions, agent_payout_batches.
When an owner or admin reassigns a trip from one agent to another, every agent-scoped record linked to that trip (bookings, tasks, invoices, payments, commissions) follows automatically — there's no separate reassignment step per record.
The previous agent loses visibility into the trip the moment the new assigned_to is saved. The new agent sees it on their next page load.
Owners who want to work their own pipeline can set assigned_to = themselves on their trips. Their role still gives them full-workspace visibility, so the assigned_to field acts as a personal filter for the owner's dashboard without hiding anything from them.
"Why is my dashboard showing numbers different from my colleague's?" You're each seeing your own pipeline. That's by design.
"I can see an unassigned trip — should I?" Yes. Unassigned trips are shared so the team can claim them. Once you claim it (or someone else does), it becomes scoped to that agent.
"I was made an admin — do I see more now?" Yes. Admins see the full workspace. If you're an admin and a widget still looks scoped, log out and back in so your session picks up the new role.
"Can an agent accidentally edit another agent's trip?" Visibility prevents reading. Write permissions (insert/update/delete) are governed separately and may still be workspace-wide in some tables — tightening those is a planned follow-up.
From booking to agent paid in 5 steps. Plain English, no jargon.
Understand how commissions work for solo agents, agents in a JourneyFuse agency, and admins or owners.
A central hub for your entire agency — stay connected with the Feed, find teammates in the Directory, and manage it all from one place.
Ready To Launch
JourneyFuse is ready to sell, service, and scale with you now. No waitlist. No stitched-together stack. Just one sharp platform your team can actually run on.

Bold branding outside. Serious operating system inside.