ProjectR Docs
Screen MapDashboard

Webhooks, audit log & profile

Dashboard: every screen, state and flow in Webhooks, audit log & profile.

8 screens and overlays, 29 states, 2 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

Webhooks

Step 1
Webhook Management (Web)
Webhook subscriptions table
Open Deliveries tab
Step 2
Deliveries (Web)
Deliveries table with status filter
View a delivery
Step 3
Delivery detail (Web)
Payload dialog for one delivery

Branches and edge cases

Gatefrom step 1
Webhook Management, Shopify writes disabled (Web)
Bulk Create or Sync with writes off
Successfrom step 1
Wireframe

Webhook Management

Success

Action toasts

Tunnel URL copied, Refreshed from Shopify, server messages

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

Action succeeds with writes on
Edgefrom step 1
Edit Webhook URL (Web)
Row Edit
Gatefrom step 1
Delete webhook? (Web)
Row Delete
Gatefrom step 1
Delete all webhooks? (Web)
Delete All
Errorfrom step 2
Wireframe

Deliveries

Error

Not available

Webhook deliveries are not available for this account

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

Deliveries query returns success false
Emptyfrom step 2
Wireframe

Deliveries

Empty

No webhook deliveries

Shopify events land here as they arrive

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

No deliveries
Flow diagram

Audit log

Step 1
Audit Log (Web)
Audit log table with filters
Load More
Step 2
Audit Log, Cursor Load More (Web)
Next page appended and deduped
Export
Step 3
Export dialog (Web)
Export dialog for the audit log

Branches and edge cases

Emptyfrom step 1
Audit Log, No audit logs yet (Web)
No rows
Edgefrom step 1
Wireframe

Audit Log

Edge

Scan truncated

Alert when isTruncated

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

Scan cap reached
Edgefrom step 1
Wireframe

Audit Log

Edge

Details empty

Popover shows em dash when no changes or metadata

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

Details popover is empty
Gatefrom step 1
Wireframe

Audit Log

Gate

Admin required

AccessDenied: You need admin access to view the audit log

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

Non-admin
Flow diagram

Screens and states

Webhook Management

Webhook Management (Web)
Screendashboard/webhooks

Webhook Management

Manage Shopify webhook subscriptions and inspect deliveries.

src/app/dashboard/webhooks/page.tsx

Entry

  • Sidebar Webhooks

Exits

  • Subscriptions tab
  • Deliveries tab (?tab=)
  • Bulk Create All, Sync URLs, Refresh
  • Delete All

States · 7

Gate
Admin required · Default AccessDenied text, no custom messagesrc/app/dashboard/webhooks/page.tsx:217
Edge
Shopify writes disabled · Banner with store and deployment names on devsrc/features/webhooks/components/shopify-write-banner.tsx
Loading
Skeletons · 4 stats cards and table skeletonsrc/app/dashboard/webhooks/page.tsx:247
Empty
No webhooks registered · Subscriptions emptysrc/features/webhooks/components/webhook-table.tsx:55
Edge
Partial delete · Toasts Deleted N and Failed to delete M togethersrc/app/dashboard/webhooks/page.tsx:186
Edge
Buttons admin not super · UI gates on admin; matrix super_admin never readsrc/features/webhooks/components/webhook-actions.tsx:37
Success
Action toasts · Tunnel URL copied, Refreshed from Shopify, server messagessrc/features/webhooks/components/webhook-actions.tsx

Captured states

Webhook Management, Shopify writes disabled (Web)
Shopify writes disabled

Deliveries

Deliveries (Web)
InlineWebhookDeliveries

Deliveries

Read-only log of inbound events, no replay.

src/features/webhooks/components/webhook-deliveries-view.tsx

Entry

  • Webhooks Deliveries tab

Exits

  • Refresh
  • Status select
  • Load More
  • View → payload dialog

States · 4

Loading
Spinner and health skeleton · First load spinner, health cards skeletonsrc/features/webhooks/components/webhook-deliveries-view.tsx:177
Empty
No webhook deliveries · Shopify events land here as they arrivesrc/features/webhooks/components/webhook-deliveries-view.tsx:182
Empty
No deliveries yet · Table-level empty textsrc/features/webhooks/components/webhook-delivery-table.tsx:41
Error
Not available · Webhook deliveries are not available for this accountsrc/features/webhooks/components/webhook-deliveries-view.tsx:117

