Aeion Notification Engine vs SendGrid, Mailgun, Twilio
SendGrid charges $0-$0.10/1,000 emails. Twilio charges $0.0075-$0.04/SMS. Aeion Notification Engine routes through your provider but includes 24 built-in HTML templates, user preference management, quiet hours, frequency caps, and delivery tracking — all in one module, included free.
Head-to-Head Comparison
| Capability | Aeion Notification Engine | SendGrid | Mailgun | Twilio SMS |
|---|---|---|---|---|
| **Email pricing** | $0 (your provider cost) | $0-0.10/1K | $0.005-0.08/1K | N/A |
| **SMS pricing** | $0 (Twilio cost) | N/A | N/A | $0.0075-0.04/SMS |
| **Push notifications** | Web + mobile (FCM/APNs) | No | No | No |
| **Email templates** | 24 built-in HTML | Basic templates | Basic templates | N/A |
| **HTML email engine** | CSS-inlined responsive | Transactional templates | Templates | N/A |
| **User preferences** | Per-user opt-in/opt-out, quiet hours | No | No | No |
| **Frequency caps** | Per-user limits, digest | No | No | No |
| **Delivery tracking** | Real-time logs (opened/clicked/bounced) | ✅ | ✅ | ✅ |
| **Multi-channel fallback** | Email → SMS → push | No | No | No |
| **Event-driven triggers** | 24 built-in handlers | Webhook + API | Webhook + API | Webhook + API |
| **Quiet hours** | Timezone-aware routing | No | No | No |
| **Provider agnostic** | ✅ SendGrid/Mailgun/SES/SMTP | N/A | N/A | SMS only |
| **Unsubscribe management** | One-click GDPR compliant | ✅ | ✅ | No |
| **Channel routing** | User preference aware | No | No | No |
The Per-Message Pricing Trap
SendGrid pricing:
``` Free tier: 100 emails/day (limited) Essentials: $14.95/month + $0.10/1,000 emails Pro: $89.95/month + $0.05/1,000 emails Advanced: $249.95/month + $0.001/1,000 emails
At 50,000 transactional emails/month (Pro): = $89.95 + (50 × $0.05 × 1,000) = $89.95 + $2,500 = $2,589.95/month
At 500,000 transactional emails/month (Advanced): = $249.95 + (500 × $0.001 × 1,000) = $249.95 + $500 = $749.95/month ```
Twilio SMS pricing:
``` Standard SMS: $0.0075/message (US) Premium SMS: $0.04/message (with delivery receipts) Alphanumeric: $0.02/message
At 10,000 SMS/month: = $75-400/month
At 100,000 SMS/month: = $750-4,000/month ```
Aeion Notification Engine:
``` Module: $0 (included free) Email: You pay your provider (SendGrid/Mailgun/SES) → SendGrid Essentials: ~$0.10/1,000 = $50/month at 500K emails → Mailgun: ~$0.02/1,000 = $10/month at 500K emails SMS: You pay Twilio directly → $0.0075/message = $750/month at 100K SMS
Total: Your provider costs only. vs SendGrid Pro at 500K emails: $2,589.95/month Savings: ~$2,500/month just on email ```
Why pay SendGrid's platform fee on top of your provider costs?
24 Built-In HTML Templates vs SendGrid/Mailgun Basic Templates
SendGrid/Mailgun templates:
``` You get: basic template editor → Plain text with merge tags → No pre-built transactional templates → No HTML email design → No responsive CSS inlining → No preview text → You build everything from scratch
Every transactional email (welcome, order confirmation, password reset) → You write the HTML, CSS, responsive design, preview text → You handle the unsubscribe link → You handle the preference link → You handle the brand header/footer → You handle the CSS inlining for email clients ```
Aeion Notification Engine (built-in handlers):
``` You get: 24 complete HTML transactional templates → Fully responsive CSS (max-width: 580px) → CSS-inlined for email client compatibility → Preview text (hidden, mso-hide:all) → Brand header with configurable color → One-click unsubscribe link → Preference management link → Mobile-optimized layout → All variables rendered server-side
Built-in templates: auth.user.registered (welcome) auth.password.reset.requested (password reset) commerce.order.created (order confirmation) commerce.order.shipped (shipment notification) billing.payment.failed (payment failed) billing.subscription.renewing_soon (renewal reminder) billing.subscription.canceled (cancellation) helpdesk.ticket.resolved (CSAT survey) dining.reservation.confirmed (dining reservation) hospitality.reservation.confirmed (hotel reservation) recruit.interview.scheduled (interview confirmation) 14 more built in...
Each fires automatically on the corresponding event. No code needed. No template to write. ```
The template development cost:
``` Building one production-ready HTML email template: → Design: 4-8 hours → Responsive CSS: 2-4 hours → Testing (Gmail, Outlook, Apple Mail, etc.): 4-8 hours → CSS inlining: 1-2 hours → Variable interpolation: 1-2 hours → Preview text: 1 hour → Accessibility: 1 hour
Total: 14-28 hours per template
24 templates × 20 hours average = 480 hours = $24,000-48,000 (in developer time at $50-100/hour)
Aeion Notification Engine: $0 ```
User Preference Management — The Missing Piece
SendGrid/Mailgun:
``` They handle: email delivery They don't handle: user preferences
Your code must: → Build a preferences page → Store preferences in your DB → Check preferences before every send → Implement quiet hours → Implement frequency caps → Implement category unsubscribe → Handle SMS opt-out (TCPA compliance) → Handle double opt-in for marketing (GDPR)
That's: 200+ lines of code for a basic implementation 500+ lines for a proper GDPR/TCPA-compliant version
And: Every module must implement this separately → Commerce: does it check preferences? → CRM: does it check preferences? → Billing: does it check preferences? → If any module forgets → user gets unwanted notifications ```
Aeion Notification Engine (preference center):
```typescript // One place to configure: notificationService.send({ userId: "usr_abc", template: "order_shipped", data: { orderId: "12345" }, }); // → Checks user preferences automatically // → Respects quiet hours (timezone-aware) // → Respects frequency caps // → Respects category unsubscribe // → Consolidates excess into digest // → Bypasses quiet hours for urgent (payment.failed, sla.breached)
// User preference: { email: { enabled: true }, sms: { enabled: false }, categories: { order_updates: { enabled: true, channels: ["email"] }, marketing: { enabled: false }, // Opted out billing: { enabled: true, channels: ["email", "sms"] }, }, quietHours: { enabled: true, start: "22:00", end: "08:00", timezone: "America/New_York", allowUrgent: true }, frequencyCap: { maxPerHour: 3, maxPerDay: 10, consolidate: true }, } ```
Cross-module consistency: Every module that uses the Notification Engine respects the same preferences. No module can bypass them. Marketing module can't send to users who opted out. Billing can always send (security alerts bypass quiet hours).
Multi-Channel Fallback — The Smart Router
SendGrid/Mailgun:
``` You get: Email delivery only SMS: Use Twilio separately Push: Use Firebase separately
Your code must: → Route to email for marketing → Route to SMS for urgent alerts → Route to push for real-time → Handle channel failures (email bounced → try SMS) → Track delivery across channels → Maintain separate provider credentials
Problem: Channel fragmentation → 3 providers, 3 sets of credentials, 3 APIs → No unified preference management → No unified delivery tracking → No fallback logic ```
Aeion Notification Engine (unified send API):
```typescript // One API for all channels: await notificationService.send({ userId: "usr_abc", channels: ["email", "sms", "push"], // Try in order template: "payment_failed", data: { amount: 150.00 }, priority: "high", // Urgent → bypass quiet hours });
// → Check email preferences → send via configured email provider // → If email bounces → try SMS // → If SMS fails → try push // → If push fails → log failure
// All tracked in one place — the delivery log shows every channel attempt { notificationId: "not_abc123", userId: "usr_xyz", deliveries: [ { channel: "email", status: "bounced", reason: "mailbox_full" }, { channel: "sms", status: "delivered", messageId: "SMxxx" }, ] } ```
Priority routing:
```typescript // High priority (sla.breached, payment.failed): // → Bypass quiet hours // → Bypass frequency caps // → Immediate send, no queue
// Normal priority: // → Respect quiet hours // → Respect frequency caps // → Queue if over limits ```
Provider Agnostic — Use Your Preferred Provider
SendGrid: SendGrid only. Can't switch without code changes.
Mailgun: Mailgun only. Can't switch without code changes.
Aeion Notification Engine:
```typescript // Configure once, switch providers without code changes:
// SendGrid: { provider: "sendgrid", apiKey: "SG.xxx", fromEmail: "noreply@your-domain.com", }
// Switch to Mailgun: { provider: "mailgun", apiKey: "key-xxx", domain: "mg.your-domain.com", }
// Switch to SES: { provider: "ses", accessKeyId: "AKIA...", secretAccessKey: "...", region: "us-east-1", }
// Switch to SMTP: { provider: "smtp", host: "smtp.your-domain.com", port: 587, auth: { user: "...", pass: "..." }, }
// The send API abstracts all of this: // → No code changes when switching providers // → Same API, different backend // → Same delivery tracking format // → Same error handling ```
Why this matters:
- Provider pricing changes → switch to cheaper option
- Provider reliability issues → failover to another
- Provider lock-in avoidance → negotiate better rates
- Development flexibility → use development provider, switch for production
The True Cost Comparison
| Cost Factor | Aeion Notification Engine | SendGrid Pro | Mailgun Pro |
|---|---|---|---|
| **Platform fee** | $0 | $89.95/mo | $35/mo |
| **Email cost (500K/mo)** | $0 (Mailgun $10/mo) | $2,500/mo | $10/mo |
| **SMS cost (10K/mo)** | $0 (Twilio $75/mo) | N/A | N/A |
| **Template development** | $0 (24 built-in) | DIY (~$24K one-time) | DIY (~$24K one-time) |
| **Preference management** | $0 (built-in) | DIY (~$5K one-time) | DIY (~$5K one-time) |
| **Channel fallback** | $0 (built-in) | DIY (~$3K one-time) | DIY (~$3K one-time) |
| **Push notifications** | $0 (built-in) | ❌ No | ❌ No |
| **At 500K emails/mo** | **$85/month** | **$2,590/month** | **$45/month** |
| **First year total** | **$1,020** | **$31,080** | **$540** |
When SendGrid/Mailgun/Twilio Make Sense
Use SendGrid or Mailgun when:
- You only send email (no SMS, no push)
- You have a dedicated email delivery engineer to manage templates
- You need SendGrid/Mailgun-specific features (advanced analytics, dedicated IPs)
- You're already in their ecosystem and migration cost exceeds savings
Use Twilio for SMS when:
- SMS is your primary notification channel
- You need advanced SMS features (two-way messaging, MMS)
- You have compliance requirements (TCPA) that need Twilio's tools
Use Aeion Notification Engine when:
- You send across multiple channels (email, SMS, push)
- You want built-in templates (saves 480+ hours of development)
- You want unified preference management across all modules
- You want provider agnostic architecture (no lock-in)
- You run Aeion OS (it's included free)
Migration from SendGrid/Mailgun to Aeion:
```typescript // Before (SendGrid): const sg = require("@sendgrid/mail"); sg.setApiKey(process.env.SENDGRID_API_KEY); await sg.send({ to: user.email, from: "noreply@your-domain.com", templateId: "d-abc123", dynamicTemplateData: { userName, orderNumber }, });
// After (Aeion Notification Engine): await notificationService.send({ userId: user.id, template: "order_confirmation", data: { userName, orderNumber }, });
// Same result. Same tracking. Same unsubscribe. // But: preferences, quiet hours, frequency caps, multi-channel fallback all included. ```
Push Notifications — The SendGrid/Mailgun Gap
SendGrid and Mailgun: Email only. No push.
Aeion Notification Engine:
```typescript // Web push (FCM/Web-Push): await notificationService.send({ userId: "usr_abc", channel: "push", template: "order_shipped", data: { title: "Your order shipped!", body: "Order #12345 is on its way.", icon: "/icons/order-icon.png", tag: "order-update", data: { orderId: "12345", url: "/orders/12345" }, }, });
// Mobile push (FCM for Android, APNs for iOS): await notificationService.send({ userId: "usr_abc", channel: "push", platform: "ios", data: { title: "Time-sensitive alert", body: "Meeting starts in 5 minutes", badge: 1, sound: "default", priority: "high", }, });
// Push subscription management: await pushService.subscribe(userId, { endpoint: "https://fcm.googleapis.com/fcm/send/...", keys: { p256dh: "...", auth: "..." }, platform: "web", browser: "Chrome", }); ```
Why push matters:
- Push typically has a higher open rate than email
- Push is instant (no inbox competition)
- Push works when user is offline (delivered to device)
- Push enables re-engagement for inactive users
At 10,000 push notifications/month:
- Firebase Cloud Messaging: Free (up to 500K/month)
- vs SendGrid push: Not available
- vs email: $0.10/1,000 = $1,000/month for 10K emails
Push is more cost-effective than email for time-sensitive notifications.
Frequently Asked Questions
Sits on top. You bring SendGrid, Mailgun, Resend, Postmark, AWS SES, or Twilio — Aeion is the orchestration + template + preference + audit layer. You're not locked to a single provider; switch ESPs without touching your application code. The per-email rate you pay is whatever your chosen provider charges; Aeion adds zero markup.
All channels through the same envelope. SMS via Twilio / AWS SNS / MessageBird, push via FCM / APNs, in-app banner native, webhooks signed with HMAC-SHA256. Same template authoring, same preference model, same audit log across channels. Define once, deliver across all.
Per-user, per-category, per-channel preferences. Categories ('Order updates', 'Promotional', 'Account alerts') are configurable; user-facing preference center is a drop-in component. Quiet hours + frequency caps + per-tenant override rules built in. Unsubscribe links include audit trail.
Both. MJML-based visual editor for marketing-team-owned templates, with versioning + A/B testing + rollback. Code-defined templates for transactional emails that engineering owns. Both share the same render pipeline + preview + delivery surface — no 'marketing has their own tool' silo.
Per-recipient + per-domain + per-campaign metrics: delivered / bounced (hard/soft) / opened / clicked / unsubscribed / complained. ISP feedback loops parsed automatically. Sender reputation scoring per domain. Quarantine for problematic recipients to protect deliverability. Same data the provider tracks, surfaced in the Aeion observability layer.