Skip to main content

Overview

Victoria’s Activity & Notification System keeps your firm informed about what’s happening across all cases in real-time. Know instantly when clients log in, track their progress through the portal, receive alerts for important events, and maintain a complete activity timeline for every case.
Version 1.0 includes real-time client presence tracking, in-app notifications with bell icon, dedicated Activity Center, and per-case activity timelines. Email notifications are configurable per firm.

Key Benefits

Real-Time Client Visibility

See which clients are online and what they’re working on at any moment

Never Miss Important Events

Instant notifications for document uploads, FA submissions, and client activity

Complete Activity Timeline

Every case maintains a detailed audit trail of all client and attorney actions

Configurable Alerts

Firm-level control over email notifications - enable only what you need

Why Activity Tracking Matters

ScenarioWithout Activity TrackingWith Victoria Activity Tracking
Client uploads financial docsDiscover days later during case reviewInstant notification + badge alert
Client completes FA draftManually check portal periodicallyReal-time alert to review
Client having difficultyDon’t know until they call frustratedSee “stuck” on same page for 20+ min
Opposing counsel deadlineTrack manually in calendarAuto-extracted + case activity log
Client portal engagementNo visibility into usageFull timeline of every action

Getting Started

For Firm Users

The Activity & Notification System is automatically enabled for all firm users. Here’s how to access it:
1

Notification Bell

Look for the bell icon in the top navigation bar (right side, next to your profile).
  • Badge shows unread notification count
  • Click to see recent notifications
  • “View all activity” link opens Activity Center
2

Activity Center

Navigate to /activity or click “View all activity” from the notification dropdown.
  • Active Clients Panel: See who’s online right now
  • Notifications Tab: Your personal notification inbox
  • All Activity Tab: Firm-wide activity feed across all cases
3

Case Activity Tab

Open any case workspace and click the Activity tab.
  • Client presence indicator (if currently online)
  • Complete timeline for that specific case
  • Filter by activity type
  • Real-time updates as events occur

Notification Preferences (Firm Admin)

Firm administrators can configure email notifications:
  1. Navigate to Settings → Notifications (coming soon)
  2. Toggle email notifications globally on/off
  3. Enable/disable specific notification types:
    • Client logins
    • Document uploads
    • Financial Affidavit submissions
    • Task completions
    • Client messages
Recommendation: Start with email notifications off, then selectively enable based on firm workflow. Many firms prefer in-app notifications only to avoid inbox overload.

Core Features

Real-Time Client Presence

Victoria tracks when clients are actively using the portal and what they’re doing.
What You See:
  • Client name
  • Current page (Dashboard, Documents, Financial Affidavit, etc.)
  • Current action (Viewing, Uploading, Completing, etc.)
  • Time since last activity
Where It Appears:
  • Activity Center → Active Clients panel (green highlight)
  • Case Activity Tab → Top banner when client is online
  • Notification badge animation
How It Works:
  • Client portal sends heartbeat every 30 seconds
  • Session considered “active” if heartbeat within 5 minutes
  • Automatic detection when client leaves or goes idle
StatusWhat Client is Doing
Viewing DashboardBrowsing case overview
Viewing DocumentsLooking at uploaded files
Completing Financial AffidavitFilling out FA form
Uploading DocumentActively uploading files
Reviewing TasksChecking their task list
Viewing Parenting PlanWorking on custody details
Reading MessagesReviewing attorney communications
Use Case: If you see a client “stuck” on Financial Affidavit for 30+ minutes, consider reaching out to offer help.

Notification Bell

The notification bell provides instant access to important alerts.
TypeIconPriorityDescription
Client LoginLogInLowClient accessed the portal
Document UploadedUploadNormalNew document added to case
FA SubmittedFileCheckHighFinancial Affidavit completed
FA ApprovedCheckCircleNormalFA reviewed and approved
Task CompletedCheckSquareNormalClient finished assigned task
Message SentMessageSquareNormalNew message from client
Disclosure ProgressListChecksNormalDiscovery milestone reached
Onboarding CompletedUserCheckNormalNew client finished setup
From the dropdown:
  • Click notification: Mark as read + navigate to related case/page
  • X button: Dismiss notification (remove from list)
  • Mark all read: Clear unread count
  • View all activity: Open full Activity Center
Notification Lifecycle:
  1. Created → Unread (blue highlight, counted in badge)
  2. Clicked/Viewed → Read (no highlight, removed from count)
  3. Dismissed → Removed from dropdown (still in database for audit)