Edit Webhook URL

Edit Webhook URL (Web)
DialogEditWebhookDialog

Edit Webhook URL

Change one subscription's callback URL.

src/features/webhooks/components/edit-webhook-dialog.tsx:50

Entry

  • Row menu Edit

Exits

  • Save → update URL
  • Cancel

States · 2

Edge
Save disabled when empty · Callback URL requiredsrc/features/webhooks/components/edit-webhook-dialog.tsx:50
Success
Webhook updated · Toast or server messagepackages/backend/convex/dashboard/mutations.ts:1587

Delete webhook?

Delete webhook? (Web)
DialogDeleteWebhookDialog

Delete webhook?

Delete one webhook from Shopify permanently.

src/app/dashboard/webhooks/page.tsx:254

Entry

  • Row menu Delete

Exits

  • Confirm → delete
  • Cancel

States · 1

Success
Webhook deleted · Toast: Webhook deletedpackages/backend/convex/dashboard/mutations.ts:1655

Delete all webhooks?

Delete all webhooks? (Web)
DialogDeleteAllWebhooksDialog

Delete all webhooks?

Delete every webhook, stopping order and product pipelines.

src/app/dashboard/webhooks/page.tsx:265

Entry

  • Delete All button

Exits

  • Confirm → delete all
  • Cancel

States · 1

Success
All webhooks deleted · Toast: All webhooks deletedpackages/backend/convex/dashboard/mutations.ts:1698

Delivery detail

Delivery detail (Web)
DialogDeliveryDetailDialog

Delivery detail

Topic, error and pretty-printed Shopify payload.

src/features/webhooks/components/webhook-deliveries-view.tsx:212

Entry

  • Deliveries row View

Exits

  • Close

States · 3

Loading
Payload loading · Spinner while fetching payloadsrc/features/webhooks/components/webhook-deliveries-view.tsx:241
Edge
No payload stored · No payload is stored for this deliverysrc/features/webhooks/components/webhook-deliveries-view.tsx:241
Error
Delivery error · Red error text when presentsrc/features/webhooks/components/webhook-deliveries-view.tsx:212

Audit Log

Audit Log (Web)
Screendashboard/audit-log

Audit Log

Searchable record of admin actions.

src/app/dashboard/audit-log/page.tsx

Entry

  • Sidebar Audit Log

Exits

  • Export → ExportDialog
  • Refresh, Load More
  • Resource link → target page
  • Target user → /dashboard/users/id
  • Details popover

States · 6

Loading
Spinner · Nothing loaded yet; no loading.tsxsrc/features/audit-log/components/audit-log-view.tsx:411
Empty
No audit logs yet · Hint to try a role changesrc/features/audit-log/components/audit-log-view.tsx:416
Edge
Scan truncated · Alert when isTruncatedsrc/features/audit-log/components/audit-log-view.tsx:445
Edge
Cursor Load More · Appends and dedupes by _idsrc/features/audit-log/components/audit-log-view.tsx:155
Edge
Details empty · Popover shows em dash when no changes or metadatasrc/features/audit-log/components/audit-log-columns.tsx:195
Gate
Admin required · AccessDenied: You need admin access to view the audit logsrc/app/dashboard/audit-log/page.tsx:11

Captured states

Audit Log, No audit logs yet (Web)
No audit logs yet
Audit Log, Cursor Load More (Web)
Cursor Load More

Account Settings

Account Settings (Web)
Screendashboard/profile

Account Settings

Edit the signed-in person's own profile.

src/app/dashboard/profile/page.tsx

Entry

  • User menu Account Settings
  • Sidebar user card

Exits

  • Save → update profile

States · 5

Loading
Skeleton · While loading or user missingsrc/features/profile/components/profile-form.tsx:127
Success
Profile updated · Toast: Profile updated successfully!src/features/profile/components/profile-form.tsx:115
Error
Update failed · Toast with message or An unexpected error occurredsrc/features/profile/components/profile-form.tsx:117
Edge
Email read-only · Email cannot be editedsrc/features/profile/components/profile-form.tsx:191
Gate
Dashboard role required · apps user gets AccessDenied here toosrc/app/dashboard/profile/page.tsx:11

On this page