ProjectR Docs
Screen MapDashboard

Notifications

Dashboard: every screen, state and flow in Notifications.

30 screens and overlays, 181 states, 4 flows. Frames show a real screenshot where one was captured and a wireframe card where the state needs data or conditions a device run cannot produce.

Flows

Send a message

Step 1
Messages (Web)
Messages list with the delivery overview on top
Create message
Step 2
New message (Web)
Empty editor: content, audience, schedule and a push preview
Fill title, message and audience
Step 3
New message, Audience estimate (Web)
Segment audiences show Reaches about N people
Send
Step 4
Send or schedule this message?, Send now copy (Web)
Confirm names the audience and warns a sent message cannot be recalled
Confirm
Step 5
Wireframe

Message

Edge

Other statuses open results

Scheduled, sending, sent and cancelled render MessageResults

Needs data: Needs a message row

The message page now shows results
Step 6
Wireframe

Message results

Success

Delivery counts

Five cards: Recipients, Push reached with a percent, No device, Push failed, Opened with a percent of in-app

Needs data: Needs a scheduled, sent or cancelled message row

Recipients, Push reached, No device, Push failed, Opened

Branches and edge cases

Edgefrom step 1
Notifications, Always redirects (Web)
Header bell: View all notifications
Gatefrom step 1
Wireframe

Messages

Gate

Admin only actions

Create message and the Edit, Duplicate, Cancel, Delete items are disabled with the tooltip Requires admin role below admin

Needs data: Needs an account whose role is below admin

Below admin
Emptyfrom step 1
Wireframe

Messages

Empty

No messages yet

Title No messages yet on All; on a status tab it reads No drafts messages, No scheduled messages or No sent messages. Create message shows for admins

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

No messages yet
Successfrom step 1
Wireframe

Messages

Success

Duplicated

Toast Copied to a new draft, then the new draft opens in the editor

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Row menu: Duplicate
Edgefrom step 1
Wireframe

Cancel or delete a message

Edge

Cancel variant

Title Cancel this scheduled message?; the message will not be sent and can be duplicated into a new draft

Needs data: Needs a draft, scheduled or cancelled message row

Row menu: Cancel or Delete
Edgefrom step 2
New message, Send disabled until valid (Web)
Send stays disabled
Edgefrom step 2
New message, Before you send hint (Web)
Before you send hint
Errorfrom step 2
New message, Test needs content (Web)
Test needs a title and message
Successfrom step 2
Wireframe

New message

Success

Test sent

Toast with the server message, fallback Test sent. Sends a real push and inbox row to the signed-in admin only

Needs data: Sends a real push and inbox row to the signed-in admin

Test sent to the admin
Successfrom step 2
Wireframe

New message

Success

Draft saved

Toast Draft saved; a new message replaces the URL with /messages/[id]

Needs data: Needs a submitted write on a disposable record

Save draft
Gatefrom step 2
Leave without saving?, Discards edits (Web)
Back with edits
Edgefrom step 2
New message, Schedule for later (Web)
Schedule for later
Errorfrom step 2
New message, Schedule problem (Web)
Schedule time missing or too soon
Edgefrom step 3
New message, Recipient picker (Web)
Over 100 people picked
Errorfrom step 4
Wireframe

New message

Error

Send refused

Toast Failed to send the message and the confirm dialog closes

Not reachable on a device: Needs a server error, crash, race or code change

Server refuses
Successfrom step 4
Wireframe

New message

Success

Sent or scheduled

Toast with the server message, fallback Sent or Scheduled; the page moves to /messages/[id] results

Needs data: Sends or schedules a real message to real users

Sent or scheduled toast
Errorfrom step 5
Wireframe

Message

Error

Message not found

Message not found. It may have been deleted, or the link is wrong. Back to messages

Needs data: Needs a message row; an unknown id may throw in Convex instead of rendering this

Message not found
Edgefrom step 6
Wireframe

Message results

Edge

Scheduled, not sent

Cards and table are replaced by This message has not been sent yet. Results appear here after delivery. Cancel shows

Needs data: Needs a scheduled, sent or cancelled message row

Scheduled, not sent
Emptyfrom step 6
Wireframe

Message results

Empty

No recipients yet

No recipients yet. They appear here as the message is delivered.

Needs data: Needs a scheduled, sent or cancelled message row

No recipients yet
Flow diagram

Delivery log and queue

Step 1
Messages (Web)
Messages list
Delivery log
Step 2
Delivery log (Web)
Delivery log opens on History
View a row
Step 3
History (Web)
Every notification with status, push outcome, type, title and sent date
View
Step 4
Wireframe

Notification detail

Edge

Delivery rows

Push badge, In-app inbox state, Last error, Policy reason, Attempts, Scheduled, Sent, Delivered, Source

Needs data: Needs notification history rows

Push result, attempts, timing and device tickets for one notification

Branches and edge cases

Edgefrom step 2
Queue (Web)
Queue tab
Edgefrom step 2
Delivery log, Tab in URL (Web)
Tab kept in the URL
Edgefrom step 3
History, Push outcome filter (Web)
Filter by push outcome
Emptyfrom step 3
Wireframe

History

Empty

No notifications

No notifications sent yet, or No notifications for this user when a user is picked

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

History empty
Emptyfrom step 3
Wireframe

History

Empty

No matching results

Search or the Unread and Read switch hides every loaded row

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Search hides every row
Edgefrom step 3
Wireframe

History

Edge

200-row limit

Loads at most 200 rows. An alert reads Showing the newest N of M matches, or says the history is larger than the 1,000 rows read at once

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

More than 200 matches
Edgefrom step 4
Wireframe

Notification detail

Edge

Delivery unavailable

Delivery details are not available for this notification.

Needs data: Needs notification history rows

Delivery details missing
Edgefrom step 4
Wireframe

Notification detail

Edge

No device tickets

No push was sent to a device. Ticket rows show token, status badge and error otherwise

Needs data: Needs notification history rows

No device ticket
Edgefrom step 4
Wireframe

Notification detail

Edge

No active device

No active device. This user cannot receive push.

Needs data: Needs notification history rows

No active device
Emptyfrom step 2
Wireframe

Queue

Empty

Queue is empty

Notifications will appear here when queued for delivery

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Queue is empty
Gatefrom step 2
Wireframe

Cancel queued notifications

Edge

Not re-queueable

Cancelled notifications are never delivered and cannot be re-queued from here.

Needs data: Needs queued notifications

Cancel queued items
Gatefrom step 2
Wireframe

Queue

Gate

Admin only

Cancel, Retry Failed and Process are disabled below admin

Needs data: Needs an account whose role is below admin

Below admin
Flow diagram

Build a flow from a template

Step 1
Wireframe

Flows

Empty

No flows yet