Notifications are color-coded by priority:
  • Urgent (red dot): Requires immediate attention
  • High (orange dot): Important, review soon
  • Normal (blue dot): Standard notification
  • Low (gray): Informational only
Priority Examples:
  • Urgent: Client message marked “Emergency”
  • High: Financial Affidavit submitted for review
  • Normal: Document uploaded, task completed
  • Low: Client login, routine activity

Activity Center

The Activity Center (/activity) provides a comprehensive view of firm-wide activity.
Green-highlighted section showing all clients currently online:
  • Animated green dot indicates live presence
  • Shows client name, current page, and activity
  • Click to navigate directly to their case
  • Updates every 30 seconds automatically
Example:
🟢 Sarah Johnson
   Viewing Financial Affidavit
   Active 2 minutes ago
   [Click to view case]

Case Activity Tab

Each case workspace includes a dedicated Activity tab showing the complete timeline.
Visual timeline of all case events:
  • Vertical line connecting events
  • Icons representing activity types
  • Actor badges (Client, Attorney, Victoria, System)
  • Timestamps with full date/time
  • Descriptions of what happened
Timeline Entry Format:
[Icon] [Activity Type Badge] [Actor Badge]

Description of the activity...

Nov 15, 2024 2:34 PM    by Sarah Johnson
ActorBadge ColorExamples
ClientGreenUploaded document, submitted FA
AttorneyBlueApproved FA, assigned task
StaffPurpleFiled document, sent message
SystemGrayDeadline reminder, auto-archive
VictoriaIndigoGenerated document, analyzed FA
Client Activity Highlight: Activities performed by clients are specially marked with a green “Client Activity” label for easy identification.
Supabase Realtime subscription:
  • New activities appear instantly (no refresh needed)
  • Client presence updates automatically
  • Smooth animation when new items appear
How It Works:
  1. Activity logged to database
  2. Postgres triggers realtime broadcast
  3. Frontend receives via WebSocket
  4. UI updates with animation

Activity Types Reference

Client-Triggered Activities

Triggered: When client accesses the portalLogged Details:
  • Session start time
  • Initial page visited
  • Device/browser info
Notification: Low priority (if enabled)Use Case: Track client engagement patterns, follow up with inactive clients
Triggered: When client uploads a file to the caseLogged Details:
  • Document name and type
  • File size
  • Upload location (which folder)
Notification: Normal priorityUse Case: Immediately review uploaded financials, discovery documents
Triggered: When client completes and submits Financial AffidavitLogged Details:
  • Submission timestamp
  • FA version/draft number
  • Completion percentage
Notification: High priorityUse Case: Review and approve FA before court deadline
Triggered: When client marks an assigned task as doneLogged Details:
  • Task title
  • Time to complete (from assignment)
  • Any notes added
Notification: Normal priorityUse Case: Track client progress, assign next steps
Triggered: When client sends a message to attorneyLogged Details:
  • Message preview
  • Thread context
  • Urgency flag (if set)
Notification: Normal priority (High if marked urgent)Use Case: Respond to client inquiries promptly

System-Generated Activities

Triggered: When a new case is createdLogged Details:
  • Case name and type
  • Assigned attorney
  • Jurisdiction
Triggered: When discovery milestones are reachedLogged Details:
  • Milestone name
  • Completion percentage
  • Items remaining
Triggered: When new client finishes initial setupLogged Details:
  • Onboarding duration
  • Sections completed
  • Initial documents uploaded

Email Notifications

Configuration Options

Email notifications are controlled at the firm level by administrators.
Email notifications are optional. Many firms prefer in-app only notifications to reduce inbox clutter. Enable selectively based on your workflow.
Available Email Toggles:
SettingDefaultDescription
email_enabledOffMaster toggle for all email notifications
email_client_loginOffNotify when clients log in
email_document_uploadOnNotify on new document uploads
email_fa_submittedOnNotify when FA is submitted
email_fa_approvedOffNotify client when FA approved
email_task_completedOffNotify when tasks are done
email_client_messageOnNotify on new client messages
email_onboarding_completedOffNotify when client completes onboarding

Email Format

When enabled, emails are sent via Resend with professional formatting:
From: Victoria AI <[email protected]>
Subject: [HIGH] Financial Affidavit Submitted - Johnson v. Johnson

────────────────────────────────────────

Financial Affidavit Submitted

Sarah Johnson completed and submitted their Financial Affidavit
for review. This requires attorney review before the court deadline.

