Coming from this Slack thread, let's let admins set a preferred reporting workspace on individual cards.
Details
- Today there's no way to control which workspace an individual card's transactions report to. This is most noticeable when a card feed is linked to multiple workspaces and a single cardholder has cards assigned to each workspace. Both cards report to the feed's original workspace, even if the admin intended each card to report to the workspace where it was assigned.
- To address this, let's add a row to the card details page of every BYOC or Expensify card, letting an admin set which workspace that card's transactions report to. It will always be available.
- Selectable workspace options on the row would include any workspace the user is a member of with autoReporting enabled.
- Prioritization order: the existing prioritization order doesn't change, except that this new card-level preferred workspace setting is slotted in as the second-highest priority. For clarity purposes, I've listed the full order below:
- Domain group "Preferred Workspace" or "Expensify Card Preferred Workspace" setting. These domain group settings remain highest priority and this new setting cannot override them.
- Card-level preferred workspace (NEW). This takes precedence over the card feed-level "Preferred Workspace" setting, but only when actively set.
- Card-feed level preferred workspace. If neither of the two above is in use or actively set, this takes next precedence, same as now.
- Individual default workspace. This is the lowest level of precedence, same as now.
- Row structure: a plain push row (no toggle). The row loses its chevron and becomes read-only whenever it can't be changed, with explanatory text below it in those cases.
- Employee default in use: the row shows whichever workspace currently wins under existing prioritization rules (card feed "Preferred Workspace," or the user's default policy) - i.e., wherever the card already effectively reports today. This is a live, computed value, not something newly stored, so shipping this doesn't silently change any card's existing reporting behavior. The row is interactive (chevron present).
- Custom: the row shows the explicitly-selected workspace. Interactive row.
- Submissions disabled, no other eligible workspaces: the row shows "None," read-only (no chevron), with explanatory text below, e.g. "Submissions must be enabled to configure this setting."
- Submissions disabled, but other eligible workspaces exist: the row still shows "None," but stays interactive, since the admin can pick a different, valid workspace from the list.
- Single-workspace case: if the cardholder only belongs to one workspace, the row shows that workspace name, but read-only (no chevron), since there's nothing to pick between.
- Domain group lock case: if a domain group "Preferred Workspace" (or "Expensify Card Preferred Workspace") setting is enforcing a workspace for this cardholder, the row shows the enforced workspace, read-only (no chevron), with explanatory text below linking to the domain groups help article (rather than the domain settings page itself, since the viewer may not be a domain admin). This case always takes priority when applicable.
- Workspace picker (RHP): tapping an interactive row opens an RHP titled "Preferred workspace" (subtitle: the card name, e.g. "Alice's card"), with body text:
- "All transactions from this card will be created on this workspace."
- "Only workspaces with submissions enabled will show up here."
- Below that, a selectable list of workspaces (autoReporting-enabled only, per above).
- Includes a
None option, styled as a totally normal list item (no special icon).
- Includes an
Employee default (%workspace%) option, distinct from selecting that same workspace by name directly: choosing "Employee default" means the value keeps tracking the live resolved default (and will move if that default changes), while choosing the workspace by name pins the card to that specific workspace regardless of future default changes.
- A divider separates the
None / Employee default (%workspace%) options from the rest of the actual workspace choices below.
- I don't think we need to add this to Expensify Classic.
- Placement: This will live in its own dedicated "Preferred workspace" section on the card details page, positioned above the "Accounting" section (which only shows when an accounting integration is connected - this new section should always be visible regardless).
- If a custom selection is invalidated (i.e., workspace is deleted), we'll fall back to the Employee default.
Mockups
Employee default in use
Custom
Submissions disabled, no other eligible workspaces
Submissions disabled, but other eligible workspaces exist
Single-workspace edge case
Domain group lock case
Workspace picker
Issue Owner
Current Issue Owner: @dominictb
Coming from this Slack thread, let's let admins set a preferred reporting workspace on individual cards.
Details
Noneoption, styled as a totally normal list item (no special icon).Employee default (%workspace%)option, distinct from selecting that same workspace by name directly: choosing "Employee default" means the value keeps tracking the live resolved default (and will move if that default changes), while choosing the workspace by name pins the card to that specific workspace regardless of future default changes.None/Employee default (%workspace%)options from the rest of the actual workspace choices below.Mockups
Employee default in use
Custom
Submissions disabled, no other eligible workspaces
Submissions disabled, but other eligible workspaces exist
Single-workspace edge case
Domain group lock case
Workspace picker
Issue Owner
Current Issue Owner: @dominictb