Dashed card: Start from a template, or build one from scratch with Create flow. Shows three template cards and Browse all templates

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Empty list offers three template cards and Browse all templates
Browse all templates
Step 2
Flow templates, Grouped by category (Web)
Templates grouped as Onboarding, Loyalty, Retention and Orders
Open Welcome series
Step 3
Flow template preview, About this template (Web)
Read-only canvas with the About card
Install
Step 4
Wireframe

Flow template preview

Success

Installed

Toast Template installed, then the new flow opens in the editor, Inactive

Needs data: Installing writes a flow row; needs a disposable record

Toast Template installed
Step 5
Wireframe

Flow editor

Needs data: Needs a flow row

Editor opens with the flow Inactive and the template steps on the canvas
Edit a step, Turn on
Step 6
Wireframe

Flow editor

Success

Turned on or off

Toast Flow is on or Flow is off; the badge flips between Active and Inactive

Needs data: Needs a flow row

Toast Flow is on; badge reads Active
Recent runs
Step 7
Wireframe

Recent runs

Edge

Step log

Time, step name and outcome per entry; removed steps read <type> (removed step); No steps have run yet. when empty

Needs data: Needs a flow row

Newest first; open a run to see each step

Branches and edge cases

Edgefrom step 1
Wireframe

Flows

Edge

Status tabs and search

All (n), Active (n), Inactive (n); search matches name, trigger and tags

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Flows exist
Gatefrom step 1
Wireframe

Flows

Gate

Create flow needs admin

Create flow is disabled with Requires admin role; Browse templates stays open

Needs data: Needs an account whose role is below admin

Below admin
Errorfrom step 1
Wireframe

Flows

Error

Create failed

Toast Could not create the flow

Not reachable on a device: Needs a server error, crash, race or code change

Create flow fails
Errorfrom step 2
Flow template preview, Template does not exist (Web)
Unknown template key
Edgefrom step 3
Flow template preview, Step opens read-only panel (Web)
Click a step
Gatefrom step 3
Wireframe

Flow template preview

Gate

Install needs admin

Install is disabled with Requires admin role

Needs data: Needs an account whose role is below admin

Below admin
Errorfrom step 3
Wireframe

Flow template preview

Error

Install failed

Toast Could not install the template; the button re-enables

Not reachable on a device: Needs a server error, crash, race or code change

Install fails
Errorfrom step 5
Wireframe

Flow editor

Error

Review before turning on

Toast Review N issues before turning on: <first issue>; the first bad step is selected

Needs data: Needs a flow row

Turn on with issues
Successfrom step 5
Wireframe

Flow editor

Success

Test run started

Toast Test run started. Sends the flow to the signed-in admin only, skipping waits

Needs data: Sends a real test push to the signed-in admin; needs a flow row

Send test to me
Edgefrom step 5
Wireframe

Flow editor

Edge

Unsaved changes

Badge Unsaved changes; Save enables only when dirty and the browser asks before closing the tab

Needs data: Needs a flow row

Unsaved edits
Gatefrom step 5
Wireframe

Discard unsaved changes?

Edge

Copy

You have changes that are not saved. Leaving now throws them away.

Needs data: Needs a flow row

Back with edits
Gatefrom step 5
Wireframe

Delete this step?

Edge

Orphans stay

Nothing is reconnected. The step below it stays on the canvas, disconnected, and shows "Connect this step"

Needs data: Needs a flow row

Delete a step
Edgefrom step 5
Wireframe

Flow editor

Edge

Template updated

Badge Template updated on the card and an info alert in the panel: the template changed since this flow was saved. Save the flow to use the new text

Needs data: Needs a flow row

Template changed since save
Errorfrom step 5
Wireframe

Flow editor

Error

Flow does not exist

This flow does not exist. with Back to flows

Needs data: Needs a flow row; an unknown id may throw in Convex instead of rendering this

Unknown flow id
Emptyfrom step 7
Wireframe

Recent runs

Empty

No runs yet

No runs yet. Turn the flow on, or send a test to yourself.

Needs data: Needs a flow row

No runs yet
Edgefrom step 7
Wireframe

Recent runs

Edge

Waiting run

Expanded waiting run shows Resumes <time> (relative)

Needs data: Needs a flow row

Waiting run
Flow diagram

Create and retire a template

Step 1
Templates (Web)
Templates list with type, channels, content, Used by and status
Create template
Step 2
Template editor, Create versus edit (Web)
Sheet for a new template; push is on by default
Fill name, type and push text
Step 3
Wireframe

Template editor

Success

Saved

Toast Template created or Template updated, sheet closes

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Toast Template created; the sheet closes
Open the row menu
Step 4
Wireframe

Delete template

Edge

Used by flows

Names the flows; they keep the text they last copied and show a review issue until a new template is picked

Needs data: Needs a notification template row

Delete names the flows that use the template; Turn off is the safe choice

Branches and edge cases

Emptyfrom step 1
Wireframe

Templates

Empty

No templates yet

Dashed card: Write a message once, then use it in messages and flows. Create template shows for admins

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

No templates yet
Gatefrom step 1
Wireframe

Templates

Gate

Create template needs admin

Create template is disabled with Requires admin role; the row menu opens templates as View

Needs data: Needs an account whose role is below admin

Below admin
Edgefrom step 1
Templates, Edit link in URL (Web)
Link opens the sheet
Edgefrom step 1
Wireframe

Templates

Edge

Used by popover

Not used, 1 flow or N flows; the popover lists each flow with On or Off and links to the editor

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Used by popover
Successfrom step 1
Wireframe

Templates

Success

Row action toasts

Server message or fallback; Duplicate adds "<name> (copy)" switched off

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Duplicate or turn off
Errorfrom step 2
Template editor, Before you save hint (Web)
Missing name, type or text
Edgefrom step 2
Template editor, Action link rule (Web)
Action link rule
Errorfrom step 2
Wireframe

Template editor

Error

Save failed

Toast Could not save the template

Not reachable on a device: Needs a server error, crash, race or code change

Save fails
Gatefrom step 2
Wireframe

Template editor

Gate

View only below admin

Fieldset disabled and the footer shows Close without a save button

Needs data: Needs an account whose role is below admin

View only below admin
Edgefrom step 4
Wireframe

Delete template

Edge

Turn off only when active

The Turn off button shows only while the template is active

Needs data: Needs a notification template row

Turn off only while active
Flow diagram

Screens and states

Notifications

Notifications (Web)
Redirectdashboard/notifications

Notifications

Parent route. It redirects to Messages; the sidebar group opens Messages, Flows and Templates.

src/app/dashboard/notifications/page.tsx

Entry

  • Sidebar Notifications
  • Bell View all notifications

Exits

  • Redirect to /dashboard/notifications/messages

States · 2

Edge
Always redirects · No tabs any more. The old Compose, Templates, Queue and History tabs are gonesrc/app/dashboard/notifications/page.tsx:4
Loading
Segment skeleton · Table skeleton with 6 columns and 10 rows while a child route loadssrc/app/dashboard/notifications/loading.tsx:8

Captured states

Notifications, Always redirects (Web)
Always redirects