[View Details Button]

────────────────────────────────────────

This notification was sent from your Divorce.law portal
resolute.divorce.law

Client Portal Integration

How Client Presence Works

The client portal automatically tracks presence without any action needed from clients.
1

Login Detected

When a client logs into the portal, a new session is created and the client_login activity is logged.
2

Heartbeat Starts

The portal sends a “heartbeat” signal every 30 seconds containing:
  • Current page (Dashboard, Documents, FA, etc.)
  • Current action (Viewing, Uploading, etc.)
  • Client name
3

Page Changes Tracked

When client navigates to a different page, an immediate heartbeat is sent with the new location.
4

Session Ends

When client closes browser or goes idle for 5+ minutes:
  • Session marked as ended
  • No longer shown in “Active Clients”
  • Total session duration logged

Privacy Considerations

Client Privacy: Presence tracking is designed for firm visibility only. Clients do not see when attorneys are viewing their case, and presence data is not shared with opposing parties.
  • Presence data is firm-isolated (multi-tenant RLS)
  • Clients cannot see their own presence history
  • No location tracking beyond page visited
  • Data retained for audit purposes per firm retention policy

Technical Architecture

Database Schema

Stores all notifications for users:
notifications (
  id UUID PRIMARY KEY,
  firm_id UUID NOT NULL,
  user_id UUID NOT NULL,
  case_id UUID,
  title TEXT NOT NULL,
  message TEXT NOT NULL,
  notification_type TEXT NOT NULL,
  priority TEXT DEFAULT 'normal',
  source_type TEXT,
  source_user_id TEXT,
  source_name TEXT,
  metadata JSONB,
  action_url TEXT,
  icon TEXT,
  read_at TIMESTAMPTZ,
  dismissed_at TIMESTAMPTZ,
  email_sent_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ DEFAULT now()
)
Indexes:
  • idx_notifications_user_unread - Fast lookup of unread
  • idx_notifications_user_created - Chronological feed
  • idx_notifications_case - Case-specific notifications
  • idx_notifications_firm_created - Firm-wide feed

Row Level Security

All activity data is protected by RLS policies:
-- Users can only view their own notifications
CREATE POLICY "Users can view their own notifications"
ON notifications FOR SELECT
USING (
  user_id = (
    SELECT id FROM user_profiles
    WHERE clerk_user_id = auth.jwt() ->> 'sub'
  )
);

-- Users can update (mark read/dismiss) their own
CREATE POLICY "Users can update their own notifications"
ON notifications FOR UPDATE
USING (
  user_id = (
    SELECT id FROM user_profiles
    WHERE clerk_user_id = auth.jwt() ->> 'sub'
  )
);
-- Firm members can view sessions for their firm
CREATE POLICY "Firm members can view sessions"
ON client_sessions FOR SELECT
USING (
  firm_id IN (
    SELECT firm_id FROM user_profiles
    WHERE clerk_user_id = auth.jwt() ->> 'sub'
  )
);

-- Clients can manage their own sessions
CREATE POLICY "Clients can manage own sessions"
ON client_sessions FOR ALL
USING (client_user_id = auth.jwt() ->> 'sub');

Real-Time Subscriptions

Victoria uses Supabase Realtime for instant updates:
// Frontend subscription example
supabase
  .channel('notifications-changes')
  .on(
    'postgres_changes',
    {
      event: 'INSERT',
      schema: 'public',
      table: 'notifications',
      filter: `user_id=eq.${userId}`,
    },
    (payload) => {
      // New notification received instantly
      addNotification(payload.new);
      incrementUnreadCount();
    }
  )
  .subscribe();

Best Practices

Use presence tracking proactively:
  1. Follow up with stuck clients - If you see someone on the FA page for 30+ minutes, send a quick message offering help
  2. Time your communications - Send important messages when you see the client is online for immediate visibility
  3. Track engagement patterns - Clients who haven’t logged in for 7+ days may need a check-in call
  4. Celebrate completions - When you see a client complete their FA, send an encouraging message
Keep notifications actionable:
  1. Process daily - Don’t let notifications pile up; review and dismiss daily
  2. Use filters - Focus on high-priority items (FA submissions, urgent messages)
  3. Mark as read - Click notifications you’ve handled to keep the count accurate
  4. Dismiss old items - Remove notifications you’ve already addressed
