Learn how Zenovay intelligently groups similar errors together to reduce noise and speed up debugging.
How Error Grouping Works
Grouping Algorithm
Zenovay groups errors based on:
- Error type - TypeError, ReferenceError, etc.
- Error message - Normalized message pattern
- Stack trace - Top frames of call stack
- Source location - File, line, column
Example
These errors are grouped together:
// Error 1: User ID 123
TypeError: Cannot read property 'name' of undefined
at getUserName (user.js:45:12)
at renderProfile (profile.js:78:5)
// Error 2: User ID 456
TypeError: Cannot read property 'name' of undefined
at getUserName (user.js:45:12)
at renderProfile (profile.js:78:5)
Same group because:
- Same error type (TypeError)
- Same message pattern
- Same stack trace location
What's Normalized
| Original | Normalized |
|---|---|
User 123 not found | User {id} not found |
Error at line 45 | Error at line {n} |
Object#<abc123> | Object#<id> |
/api/users/123 | /api/users/{id} |
Error Group Dashboard
Group Overview
Each error group shows:
| Metric | Description |
|---|---|
| Events | Total occurrences |
| Users | Unique users affected |
| First Seen | Initial occurrence |
| Last Seen | Most recent |
| Trend | Frequency trend (↑↓→) |
| Status | New, Reviewing, Resolved |
Group Detail Page
Click a group to see:
- Sample error - Full details of one instance
- Event timeline - Occurrences over time
- Affected users - List of impacted visitors
- Browser breakdown - Which browsers affected
- Page breakdown - Where errors occur
- Related groups - Similar errors
Error Status Workflow
Status Types
| Status | Description | Use Case |
|---|---|---|
New | Just discovered | Default for new errors |
Reviewing | Being investigated | Assigned to developer |
Resolved | Fix deployed | Error should stop |
Ignored | Won't fix | Known issue, low priority |
Regressed | Returned after resolve | Needs re-investigation |
Workflow Example
New Error Detected
↓
[New] ← Auto-assigned
↓
Developer clicks "Take Ownership"
↓
[Reviewing] + Assignee
↓
Fix deployed
↓
[Resolved] + Resolution note
↓
If error recurs:
↓
[Regressed] → Notification sent
Changing Status
Single error:
- Open error group
- Click status dropdown
- Select new status
- (Optional) Add note
Bulk actions:
- Select multiple errors
- Click Actions → Change Status
- Select status
- Confirm
Filtering & Sorting
Filter Options
| Filter | Options |
|---|---|
| Status | New, Reviewing, Resolved, Ignored |
| Date Range | Last 24h, 7 days, 30 days, Custom |
| Browser | Chrome, Firefox, Safari, Edge, etc. |
| OS | Windows, macOS, iOS, Android, Linux |
| Page | Specific URL patterns |
| Error Type | TypeError, ReferenceError, etc. |
| Assignee | Team member |
Sort Options
- Most frequent (default)
- Most users affected
- Newest first
- Recently active
- Oldest unresolved
Managing Error Groups
Merge Groups
Sometimes separate groups should be one:
- Select groups to merge
- Click Actions → Merge Groups
- Choose primary group
- Confirm merge
Merging combines:
- Event counts
- User counts
- Timeline data
Split Groups
If a group contains different errors:
- Open error group
- Click Split Group
- Select events to separate
- Create new group
Delete Groups
Remove false positives:
- Select group(s)
- Click Actions → Delete
- Confirm deletion
Future matching events will create new groups.
Assignee & Ownership
Assign to Team Member
- Open error group
- Click Assignee dropdown
- Select team member
- They receive notification
Auto-Assignment Rules
Set up automatic assignment:
- Go to Settings → Error Rules
- Create rule:
- Condition: Error message contains "payment"
- Action: Assign to "Payment Team"
Ownership History
View who worked on an error:
- Assignment changes
- Status updates
- Notes added
- Resolution details
Integrations
Jira Integration
Create Jira tickets from errors:
- Connect Jira in Settings → Integrations
- Open error group
- Click Create Jira Issue
- Map fields
- Issue created with error details
GitHub Integration
Link errors to GitHub issues:
- Connect GitHub repository
- Click Create GitHub Issue
- Issue includes:
- Error message
- Stack trace
- Link back to Zenovay
Slack Notifications
Get notified in Slack:
- Connect Slack workspace
- Set up error alerts
- Receive notifications for:
- New error types
- Error spikes
- Regressions
Search & Discovery
Search Syntax
# Search by message
message:"Cannot read property"
# Search by file
file:checkout.js
# Search by type
type:TypeError
# Combined search
type:TypeError file:payment status:new
Saved Searches
Save frequently used filters:
- Apply filters
- Click Save Search
- Name the search
- Access from sidebar
Best Practices
Triage Workflow
- Daily review: Check new errors each morning
- Prioritize by impact: Users affected > frequency
- Quick wins: Resolve easy fixes immediately
- Document: Add notes for complex issues
- Monitor regressions: Set alerts for resolved errors
Effective Grouping
- Keep source maps current
- Use consistent error messages
- Add context to tracked errors
- Review and merge related groups
Team Collaboration
- Assign clear ownership
- Use status consistently
- Add resolution notes
- Share learnings in team
Troubleshooting
Too Many Groups
Causes:
- Dynamic error messages
- Missing source maps
- Third-party script errors
Solutions:
- Add message normalization
- Upload source maps
- Filter third-party errors
Errors Not Grouping
Check:
- Stack traces available
- Same source location
- Message patterns match
Wrong Grouping
- Split incorrectly grouped errors
- Review grouping algorithm
- Add custom grouping rules