Messages

Messages (Web)
Screendashboard/notifications/messages

Messages

One-off notifications to a chosen audience, sent now or scheduled. Delivery overview on top, message table below.

src/app/dashboard/notifications/messages/page.tsx

Entry

  • Sidebar Notifications > Messages
  • Redirect from /dashboard/notifications
  • Back from editor, results and delivery log
  • Shortcut n then m

Exits

  • Create message (admin) → /messages/new
  • Create flow → /flows
  • Delivery log → /messages/log
  • Row title or View results → /messages/[id]
  • Duplicate → new draft
  • Cancel or Delete → MessageActionDialog

States · 14

Gate
Permission denied · AccessDenied: You need permission to view notificationssrc/app/dashboard/notifications/messages/page.tsx:12
Loading
Message rows skeleton · Five skeleton rows while the first page loadssrc/features/notifications/messages/components/messages-list.tsx:241
Empty
No messages yet · Title No messages yet on All; on a status tab it reads No drafts messages, No scheduled messages or No sent messages. Create message shows for adminssrc/features/notifications/messages/components/messages-list.tsx:249
Edge
Status tab in URL · All, Drafts, Scheduled, Sent; the choice lives in ?status= (nuqs) and survives reloadsrc/features/notifications/messages/components/messages-list.tsx:108
Edge
Charts hidden by default · Show charts toggles the push outcome and daily trend charts; the four KPI cards always showsrc/features/notifications/messages/components/messages-list.tsx:216
Edge
Range keeps last numbers · Switching 7, 30 or 90 days keeps the previous stats on screen until the new range arrivessrc/features/notifications/messages/components/messages-list.tsx:125
Edge
Row menu follows status · Draft: Edit and Delete. Scheduled: View results and Cancel. Sent: View results. Cancelled: View results and Delete. Duplicate on allsrc/features/notifications/messages/components/messages-list.tsx:331
Edge
Untitled and dash cells · A draft with no title reads Untitled; rows without stats show - for recipients, push reach and read ratesrc/features/notifications/messages/components/messages-list.tsx:290
Edge
Load more · Cursor pagination; Load more shows a spinner while the next page loadssrc/features/notifications/messages/components/messages-list.tsx:397
Gate
Admin only actions · Create message and the Edit, Duplicate, Cancel, Delete items are disabled with the tooltip Requires admin role below adminsrc/features/notifications/messages/components/messages-list.tsx:190
Success
Duplicated · Toast Copied to a new draft, then the new draft opens in the editorsrc/features/notifications/messages/components/messages-list.tsx:140
Error
Duplicate failed · Toast with the server message or Failed to duplicatesrc/features/notifications/messages/components/messages-list.tsx:144
Success
Cancelled or deleted · Toast with the server message, fallback Done; the dialog closes and the row leaves the tabsrc/features/notifications/messages/components/messages-list.tsx:156
Error
Cancel or delete failed · Toast Failed to cancel or Failed to delete; the dialog stays opensrc/features/notifications/messages/components/messages-list.tsx:162

Captured states

Messages, Status tab in URL (Web)
Status tab in URL
Messages, Charts hidden by default (Web)
Charts hidden by default

Delivery overview

Delivery overview (Web)
InlineNotificationStatsStrip

Delivery overview

Push reach, No device, Push failures and Read rate cards with a 7, 30 or 90 day range. Two charts open under Show charts.

src/features/notifications/components/notification-stats-charts.tsx

Entry

  • Top of Messages

Exits

  • Range control
  • Show charts toggle

States · 8

Loading
Skeleton · Four card skeletons (and two chart skeletons when charts are open) until the first responsesrc/features/notifications/components/notification-stats-charts.tsx:371
Edge
No data rate · Push reach and Read rate read No data when nothing was attempted; footers say No pushes attempted yet or No in-app notifications yetsrc/features/notifications/components/notification-stats-charts.tsx:72
Edge
More than 10,000 notifications · Alert: the numbers cover the newest 10,000; older ones are not countedsrc/features/notifications/components/notification-stats-charts.tsx:416
Empty
No pushes in this range · Push outcomes chart shows No pushes in this rangesrc/features/notifications/components/notification-stats-charts.tsx:188
Empty
No notifications in this range · Daily trend chart shows No notifications in this rangesrc/features/notifications/components/notification-stats-charts.tsx:280
Edge
Charts open · Show charts adds the Push outcomes bar chart and the Daily trend stacked bars under the cardssrc/features/notifications/components/notification-stats-charts.tsx:274
Edge
Range switch · Segmented control 7, 30 or 90 days; the sentence reads N customer notifications in the last D dayssrc/features/notifications/components/notification-stats-charts.tsx:362
Edge
No device is amber · No device counts as expected, so it uses the warning colour, never the failure redsrc/features/notifications/components/notification-stats-charts.tsx:45

Captured states

Delivery overview, Charts open (Web)
Charts open
Delivery overview, Range switch (Web)
Range switch

Cancel or delete a message

Wireframe

Cancel or delete a message

Needs data: Needs a draft, scheduled or cancelled message row

DialogMessageActionDialog

Cancel or delete a message

Confirm from the Messages row menu. Cancel applies to scheduled messages, Delete to drafts and cancelled ones.

src/features/notifications/messages/components/messages-list.tsx

Entry

  • Row menu Cancel
  • Row menu Delete

Exits

  • Cancel message / Delete → mutation
  • Keep → close

States · 2

Edge
Cancel variant · Title Cancel this scheduled message?; the message will not be sent and can be duplicated into a new draftsrc/features/notifications/messages/components/messages-list.tsx:412
Edge
Delete variant · Destructive style; Delete this message? removes it for goodsrc/features/notifications/messages/components/messages-list.tsx:413

New message

New message (Web)
Screendashboard/notifications/messages/new

New message

Write a push and in-app message, pick the audience, then send now or schedule. Same editor opens for a saved draft.

src/app/dashboard/notifications/messages/new/page.tsx

Entry

  • Messages > Create message
  • Empty state Create message

Exits

  • Back arrow → Messages (confirms when dirty)
  • Save draft → /messages/[id]
  • Send or Schedule → MessageSendDialog
  • Send test to me → push to the signed-in admin
  • Manage templates → /templates

States · 27

