A modular, DI-native NuGet notification library for ASP.NET Core. Drop it in. Bring your own API keys. Own your data.
✅ v0.2.0 STABLE — Production-ready with 35+ adapters across 13+ channels
RecurPixel.Notify is a pure .NET library — not a platform, not SaaS, no external dependency. It handles multi-channel notification delivery (Email, SMS, Push, WhatsApp, Slack, Discord, Teams, Mattermost, Rocket.Chat, Telegram, Facebook, LINE, Viber, In-App) through a single consistent interface.
You bring: your API keys, your message content, your delivery log table.
We handle: provider API calls, retry with exponential backoff, cross-channel fallback chains, parallel dispatch, and delivery hooks.
All adapters are unit-tested. The table below shows which have integration testing (real API verification) and community usage. This matrix validates the "stable" label — you're not betting on guesses.
| Package | Provider | Channel | Unit Tested | Integration Tested | Community Approved |
|---|---|---|---|---|---|
Email.SendGrid |
Twilio SendGrid | ✅ | ✅ | 🔲 | |
Email.Smtp |
Any SMTP server | ✅ | ✅ | 🔲 | |
Email.Mailgun |
Mailgun | ✅ | 🔲 | 🔲 | |
Email.Resend |
Resend | ✅ | ✅ | 🔲 | |
Email.Postmark |
Postmark | ✅ | 🔲 | 🔲 | |
Email.AwsSes |
AWS SES | ✅ | 🔲 | 🔲 | |
Email.AzureCommEmail |
Azure Communication Services | ✅ | 🔲 | 🔲 | |
Sms.Twilio |
Twilio | SMS | ✅ | ✅ | 🔲 |
Sms.Vonage |
Vonage (Nexmo) | SMS | ✅ | 🔲 | 🔲 |
Sms.Plivo |
Plivo | SMS | ✅ | 🔲 | 🔲 |
Sms.Sinch |
Sinch | SMS | ✅ | 🔲 | 🔲 |
Sms.MessageBird |
MessageBird | SMS | ✅ | 🔲 | 🔲 |
Sms.AwsSns |
AWS SNS | SMS | ✅ | 🔲 | 🔲 |
Sms.AzureCommSms |
Azure Communication Services | SMS | ✅ | 🔲 | 🔲 |
Push.Fcm |
Firebase Cloud Messaging | Push | ✅ | 🔲 | 🔲 |
Push.Apns |
Apple Push Notification Service | Push | ✅ | 🔲 | 🔲 |
Push.OneSignal |
OneSignal | Push | ✅ | 🔲 | 🔲 |
Push.Expo |
Expo Push | Push | ✅ | 🔲 | 🔲 |
WhatsApp.Twilio |
Twilio WhatsApp | ✅ | ✅ | 🔲 | |
WhatsApp.MetaCloud |
Meta Cloud API | ✅ | 🔲 | 🔲 | |
WhatsApp.Vonage |
Vonage WhatsApp | ✅ | 🔲 | 🔲 | |
Slack |
Slack Webhooks / Bot API | Team Chat | ✅ | ✅ | 🔲 |
Discord |
Discord Webhooks | Team Chat | ✅ | ✅ | 🔲 |
Teams |
Microsoft Teams Webhooks | Team Chat | ✅ | 🔲 | 🔲 |
Mattermost |
Mattermost Webhooks | Team Chat | ✅ | 🔲 | 🔲 |
RocketChat |
Rocket.Chat Webhooks | Team Chat | ✅ | 🔲 | 🔲 |
Facebook |
Meta Messenger API | Social | ✅ | 🔲 | 🔲 |
Telegram |
Telegram Bot API | Social | ✅ | ✅ | 🔲 |
Line |
LINE Messaging API | Social | ✅ | 🔲 | 🔲 |
Viber |
Viber Business Messages | Social | ✅ | 🔲 | 🔲 |
InApp |
Hook-based (user-defined storage) | In-App | ✅ | ✅ | 🔲 |
Legend: ✅ Complete · 🔲 Not yet ·
# Full SDK — everything included
dotnet add package RecurPixel.Notify.Sdk
# Or install only what you need
dotnet add package RecurPixel.Notify
dotnet add package RecurPixel.Notify.Email.SendGrid
dotnet add package RecurPixel.Notify.Sms.Twilio→ Getting Started · Quick Start · Usage Tiers · Adapter Reference
⚠️ Upgrading from v0.1.0-beta.1? v0.2.0 includes breaking changes: namespace reorganization, new meta-package structure, typedTriggerResultreturns, and explicitUseHandlerfor InApp channels. → See the Migration Guide for step-by-step upgrade instructions.
- Zero infrastructure — pure library, no platform to host or sign up for
- Provider agnostic — swap Twilio for Vonage with a config change, nothing else breaks
- DI-native — registers via
AddRecurPixelNotify(), injected asINotifyService - Config agnostic — accepts
IConfiguration, options builder, or a raw POCO - Content agnostic — we deliver the payload, you build the subject and body
- Hook-based logging —
OnDelivery()callback, you write to your own DB
A new observability package for delivery tracking and troubleshooting, built with a data-first approach: data layer solidified first, REST API second, UI last.
Key Features:
- NotificationLog Entity & INotificationLogStore — Pluggable persistence (SQL Server, PostgreSQL, SQLite, custom)
- OnDelivery Hook Integration — Logs automatically captured for every delivery
- BulkBatchId Grouping — Track all notifications in a bulk send as a unit (requires minor Orchestrator update to
BulkTriggerAsync) - REST API — Query logs, filter by channel/status/date, retrieve retry history, view batch history
- Embedded HTML Dashboard — Real-time logs table, channel status breakdown, failure histogram, live send testing
Why This Order Matters: Dashboard development follows strict phases — UI is built last, not first. Data accuracy is verified before any visualization. See v0.3.0 implementation plan for detailed build order.
- Circuit Breaker Pattern — Auto-disable broken channels without code changes
- Community Adapter Approval — Peer-reviewed providers earn 🟢 status
- Adapter Analytics — Success/failure rate tracking per provider (feeds Dashboard)
- Scheduled Send — Send notifications at future times
- Template Engine — Inline or database-backed notification templates
- OpenTelemetry Integration — Full distributed tracing for all channels
MIT — see LICENSE.