Email Notifications
AllyProof sends email notifications when scans complete, alerting your team to new results, score changes, and critical violations. Emails are delivered via Resend using React Email templates.
Notification Types
| Notification | Trigger | Content |
|---|---|---|
| Scan Complete | Any scan finishes (manual, scheduled, or CI/CD) | Accessibility score, violation count by severity, score change from previous scan, link to full report |
| Critical Violations | Scan finds new critical-severity violations | List of critical violations with affected pages and suggested fixes |
| Score Drop Alert | Score drops by 10+ points from previous scan | Previous score, current score, top violations contributing to the drop |
What a Scan Complete Email Includes
The scan complete email is the most common notification. It provides a concise summary of scan results:
- Site name and URL — Which site was scanned
- Accessibility score — The 0-100 score with a color indicator (green/yellow/red)
- Score change — Arrow up/down with point difference from the previous scan
- Violation summary — Count of violations by severity (critical, serious, moderate, minor)
- Pages scanned — Total number of pages included in the scan
- Scan duration — How long the scan took
- View Report link — Direct link to the scan results in the AllyProof dashboard
Notification Preferences
Each team member can configure their notification preferences in Settings > Notifications:
| Setting | Options | Default |
|---|---|---|
| Scan complete emails | All scans / Scheduled only / None | All scans |
| Critical violation alerts | On / Off | On |
| Score drop alerts | On / Off | On |
Organization admins can also set default notification preferences for new team members.
Resend Integration
AllyProof uses Resend for transactional email delivery. Resend provides:
- Free tier: 3,000 emails per month (sufficient for most Starter and Agency plans)
- High deliverability with SPF, DKIM, and DMARC support
- React Email templates for type-safe, component-based email authoring
- Delivery tracking and bounce handling
RESEND_API_KEY Setup
- Create a Resend account at resend.com
- Add and verify your sending domain (e.g.
notifications.allyproof.com) - Generate an API key in the Resend dashboard
- Add it to your environment:
RESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxx RESEND_FROM_EMAIL=AllyProof <notifications@allyproof.com>
React Email Templates
Email templates are built with React Email, which lets you author emails as React components with full TypeScript support. Templates are located in the src/emails/ directory:
src/emails/
├── scan-complete.tsx — Scan results summary
├── critical-violations.tsx — Critical violation alert
├── score-drop.tsx — Score regression warning
└── components/
├── header.tsx — Shared email header with logo
├── footer.tsx — Unsubscribe link and legal text
└── score-badge.tsx — Color-coded score displayTemplates use inline styles (required for email client compatibility) and are responsive across Gmail, Outlook, Apple Mail, and other major clients.
Sending Emails in the Scan Pipeline
Notification emails are sent at the end of the scan pipeline, after all results have been stored and the accessibility score has been calculated:
Scan complete
├── Store violations in database
├── Calculate accessibility score
├── Generate AI fix suggestions (async)
└── Send notification emails
├── Query org members with notifications enabled
├── Build email from React Email template
└── Send via Resend APIEmail sending is non-blocking — if Resend is temporarily unavailable, the scan results are still saved. Failed email deliveries are logged and can be retried.
Testing Emails Locally
During development, you can preview email templates without sending real emails:
- Use the React Email dev server:
npx email dev --dir src/emailsto preview templates in your browser with hot reload - Set
RESEND_API_KEYto a test key from Resend to send to verified addresses only