Gate
Permission denied · AccessDenied: You need permission to view notificationssrc/app/dashboard/notifications/messages/new/page.tsx:12
Gate
View only below admin · Alert Only admins can save or send messages; the three header buttons are disabled with a tooltipsrc/features/notifications/messages/components/message-editor.tsx:358
Edge
Before you send hint · Status line Before you send: Add a title. It names the first problem and follows the Send or Schedule labelsrc/features/notifications/messages/components/message-editor.tsx:364
Edge
Send disabled until valid · Send stays disabled while a title, message, channel or recipient is missing, an upload runs, or the schedule is invalidsrc/features/notifications/messages/components/message-editor.tsx:344
Edge
Unsaved changes · Header description turns to You have unsaved changes and the browser asks before reload or tab closesrc/features/notifications/messages/components/message-editor.tsx:291
Edge
Character counters · Counter reads n / 50 recommended for titles and n / 150 for messages; amber past that with may be cut off on some phonessrc/features/notifications/components/sections/content-editor.tsx:90
Edge
Over the hard limit · Red over the 80 or 240 limit. maxLength equals the limit, so typing cannot reach it; only a template or saved data cansrc/features/notifications/components/sections/content-editor.tsx:91
Edge
Variable chips · Insert {{firstName}} and template variables at the cursor of the last focused field; the preview fills sample valuessrc/features/notifications/components/sections/content-editor.tsx:258
Edge
Template variables · Picking a template fills type, channels, title and body and lists one input per variablesrc/features/notifications/components/sections/template-loader.tsx:92
Edge
Push preview placeholders · Empty form shows Title appears here and Message appears here; text is trimmed to 40 and 120 characterssrc/features/notifications/components/notification-preview.tsx:57
Edge
Detail page content · Collapsible card for the rich page behind the tap: title, rich text, image, action label and URL. Both label and URL are required for the buttonsrc/features/notifications/components/sections/content-editor.tsx:325
Success
Image uploaded · Toast Image uploaded; the preview shows with a Clear controlsrc/features/notifications/messages/components/message-editor.tsx:178
Error
Image upload failed · Toast Failed to upload image or Upload failedsrc/features/notifications/messages/components/message-editor.tsx:180
Edge
Counting audience · Segment audiences show Counting... until the estimate arrivessrc/features/notifications/messages/components/audience-section.tsx:280
Edge
Audience estimate · Reaches about N people with the app, or with a push device; N+ when capped. Picked users read Reaches N people.src/features/notifications/messages/components/audience-section.tsx:283
Error
Could not count the audience · Estimate query returned nullsrc/features/notifications/messages/components/audience-section.tsx:282
Edge
Recipient picker · Specific users: combobox that searches name, email or phone. Up to 100 people; chips remove one at a timesrc/features/notifications/messages/components/audience-section.tsx:193
Empty
No users found · Picker search matched nobodysrc/features/notifications/messages/components/audience-section.tsx:204
Edge
Schedule for later · Date and time picker appears with Times are in your timezone. Needs a time at least 2 minutes aheadsrc/features/notifications/messages/components/message-editor.tsx:482
Error
Schedule problem · Inline alert Pick a date and time to schedule this message. or Pick a time at least 2 minutes from now.src/features/notifications/messages/components/message-editor.tsx:488
Success
Draft saved · Toast Draft saved; a new message replaces the URL with /messages/[id]src/features/notifications/messages/components/message-editor.tsx:219
Error
Draft save failed · Toast with the server message or Failed to save the draftsrc/features/notifications/messages/components/message-editor.tsx:222
Error
Test needs content · Toasts Add a title and a message to send a test, or Pick at least one channelsrc/features/notifications/messages/components/message-editor.tsx:253
Success
Test sent · Toast with the server message, fallback Test sent. Sends a real push and inbox row to the signed-in admin onlysrc/features/notifications/messages/components/message-editor.tsx:269
Error
Test failed · Toast Failed to send the testsrc/features/notifications/messages/components/message-editor.tsx:271
Success
Sent or scheduled · Toast with the server message, fallback Sent or Scheduled; the page moves to /messages/[id] resultssrc/features/notifications/messages/components/message-editor.tsx:239
Error
Send refused · Toast Failed to send the message and the confirm dialog closessrc/features/notifications/messages/components/message-editor.tsx:244

Captured states

New message, Before you send hint (Web)
Before you send hint
New message, Send disabled until valid (Web)
Send disabled until valid
New message, Unsaved changes (Web)
Unsaved changes
New message, Character counters (Web)
Character counters
New message, Variable chips (Web)
Variable chips
New message, Push preview placeholders (Web)
Push preview placeholders
New message, Detail page content (Web)
Detail page content
New message, Audience estimate (Web)
Audience estimate
New message, Recipient picker (Web)
Recipient picker
New message, No users found (Web)
No users found
New message, Schedule for later (Web)
Schedule for later
New message, Schedule problem (Web)
Schedule problem
New message, Test needs content (Web)
Test needs content

Send or schedule this message?

Send or schedule this message? (Web)
DialogMessageSendDialog

Send or schedule this message?

Final confirm. It names the audience and warns that a sent message cannot be recalled.

src/features/notifications/messages/components/message-editor.tsx

Entry

  • Send or Schedule button

Exits

  • Send or Schedule → save draft then send
  • Cancel → close

States · 3

Edge
Send now copy · "Title" goes to N people right away. A sent message cannot be recalled.src/features/notifications/messages/components/message-editor.tsx:528
Edge
Schedule copy · "Title" goes to N people on <date>. You can cancel it until then.src/features/notifications/messages/components/message-editor.tsx:527
Edge
Names a lone recipient · One picked user is named (goes to Aina Rahman) when the picker knows the namesrc/features/notifications/messages/components/message-editor.tsx:134

Captured states

Send or schedule this message?, Send now copy (Web)
Send now copy

Leave without saving?

Leave without saving? (Web)
DialogMessageLeaveDialog

Leave without saving?

Shown when Back is pressed with unsaved edits.

src/features/notifications/messages/components/message-editor.tsx

Entry

  • Back arrow with unsaved changes

Exits

  • Leave → Messages
  • Keep editing → close

States · 1

Edge
Discards edits · Your changes to this message will be lost.src/features/notifications/messages/components/message-editor.tsx:537

Captured states

Leave without saving?, Discards edits (Web)
Discards edits

Message

Wireframe

Message

Needs data: Needs a message row

Screendashboard/notifications/messages/[id]

Message

A draft opens the editor; a scheduled, sending, sent or cancelled message opens its results.

src/app/dashboard/notifications/messages/[id]/page.tsx

Entry

  • Messages row title
  • After Save draft or Send
  • After Duplicate

Exits

  • Back arrow → Messages
  • Back to messages (not found)

States · 6

Gate
Permission denied · AccessDenied: You need permission to view notificationssrc/app/dashboard/notifications/messages/[id]/page.tsx:18
Loading
Skeleton · Two skeleton blocks while the message loadssrc/features/notifications/messages/components/message-page.tsx:15
Error
Message not found · Message not found. It may have been deleted, or the link is wrong. Back to messagessrc/features/notifications/messages/components/message-page.tsx:26
Edge
Draft opens the editor · Status draft renders MessageEditor with the saved fields; Save draft stays disabled until something changessrc/features/notifications/messages/components/message-page.tsx:36
Edge
Breadcrumb names the page · The 32-character id segment reads Message in the breadcrumb, and new reads Newsrc/hooks/use-breadcrumbs.tsx:29
Edge
Other statuses open results · Scheduled, sending, sent and cancelled render MessageResultssrc/features/notifications/messages/components/message-page.tsx:39