Configure emails strategically:
  1. Start with in-app only - Enable emails selectively based on need
  2. Essential emails - FA submissions and urgent client messages are good candidates
  3. Avoid overload - Don’t enable client login emails unless you have very few clients
  4. Daily digest option - Consider enabling digest mode for non-urgent activity (coming soon)
Leverage case activity for better outcomes:
  1. Pre-meeting review - Check recent activity before client calls
  2. Document client participation - Activity timeline proves client engagement for fee disputes
  3. Identify bottlenecks - See where cases are stalling based on activity gaps
  4. Audit trail - Complete record for malpractice defense if ever needed

Troubleshooting

Possible causes:
  1. Not logged in - Notifications require authentication
  2. Wrong user - Notifications are user-specific; check you’re logged into correct account
  3. All dismissed - You may have dismissed all notifications
  4. No new activity - Check Activity Center for overall firm activity
Fix:
  • Click notification bell to refresh
  • Check Activity Center → All Activity tab
  • Contact support if issue persists
Possible causes:
  1. Client not active - Sessions expire after 5 minutes of inactivity
  2. Heartbeat failure - Network issues on client’s device
  3. Different firm - Multi-tenant isolation (correct behavior)
How to verify:
  • Check Activity Center → Active Clients panel
  • Review Case Activity tab for recent “client_login” events
  • Confirm client is actively using the portal
Possible causes:
  1. Email disabled - Check notification preferences
  2. Specific type disabled - Each type has its own toggle
  3. Spam filter - Check client’s spam folder
  4. Invalid email - Verify email address in user profile
Fix:
  • Settings → Notifications → Enable email_enabled
  • Enable specific notification type toggle
  • Check Resend dashboard for delivery status
Possible causes:
  1. New case - No activity logged yet
  2. RLS restriction - May not have access to this case
  3. Loading issue - Click refresh button
Fix:
  • Perform an action on the case (add note, upload doc)
  • Check you have access to this case
  • Click the refresh icon in the Activity tab

Security & Compliance

Data Protection

All activity data is protected by Row Level Security (RLS) and multi-tenant isolation. Activity from one firm is never visible to another firm.
Security Measures:
  • RLS Policies: Database-level access control
  • Firm Isolation: Activity data partitioned by firm_id
  • JWT Authentication: All API calls require valid Clerk token
  • Audit Trail: Complete history preserved for compliance
  • Encryption: Data encrypted at rest and in transit

Retention & Compliance

Data TypeRetentionPurpose
Notifications90 daysUser experience
Client Sessions1 yearEngagement analytics
Case ActivitiesCase lifetime + 7 yearsAudit trail, malpractice defense
Compliance Alignment:
  • Bar Ethics: Complete documentation of client interactions
  • SOC 2: Audit logging requirements satisfied
  • GDPR: Activity data included in data export requests

FAQs

No. Activity tracking is designed for firm visibility only. Clients can see their own uploaded documents and submitted forms, but not the detailed activity timeline or presence tracking data.
5 minutes from the last heartbeat. If a client closes their browser or goes idle, they’ll be removed from the “Active Clients” list after 5 minutes.
Yes. You can dismiss all notifications and they won’t return. However, new activities will continue to generate new notifications. To truly disable, contact support about disabling notifications for your account.
Yes. The notification bell and Activity Center work on mobile browsers. Native push notifications are planned for a future release.
Not yet. Currently, notifications are generated for all cases you have access to. Case-specific notification preferences are on the roadmap.
They’re soft-deleted. Dismissed notifications are marked with a dismissed_at timestamp and hidden from the UI, but retained in the database for audit purposes.
Absolutely not. Activity data is strictly isolated by firm. There is no way for one firm to see another firm’s activity, even if they share a case.

Roadmap

Coming Soon:
  • Notification Preferences UI - Self-service configuration in Settings
  • Daily/Weekly Email Digests - Summary emails instead of individual alerts
  • Case-Specific Subscriptions - Watch/unwatch individual cases
  • Mobile Push Notifications - Native alerts on iOS/Android
  • Activity Analytics - Client engagement reports and insights
  • Custom Alert Rules - Create your own notification triggers
  • Slack/Teams Integration - Forward notifications to team chat

Support

Need help with Activity & Notifications? We’re here:
  • Email: [email protected]
  • Live Chat: Click support icon in bottom right
  • Office Hours: Monday-Friday, 9am-5pm PT
  • Response Time: Less than 2 hours during business hours
Common Requests:
  • Configure email notification preferences
  • Troubleshoot missing notifications
  • Export activity data for compliance
  • Custom notification rules setup