Message results

Wireframe

Message results

Needs data: Needs a scheduled, sent or cancelled message row

InlineMessageResults

Message results

Status, audience, delivery counts and a recipient table for a message that is no longer a draft.

src/features/notifications/messages/components/message-results.tsx

Entry

  • /messages/[id] when status is not draft

Exits

  • Duplicate → new draft
  • Cancel → MessageCancelDialog
  • Back arrow → Messages

States · 12

Success
Delivery counts · Five cards: Recipients, Push reached with a percent, No device, Push failed, Opened with a percent of in-appsrc/features/notifications/messages/components/message-results.tsx:270
Edge
Sending in progress · Delivery is in progress. These numbers update as it goes.src/features/notifications/messages/components/message-results.tsx:254
Edge
Counts capped · Counts cover the first 8,000 recipients.src/features/notifications/messages/components/message-results.tsx:259
Edge
Scheduled, not sent · Cards and table are replaced by This message has not been sent yet. Results appear here after delivery. Cancel showssrc/features/notifications/messages/components/message-results.tsx:295
Edge
Cancelled · This message was cancelled and never sent.src/features/notifications/messages/components/message-results.tsx:296
Loading
Recipients skeleton · Four skeleton rowssrc/features/notifications/messages/components/message-results.tsx:93
Empty
No recipients yet · No recipients yet. They appear here as the message is delivered.src/features/notifications/messages/components/message-results.tsx:99
Edge
Recipient push outcome · Per recipient push badge, last delivery error and read time; Load more pages the tablesrc/features/notifications/messages/components/message-results.tsx:126
Gate
Duplicate and Cancel need admin · Both buttons are disabled with Requires admin role below adminsrc/features/notifications/messages/components/message-results.tsx:224
Success
Duplicated · Toast Copied to a new draft and the new draft openssrc/features/notifications/messages/components/message-results.tsx:177
Success
Scheduled message cancelled · Toast with the server message, fallback Scheduled message cancelledsrc/features/notifications/messages/components/message-results.tsx:189
Error
Cancel failed · Toast Failed to cancelsrc/features/notifications/messages/components/message-results.tsx:192

Cancel this scheduled message?

Wireframe

Cancel this scheduled message?

Needs data: Needs a scheduled message row

DialogMessageCancelDialog

Cancel this scheduled message?

Confirm from the results page. It will not be sent; duplicate it to reuse the content.

src/features/notifications/messages/components/message-results.tsx

Entry

  • Cancel on a scheduled message

Exits

  • Cancel message → mutation
  • Keep → close

States · 1

Edge
Copy · It will not be sent. You can duplicate it into a new draft later.src/features/notifications/messages/components/message-results.tsx:326

Delivery log

Delivery log (Web)
Screendashboard/notifications/messages/log

Delivery log

Every notification sent to a customer, plus the delivery queue. Replaces the old History and Queue tabs.

src/app/dashboard/notifications/messages/log/page.tsx

Entry

  • Messages > Delivery log

Exits

  • Back arrow → Messages
  • History tab
  • Queue tab

States · 2

Gate
Permission denied · AccessDenied: You need permission to view notificationssrc/app/dashboard/notifications/messages/log/page.tsx:12
Edge
Tab in URL · History or Queue; the choice lives in ?tab= (nuqs)src/features/notifications/messages/components/delivery-log-view.tsx:17

Captured states

Delivery log, Tab in URL (Web)
Tab in URL

History

History (Web)
InlineNotificationsHistory

History

Every customer notification with its push outcome. Filter by user, read state, push outcome or text.

src/features/notifications/components/history-panel.tsx

Entry

  • Delivery log > History

Exits

  • View → NotificationDetailSheet
  • User picker
  • Clear user filter

States · 9

Loading
Spinner · Centered spinner while the list loadssrc/features/notifications/components/history-panel.tsx:465
Empty
No notifications · No notifications sent yet, or No notifications for this user when a user is pickedsrc/features/notifications/components/history-panel.tsx:473
Empty
No matching results · Search or the Unread and Read switch hides every loaded rowsrc/features/notifications/components/history-panel.tsx:474
Edge
200-row limit · Loads at most 200 rows. An alert reads Showing the newest N of M matches, or says the history is larger than the 1,000 rows read at oncesrc/features/notifications/components/history-panel.tsx:54
Edge
User picker limited · Searches only the first 100 userssrc/features/notifications/components/history-panel.tsx:102
Edge
Push outcome filter · All push outcomes, Delivered, Sent, No device, Failed, Suppressed, Pending, Cancelled, Unknown; applied on the serversrc/features/notifications/components/history-panel.tsx:416
Edge
Push column shows the error · A failed or no-device push shows its last delivery error under the badge, two linessrc/features/notifications/components/history-panel.tsx:185
Edge
Legacy no-device row reads Sent · Old rows marked failed with no device but an inbox copy show a sent badgesrc/features/notifications/components/history-panel.tsx:154
Edge
Unread badge · Badge N unread shows when any loaded row is unreadsrc/features/notifications/components/history-panel.tsx:444

Captured states

History, User picker limited (Web)
User picker limited
History, Push outcome filter (Web)
Push outcome filter

Notification detail

Notification detail (Web)
SheetNotificationDetailSheet

Notification detail

Title, read state, body, rich detail, metadata and a Delivery section with device tickets.

src/features/notifications/components/notification-detail-sheet.tsx

Entry

  • History row View

Exits

  • Action button → new tab
  • Close

States · 6

Loading
Delivery skeleton · Skeleton block while the delivery query loadssrc/features/notifications/components/notification-detail-sheet.tsx:56
Edge
Delivery unavailable · Delivery details are not available for this notification.src/features/notifications/components/notification-detail-sheet.tsx:61
Edge
No device tickets · No push was sent to a device. Ticket rows show token, status badge and error otherwisesrc/features/notifications/components/notification-detail-sheet.tsx:114
Edge
No active device · No active device. This user cannot receive push.src/features/notifications/components/notification-detail-sheet.tsx:146
Edge
Delivery rows · Push badge, In-app inbox state, Last error, Policy reason, Attempts, Scheduled, Sent, Delivered, Sourcesrc/features/notifications/components/notification-detail-sheet.tsx:93
Edge
No body · Dashed alert Message content is optional and not provided for this notificationsrc/features/notifications/components/notification-detail-sheet.tsx:254

Queue

Queue (Web)
InlineNotificationsQueue

Queue

Pending and scheduled sends waiting for the processor.

src/features/notifications/components/queue-panel.tsx

Entry

  • Delivery log > Queue

Exits

  • Show or Hide Scheduled
  • Cancel (N) → CancelQueueDialog
  • Retry Failed
  • Process

States · 6

Loading
Spinner · Centered spinner while the queue loadssrc/features/notifications/components/queue-panel.tsx:413
Empty
Queue is empty · Notifications will appear here when queued for deliverysrc/features/notifications/components/queue-panel.tsx:417
Edge
Future rows hidden · Scheduled rows stay hidden until Show Scheduled; the header counts pending and scheduledsrc/features/notifications/components/queue-panel.tsx:83
Success
Queue toasts · Queue processing scheduled, Queued N for retry, Cancelled Nsrc/features/notifications/components/queue-panel.tsx:262
Error
Queue failed · Toasts Failed to process queue, Failed to retry, Failed to cancelsrc/features/notifications/components/queue-panel.tsx:264
Gate
Admin only · Cancel, Retry Failed and Process are disabled below adminsrc/features/notifications/components/queue-panel.tsx:77

Cancel queued notifications

Wireframe

Cancel queued notifications

Needs data: Needs queued notifications

DialogCancelQueueDialog

Cancel queued notifications

Cancel selected queued notifications.

src/features/notifications/components/queue-panel.tsx

Entry

  • Cancel (N) with rows selected

Exits

  • Cancel notifications → confirm
  • Keep them → close

States · 1

Edge
Not re-queueable · Cancelled notifications are never delivered and cannot be re-queued from here.src/features/notifications/components/queue-panel.tsx:368

Flows

Flows (Web)
Screendashboard/notifications/flows

Flows

Automations that send notifications when something happens to a user. List with status tabs and search.

src/app/dashboard/notifications/flows/page.tsx

Entry

  • Sidebar Notifications > Flows
  • Messages > Create flow
  • Shortcut n then f
  • Back from flow editor and templates gallery

Exits

  • Browse templates → /flows/templates
  • Create flow (admin) → new flow in /flows/[id]
  • Flow name or Edit → /flows/[id]
  • Row menu Turn on, Duplicate, Delete

States · 10

Gate
Permission denied · AccessDenied: You need permission to view notification flowssrc/app/dashboard/notifications/flows/page.tsx:12
Loading
Skeleton · One tall skeleton block while the list loadssrc/features/notifications/flows/components/flows-list-view.tsx:281
Empty
No flows yet · Dashed card: Start from a template, or build one from scratch with Create flow. Shows three template cards and Browse all templatessrc/features/notifications/flows/components/flows-list-view.tsx:232
Edge
Status tabs and search · All (n), Active (n), Inactive (n); search matches name, trigger and tagssrc/features/notifications/flows/components/flows-list-view.tsx:262
Empty
No matching flows · Table empty state when the tab or search matches nothingsrc/features/notifications/flows/components/flows-list-view.tsx:283
Edge
Issues to review · Warning line under the name: N issues to review when the saved definition no longer validatessrc/features/notifications/flows/components/flows-list-view.tsx:57
Edge
Never run · Last run reads Never until the first run; otherwise a relative timesrc/features/notifications/flows/components/flows-list-view.tsx:85
Gate
Create flow needs admin · Create flow is disabled with Requires admin role; Browse templates stays opensrc/features/notifications/flows/components/flows-list-view.tsx:212
Error
Create failed · Toast Could not create the flowsrc/features/notifications/flows/components/flows-list-view.tsx:192
Edge
Row menu · Edit (View below admin), Turn on or Turn off, Duplicate, Delete; the toast shows the server messagesrc/features/notifications/flows/components/flow-row-actions.tsx:76

Delete this flow?

Wireframe

Delete this flow?

Needs data: Needs a flow row

DialogFlowDeleteDialog

Delete this flow?

Confirm from the flows list or the editor menu. Waiting runs are skipped when they wake; history stays.

src/features/notifications/flows/components/flow-row-actions.tsx

Entry

  • Row menu Delete
  • Editor menu Delete

Exits

  • Delete flow → mutation
  • Cancel → close

States · 1

Edge
Copy · The flow is removed for good. Runs that are still waiting are skipped when they wake. Their history stays.src/features/notifications/flows/components/flow-row-actions.tsx:146

Flow templates

Flow templates (Web)
Screendashboard/notifications/flows/templates

Flow templates

Gallery of starting points grouped by category. Installing makes your own copy, switched off.

src/app/dashboard/notifications/flows/templates/page.tsx

Entry

  • Flows > Browse templates
  • Flows empty state template cards

Exits

  • Template card → /flows/templates/[key]
  • Back arrow → /flows

States · 4

Gate
Permission denied · AccessDenied: You need permission to view notification flowssrc/app/dashboard/notifications/flows/templates/page.tsx:12
Loading
Spinner · Centered spinner while the catalog loadssrc/features/notifications/flows/components/flow-templates-gallery.tsx:42
Edge
Grouped by category · Sections Onboarding, Loyalty, Retention and Orders; each card shows name, description, category, trigger and step countsrc/features/notifications/flows/components/flow-templates-gallery.tsx:45
Edge
Empty catalog renders blank · No empty state: with no templates the page shows only the headingsrc/features/notifications/flows/components/flow-templates-gallery.tsx:45

Captured states

Flow templates, Grouped by category (Web)
Grouped by category

Flow template preview

Flow template preview (Web)
Screendashboard/notifications/flows/templates/[key]

Flow template preview

Full-screen read-only canvas of one template with an About card and Install.

src/app/dashboard/notifications/flows/templates/[key]/page.tsx

Entry

  • Template card in the gallery or the Flows empty state

Exits

  • Install (admin) → new inactive flow in /flows/[id]
  • Back arrow → gallery
  • Step click → read-only settings panel

States · 9

Gate
Permission denied · AccessDenied: You need permission to view notification flowssrc/app/dashboard/notifications/flows/templates/[key]/page.tsx:13
Loading
Spinner · Centered spinner until templates and the step catalog loadsrc/features/notifications/flows/components/flow-template-preview.tsx:90
Error
Template does not exist · This template does not exist. with Back to templatessrc/features/notifications/flows/components/flow-template-preview.tsx:96
Edge
About this template · Floating card with description, category, trigger and step count over the canvassrc/features/notifications/flows/components/flow-template-preview.tsx:126
Edge
Read-only canvas · Steps cannot move or connect; open paths end with an End marker instead of a plus buttonsrc/features/notifications/flows/components/flow-node.tsx:69
Edge
Step opens read-only panel · Clicking a card opens the settings panel with every field disabledsrc/features/notifications/flows/components/flow-template-preview.tsx:110
Gate
Install needs admin · Install is disabled with Requires admin rolesrc/features/notifications/flows/components/flow-template-preview.tsx:73
Success
Installed · Toast Template installed, then the new flow opens in the editor, Inactivesrc/features/notifications/flows/components/flow-template-preview.tsx:46
Error
Install failed · Toast Could not install the template; the button re-enablessrc/features/notifications/flows/components/flow-template-preview.tsx:50

Captured states

Flow template preview, Template does not exist (Web)
Template does not exist
Flow template preview, About this template (Web)
About this template
Flow template preview, Read-only canvas (Web)
Read-only canvas
Flow template preview, Step opens read-only panel (Web)
Step opens read-only panel

Flow editor

Wireframe

Flow editor

Needs data: Needs a flow row

Screendashboard/notifications/flows/[id]

Flow editor

Full-screen canvas for one flow: trigger, conditions, waits and send steps, with a side panel for the selected step.

src/app/dashboard/notifications/flows/[id]/page.tsx

Entry

  • Flows list name or Edit
  • After Install, Create flow or Duplicate
  • Templates list Used by popover

Exits

  • Back arrow → /flows (confirms when dirty)
  • Recent runs → RecentRunsSheet
  • Save, Turn on or off, Send test to me
  • More actions → details, settings, duplicate, delete

States · 18

Gate
Permission denied · AccessDenied: You need permission to view notification flowssrc/app/dashboard/notifications/flows/[id]/page.tsx:13
Loading
Spinner · Full-screen spinner until the flow and step catalog loadsrc/features/notifications/flows/components/flow-editor.tsx:74
Error
Flow does not exist · This flow does not exist. with Back to flowssrc/features/notifications/flows/components/flow-editor.tsx:87
Edge
View only below admin · Name field read-only, a View only badge shows, Turn on and Save are disabled, and the canvas cannot editsrc/features/notifications/flows/components/flow-editor.tsx:315
Edge
Unsaved changes · Badge Unsaved changes; Save enables only when dirty and the browser asks before closing the tabsrc/features/notifications/flows/components/flow-editor.tsx:310
Edge
Flow-level review banner · Warning bar Review with issues that belong to no step, such as Add a Send notification stepsrc/features/notifications/flows/components/flow-editor.tsx:416
Edge
Step review banner · Cards with problems get a Review footer with the first issue and (+N more)src/features/notifications/flows/components/flow-node.tsx:84
Edge
Disconnected step · A step no path reaches shows Connect this step to the flow or delete itsrc/features/notifications/flows/utils/validation.ts:48
Edge
Template updated · Badge Template updated on the card and an info alert in the panel: the template changed since this flow was saved. Save the flow to use the new textsrc/features/notifications/flows/components/step-config-panel.tsx:735
Edge
Canvas controls · Zoom in, Zoom out, Fit view and Arrange (admin); the wheel pans and ctrl or pinch zoomssrc/features/notifications/flows/components/flow-canvas.tsx:128
Edge
Delete key removes a step · Delete or Backspace on a selected step opens the delete confirm; the trigger cannot be deletedsrc/features/notifications/flows/components/flow-editor.tsx:266
Success
Saved · Toast with the server message, fallback Savedsrc/features/notifications/flows/components/flow-editor.tsx:169
Error
Save failed · Toast Could not save the flowsrc/features/notifications/flows/components/flow-editor.tsx:172
Error
Review before turning on · Toast Review N issues before turning on: <first issue>; the first bad step is selectedsrc/features/notifications/flows/components/flow-editor.tsx:185
Success
Turned on or off · Toast Flow is on or Flow is off; the badge flips between Active and Inactivesrc/features/notifications/flows/components/flow-editor.tsx:199
Success
Test run started · Toast Test run started. Sends the flow to the signed-in admin only, skipping waitssrc/features/notifications/flows/components/flow-editor.tsx:215
Error
Test failed · Toast Could not start the testsrc/features/notifications/flows/components/flow-editor.tsx:217
Success
Duplicated or deleted · Toasts Flow duplicated (opens the copy) and Flow deleted (back to the list)src/features/notifications/flows/components/flow-editor.tsx:227

Step settings

Wireframe

Step settings

Needs data: Needs a flow row

SheetStepConfigPanel

Step settings

Right-hand panel for the trigger or a step: trigger and days, condition criteria, wait, or the notification content.

src/features/notifications/flows/components/step-config-panel.tsx

Entry

  • Click a step card on the canvas

Exits

  • Close panel
  • Delete step

States · 8

Edge
Trigger days · Inactivity and expiry triggers need whole days, 1 to 365 or 1 to 30src/features/notifications/flows/components/step-config-panel.tsx:94
Edge
Condition criteria · Match all or any, a list of criteria with Add criterion, and the note that it is checked when the run reaches the stepsrc/features/notifications/flows/components/step-config-panel.tsx:297
Edge
Wait for · Number plus minutes, hours or days; capped by the catalog maximum (30 days)src/features/notifications/flows/components/step-config-panel.tsx:328
Edge
Content source · Use a template or Write here; a linked template copies its text each time the flow is savedsrc/features/notifications/flows/components/step-config-panel.tsx:415
Empty
No active templates · No active templates yet. inside the template pickersrc/features/notifications/flows/components/step-config-panel.tsx:437
Edge
Phone preview · Push preview of the step content with sample valuessrc/features/notifications/flows/components/step-config-panel.tsx:660
Edge
Issues alert · Warning alert Review lists every issue for the stepsrc/features/notifications/flows/components/step-config-panel.tsx:722
Gate
Read only · Below admin, and in template preview, the fieldset is disabled and Delete step is hiddensrc/features/notifications/flows/components/step-config-panel.tsx:741

Add step

Wireframe

Add step

Needs data: Needs a flow row

InlineAddStepPopover

Add step

Popover list of step types (Condition, Wait, Send notification) opened from a plus button under a step.

src/features/notifications/flows/components/add-step-popover.tsx

Entry

  • Plus button under a step or on a True or False path

Exits

  • Pick a type → step added and selected

States · 1

Edge
Plus button labels · Add step, or Add step on the True path and Add step on the False path for conditionssrc/features/notifications/flows/components/flow-node.tsx:51

Recent runs

Wireframe

Recent runs

Needs data: Needs a flow row

SheetRecentRunsSheet

Recent runs

Newest first list of runs for the flow. Open one to see what each step did.

src/features/notifications/flows/components/recent-runs-sheet.tsx

Entry

  • Editor Recent runs

Exits

  • Run row → expand log
  • Load more

States · 7

Loading
Spinner · Spinner while the first page loadssrc/features/notifications/flows/components/recent-runs-sheet.tsx:141
Empty
No runs yet · No runs yet. Turn the flow on, or send a test to yourself.src/features/notifications/flows/components/recent-runs-sheet.tsx:147
Edge
Run statuses · Running, waiting, completed, skipped, failed badges; Test badge for test runssrc/features/notifications/flows/components/recent-runs-sheet.tsx:24
Edge
Waiting run · Expanded waiting run shows Resumes <time> (relative)src/features/notifications/flows/components/recent-runs-sheet.tsx:85
Edge
Skipped run · Skipped: <reason>, for example Skipped (test run) on a waitsrc/features/notifications/flows/components/recent-runs-sheet.tsx:90
Edge
Step log · Time, step name and outcome per entry; removed steps read <type> (removed step); No steps have run yet. when emptysrc/features/notifications/flows/components/recent-runs-sheet.tsx:93
Edge
Load more · Load more fetches 20 runs; a spinner shows while loadingsrc/features/notifications/flows/components/recent-runs-sheet.tsx:160

Description and tags

Wireframe

Description and tags

Needs data: Needs a flow row

DialogFlowDetailsDialog

Description and tags

Edit description and up to 10 lower case tags. Applies when the flow is saved.

src/features/notifications/flows/components/flow-details-dialogs.tsx

Entry

  • Editor menu Edit description and tags

Exits

  • Apply → draft updated
  • Cancel → close

States · 1

Edge
Tags rule · Separate with commas. Up to 10, lower case.src/features/notifications/flows/components/flow-details-dialogs.tsx:94

Flow settings

Wireframe

Flow settings

Needs data: Needs a flow row

DialogFlowSettingsDialog

Flow settings

Limit how often one user can go through the flow: once per user, or a cooldown of 1 to 365 days.

src/features/notifications/flows/components/flow-details-dialogs.tsx

Entry

  • Editor menu Settings

Exits

  • Apply → draft updated
  • Cancel → close

States · 1

Edge
Cooldown field · The days field appears only while Cooldown is onsrc/features/notifications/flows/components/flow-details-dialogs.tsx:189

Discard unsaved changes?

Wireframe

Discard unsaved changes?

Needs data: Needs a flow row

DialogFlowLeaveDialog

Discard unsaved changes?

Shown when Back is pressed with unsaved edits.

src/features/notifications/flows/components/flow-editor.tsx

Entry

  • Back arrow with unsaved changes

Exits

  • Discard and leave → /flows
  • Cancel → close

States · 1

Edge
Copy · You have changes that are not saved. Leaving now throws them away.src/features/notifications/flows/components/flow-editor.tsx:478

Delete this step?

Wireframe

Delete this step?

Needs data: Needs a flow row

DialogFlowStepDeleteDialog

Delete this step?

Confirm before a step is removed. Steps below it stay on the canvas, disconnected.

src/features/notifications/flows/components/flow-editor.tsx

Entry

  • Delete step in the panel
  • Delete key on a selected step

Exits

  • Delete step → removed
  • Cancel → close

States · 1

Edge
Orphans stay · Nothing is reconnected. The step below it stays on the canvas, disconnected, and shows "Connect this step"src/features/notifications/flows/components/flow-editor.tsx:501

Templates

Templates (Web)
Screendashboard/notifications/templates

Templates

Reusable content for messages and flows. A message copies a template once; a flow follows it each time the flow is saved.

src/app/dashboard/notifications/templates/page.tsx

Entry

  • Sidebar Notifications > Templates
  • Message editor Manage templates
  • Shortcut n then t

Exits

  • Create template (admin) → TemplateEditorSheet
  • Name or Edit → TemplateEditorSheet via ?edit=
  • Used by → popover of flows
  • Row menu Duplicate, Turn on or off, Delete

States · 10

Gate
Permission denied · AccessDenied: You need permission to view notification templatessrc/app/dashboard/notifications/templates/page.tsx:12
Loading
Skeleton · One tall skeleton block under the tabs while templates loadsrc/features/notifications/templates/components/templates-list-view.tsx:323
Empty
No templates yet · Dashed card: Write a message once, then use it in messages and flows. Create template shows for adminssrc/features/notifications/templates/components/templates-list-view.tsx:292
Edge
Tabs and search · All (n), Active (n), Off (n); search covers name, description, type and contentsrc/features/notifications/templates/components/templates-list-view.tsx:306
Empty
No matching templates · Table empty state when the tab or search matches nothingsrc/features/notifications/templates/components/templates-list-view.tsx:325
Edge
Used by popover · Not used, 1 flow or N flows; the popover lists each flow with On or Off and links to the editorsrc/features/notifications/templates/components/templates-list-view.tsx:64
Edge
Edit link in URL · ?edit=<id> opens the sheet, ?edit=new opens it empty; a stale id opens nothingsrc/features/notifications/templates/components/templates-list-view.tsx:265
Gate
Create template needs admin · Create template is disabled with Requires admin role; the row menu opens templates as Viewsrc/features/notifications/templates/components/templates-list-view.tsx:270
Success
Row action toasts · Server message or fallback; Duplicate adds "<name> (copy)" switched offsrc/features/notifications/templates/components/template-row-actions.tsx:87
Error
Row action failed · Toasts Could not turn the template on, Could not turn it off, Could not duplicate the template, Could not delete the templatesrc/features/notifications/templates/components/template-row-actions.tsx:80

Captured states

Templates, Edit link in URL (Web)
Edit link in URL

Template editor

Template editor (Web)
SheetTemplateEditorSheet

Template editor

Create or edit a template: name, type, priority, channels, push and in-app text, action link and a live preview.

src/features/notifications/templates/components/template-editor-sheet.tsx

Entry

  • Create template
  • Name or Edit in a row
  • ?edit=<id>

Exits

  • Create template or Save changes → mutation
  • Cancel or Close

States · 7

Edge
Create versus edit · Create template for a new one, Edit template for an existing one; the form remounts per rowsrc/features/notifications/templates/components/template-editor-sheet.tsx:161
Edge
Channel sections · Push shows title and message with counters and variable chips; In-app inbox shows title and message that default to the push textsrc/features/notifications/templates/components/template-editor-sheet.tsx:341
Edge
Before you save hint · Before you save: Add a name. It names the first problem; Create template stays disabledsrc/features/notifications/templates/components/template-editor-sheet.tsx:386
Edge
Action link rule · An app path that starts with /, for example /orders. Flows use it as the deep linksrc/features/notifications/templates/components/template-editor-sheet.tsx:372
Gate
View only below admin · Fieldset disabled and the footer shows Close without a save buttonsrc/features/notifications/templates/components/template-editor-sheet.tsx:170
Success
Saved · Toast Template created or Template updated, sheet closessrc/features/notifications/templates/components/template-editor-sheet.tsx:144
Error
Save failed · Toast Could not save the templatesrc/features/notifications/templates/components/template-editor-sheet.tsx:148

Captured states

Template editor, Create versus edit (Web)
Create versus edit
Template editor, Channel sections (Web)
Channel sections
Template editor, Before you save hint (Web)
Before you save hint
Template editor, Action link rule (Web)
Action link rule

Delete template

Wireframe

Delete template

Needs data: Needs a notification template row

DialogTemplateDeleteDialog

Delete template

Alert dialog from the row menu. It lists the flows that use the template and offers Turn off as the safe choice.

src/features/notifications/templates/components/template-row-actions.tsx

Entry

  • Row menu Delete

Exits

  • Delete for good → hard delete
  • Turn off → deactivate (active templates)
  • Cancel → close

States · 2

Edge
Used by flows · Names the flows; they keep the text they last copied and show a review issue until a new template is pickedsrc/features/notifications/templates/utils/template-helpers.ts:84
Edge
Turn off only when active · The Turn off button shows only while the template is activesrc/features/notifications/templates/components/template-row-actions.tsx:169

On this page