navidocs/INTEGRATIONS-SIP-COMMUNICATION.md

38 KiB

Communications & SIP Integration Master Document

Unified Strategy for 10 Provider Integration

Document Version: 2.0 Created: 2025-11-14 Scope: Email, SMS, Voice, WhatsApp, Slack, Discord Status: Complete Implementation Strategy Total Providers: 10 (researched & benchmarked)


TABLE OF CONTENTS

  1. Executive Summary
  2. Provider Comparison Matrix
  3. Provider Categories
  4. Cost Analysis
  5. Implementation Roadmap
  6. Integration Architecture
  7. Testing Strategy
  8. Production Checklist
  9. Reference Documents

EXECUTIVE SUMMARY

NaviDocs requires a multi-channel communication strategy to reach boat owners, brokers, mechanics, and support teams across their preferred platforms. This document synthesizes research on 10 leading communication providers and provides a phased implementation roadmap.

Strategic Goals

  1. Reliability: Ensure critical notifications reach users reliably
  2. Cost Efficiency: Minimize messaging costs while maximizing reach
  3. User Experience: Meet users where they are (SMS for boat owners, Discord for tech teams)
  4. Compliance: GDPR, CCPA, anti-spam regulations
  5. Scalability: Support 1,000+ boats without infrastructure changes

Phase 1 (Months 1-2): Foundation

  • Email: Mailgun (reliable, affordable transactional email)
  • SMS: Twilio (standard in industry, excellent reliability)
  • Cost: ~$50-100/month for typical SaaS usage

Phase 2 (Months 2-3): Team Integration

  • Slack: Webhooks (team notifications, 0 cost)
  • Discord: Bot (technical teams, 0 cost)
  • Cost: $0 (free webhook APIs)

Phase 3 (Months 4-6): Advanced

  • Voice: Twilio (warranty/recall alerts via phone call)
  • WhatsApp: Meta WhatsApp Business API (document upload workflow)
  • Cost: $3-20/month depending on volume

Provider Selection Criteria

Criterion Weight Selection Logic
Reliability 25% 99%+ uptime, DLR tracking
Cost 25% Per-message vs flat-rate pricing
Ease of Integration 20% Webhook support, library ecosystem
User Reach 15% Global coverage, adoption rates
Support Quality 15% Developer docs, response time

PROVIDER COMPARISON MATRIX

Overview (Sorted by Importance for NaviDocs)

Provider Type Cost Model Use Case Priority
Twilio SMS/Voice/WhatsApp $0.005-0.0375/SMS Primary SMS provider P0
Mailgun Email $0.50/1k emails, flat $25/mo Transactional email P0
Slack Team Chat Free webhooks Team notifications P1
Discord Team Chat Free bot API Tech team notifications P1
SendGrid Email $29/mo (12k/mo included) Email alternative P2
Vonage SMS/Voice $0.00-0.038/SMS SMS redundancy P2
MessageBird Omnichannel $0.0048-0.05/SMS Unified SMS + channels P2
Bandwidth Voice/SMS $0.0075-0.035/SMS Voice-first approach P2
Postmark Email $10/mo, $0.003-0.004 per overage Email redundancy P3
Plivo SMS/Voice $0.005-0.025/SMS SMS/voice redundancy P3

PROVIDER CATEGORIES

Category 1: Email Providers (Transactional Email)

Profile: API-first email service, widely adopted by startups and SaaS companies

Specifications:

  • Base Price: Free tier (10k emails/month) + $25/month (100k emails)
  • Per-Message: $0.50 per 1,000 emails ($0.0005 each)
  • Uptime SLA: 99.99%
  • Delivery Rate: 98%+
  • Authentication: API keys, SMTP, webhooks
  • Regions: 3 (US, EU, APAC)

NaviDocs Integration:

// Send document upload confirmation
import mailgun from 'mailgun.js';

const mg = mailgun.client({
  username: 'api',
  key: process.env.MAILGUN_API_KEY,
  url: 'https://api.eu.mailgun.net'
});

const messageData = {
  from: 'support@navidocs.boat',
  to: owner.email,
  subject: 'Document Received: Engine Warranty',
  html: `<h1>Your document has been uploaded</h1>
         <p>Engine Warranty for ${boat.name}</p>
         <p><a href="https://navidocs.boat/doc/${doc.id}">View in NaviDocs</a></p>`
};

await mg.messages.create('navidocs.boat', messageData);

Pros:

  • Generous free tier (10k/month)
  • Simple API (REST + SMTP)
  • Excellent webhook support (delivery notifications)
  • Pay-as-you-go after free tier
  • Quick setup (5 minutes)

Cons:

  • Requires domain verification (5-10 minutes)
  • Reputation management (ISP whitelisting)
  • Warm-up period needed for new IPs

Pricing Scenario:

  • Startup (100 emails/day): Free tier
  • Small dealer (5,000 emails/month): $25/month
  • Large dealer (50,000 emails/month): $25/month

Recommendation: Use Mailgun as primary email provider. Cost is fixed at $25/month regardless of volume up to 100k/month, making it predictable and affordable.

SendGrid (Alternative)

Profile: Enterprise email service, strong compliance features

Specifications:

  • Base Price: $29/month (12k emails included)
  • Overage: $0.0003 per email
  • Uptime SLA: 99.95%
  • Compliance: HIPAA, SOC 2 Type II
  • Features: Advanced analytics, segmentation, A/B testing

Cost Comparison:

  • 10k/month: Mailgun $0, SendGrid $29
  • 50k/month: Mailgun $25, SendGrid $29
  • 100k/month: Mailgun $25, SendGrid $29

Recommendation: Use SendGrid as backup provider only. Mailgun is cheaper for typical SaaS usage. SendGrid better for compliance-heavy industries.

Postmark (Alternative)

Profile: Email service focused on transactional email reliability

Specifications:

  • Base Price: $10/month (10k emails)
  • Overage: $0.003-0.004 per email
  • Uptime SLA: 99.99%
  • Bounce Handling: Automatic list cleaning
  • Integration: Excellent for Slack alerts

Cost Comparison:

  • 100k/month: Postmark $40 + overages ($30), SendGrid $29

Recommendation: Use Postmark if maximum reliability is priority. For NaviDocs, Mailgun's cost advantage is significant.


Category 2: SMS/SMS Aggregators (Short Message Service)

Profile: Dominant SMS/voice provider, 500k+ customers

Specifications:

  • SMS Pricing: $0.0075 per SMS (US), $0.005-0.038 (international)
  • Inbound SMS: $0.0075 per SMS
  • Message Segments: Split at 160 characters (standard)
  • Uptime SLA: 99.9%
  • DLR Tracking: Real-time delivery receipts
  • Compliance: TCPA, GDPR, anti-spam built-in
  • Global Coverage: 190+ countries

NaviDocs Integration:

// Send warranty expiration alert
const twilio = require('twilio')(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

await twilio.messages.create({
  body: 'NaviDocs: Engine warranty expires Dec 15, 2027. https://navidocs.boat/warranty/123',
  from: '+41791234567',  // Must be verified number
  to: owner.phone
});

Pricing Scenarios:

Volume Cost Notes
100 SMS/month $0.75 Minimum viable
1,000 SMS/month $7.50 Typical small dealer
10,000 SMS/month $75 Medium dealer
100,000 SMS/month $750 Large dealer

Pros:

  • Best-in-class reliability (99.9% SLA)
  • Real-time delivery tracking
  • Excellent compliance tools (TCPA toolkit)
  • Global SMS + voice + WhatsApp
  • Webhook support for delivery/inbound
  • SDKs in every language

Cons:

  • Highest per-message cost for SMS
  • Requires phone number verification
  • Carrier reputation management needed
  • Inbound SMS tracking costs

Recommendation: Use Twilio as primary SMS provider. Cost is minimal compared to value of reliability, especially for critical warranty alerts.

Vonage (Alternative)

Profile: Telecom-backed SMS provider, strong in Europe

Specifications:

  • SMS Pricing: $0.00-0.038 per SMS (varies by destination)
  • Inbound SMS: Free for first 100k/month
  • Uptime SLA: 99.9%
  • DLR Tracking: Built-in
  • Compliance: GDPR optimized for EU

Cost Comparison:

  • 10,000 SMS/month: Twilio $75, Vonage $50-60 (EU)

Recommendation: Use Vonage as EU-primary alternative if cost is critical. Less mature ecosystem than Twilio.

MessageBird (Omnichannel)

Profile: Unified messaging platform, SMS + WhatsApp + channels

Specifications:

  • SMS Pricing: $0.0048-0.05 per SMS
  • WhatsApp: $0.0045-0.006 per message
  • Channels: Unified API for SMS, WhatsApp, Telegram, RCS
  • Uptime SLA: 99.95%
  • Flow Builder: No-code message workflows

NaviDocs Use Case: Instead of integrating Twilio + WhatsApp API separately, MessageBird provides unified interface:

// Send via SMS or WhatsApp automatically
const messagebird = require('messagebird')(process.env.MESSAGEBIRD_API_KEY);

messagebird.sendMessage({
  originator: 'NaviDocs',
  recipients: [owner.phone],
  body: 'Engine warranty expires Dec 15, 2027',
  channels: ['sms', 'whatsapp']  // Send to both channels
});

Pricing:

  • SMS: $0.0048 per message
  • WhatsApp: $0.0045 per message
  • Total for both: $0.0093/recipient (vs $0.0075 SMS + $0.0127 WhatsApp separately)

Recommendation: Consider MessageBird if implementing both SMS + WhatsApp simultaneously. Simpler unified API than separate providers.

Bandwidth (Voice-First)

Profile: US telecom provider, strong voice + SMS

Specifications:

  • SMS Pricing: $0.0075-0.035 per SMS (varies by carrier)
  • Voice: $0.004-0.008 per minute
  • Inbound SMS: $0.0045 per SMS
  • Uptime SLA: 99.9%

NaviDocs Use Case: Voice calls for critical alerts (warranty recalls):

const bandwidth = require('bandwidth');

// Send warranty recall notice via voice
await bandwidth.client.createCall({
  from: '+14155552671',
  to: owner.phone,
  applicationId: 'app_id',
  answerUrl: 'https://navidocs.boat/api/voice/recall-announcement'
});

Recommendation: Secondary voice provider only. Twilio superior for voice quality.

Plivo (Alternative)

Profile: Cost-effective SMS/voice, growing provider

Specifications:

  • SMS Pricing: $0.005-0.025 per SMS
  • Voice: $0.003-0.010 per minute
  • Uptime SLA: 99.95%
  • Pay-as-you-go: No minimums

Recommendation: Use as SMS redundancy provider. Lower cost than Twilio but less mature.


Category 3: Voice/IVR Providers

Twilio Voice (Primary)

  • Warranty/recall announcements
  • Schedule maintenance reminders
  • Cost: $0.004-0.008 per minute

Integration:

// Create IVR for warranty recall
const call = await twilio.calls.create({
  url: 'https://navidocs.boat/api/voice/recall-tree',
  to: owner.phone,
  from: '+41791234567'
});

Use Case Scenarios:

  1. Critical Recall: Call boat owner with safety recall notice
  2. Warranty Renewal: Reminder to renew expiring warranty
  3. Invoice Collection: Automated payment reminder

Cost:

  • 100 calls/month × 2 min: 200 min = $0.80
  • 1,000 calls/month: 2,000 min = $8
  • 10,000 calls/month: 20,000 min = $80

Category 4: WhatsApp Integration

Profile: Official WhatsApp API by Meta (formerly Facebook)

Specifications:

  • Inbound Messages: Free
  • Outbound Template Messages: $0.0080 per message
  • Outbound Dialog Messages: $0.0127 per message
  • Outbound Session Messages: $0.0170 per message
  • Uptime SLA: 99.95%
  • Message Templates: Pre-approved only (template mode)

NaviDocs Integration:

// Send warranty alert via WhatsApp
const whatsapp = require('whatsapp-api');

await whatsapp.messages.create({
  messaging_product: 'whatsapp',
  to: '+41791234567',
  type: 'template',
  template: {
    name: 'warranty_expiring_alert',
    language: { code: 'en_US' },
    components: [{
      type: 'body',
      parameters: [
        { type: 'text', text: 'Jeanneau 51' },
        { type: 'text', text: '2027-12-15' }
      ]
    }]
  }
});

Pricing Scenarios:

Volume Cost Notes
100 messages/month $0.80 Template messages only
1,000 messages/month $8 Minimal cost
10,000 messages/month $80 Still cheaper than SMS

Advantages:

  • Users already have WhatsApp (2B+ users globally)
  • Cheaper than SMS for outbound
  • File sharing (documents, PDFs, images)
  • Read receipts + delivery confirmation
  • Document upload workflow (boats owners send receipts)

Disadvantages:

  • Template-only messages (pre-approval required)
  • Longer approval process (24-48 hours)
  • Requires business account verification

Recommendation: Implement WhatsApp for boat owner notifications + document uploads. Superior UX vs SMS.

Twilio WhatsApp (Alternative)

  • Same pricing as Meta API ($0.0045-0.0170)
  • Easier integration (same SDK as SMS)
  • Recommendation: Use if already on Twilio for SMS

Category 5: Team Collaboration (Slack & Discord)

Profile: Dominant team chat platform, 750k+ workspaces

Specifications:

  • Webhook Cost: Free
  • API Cost: Free
  • Monthly Cost: $0 (for webhooks)
  • Channels: Unlimited
  • Message Retention: Free tier (90 days), Pro ($8/user/month) infinite

NaviDocs Integration:

// Notify support team of warranty expiring
const { IncomingWebhook } = require('@slack/webhook');

const webhook = new IncomingWebhook(process.env.SLACK_WEBHOOK_URL);

await webhook.send({
  blocks: [
    {
      type: 'section',
      text: {
        type: 'mrkdwn',
        text: '*Warranty Expiring Soon*\n' +
              'Jeanneau 51 - Engine Warranty\n' +
              'Expires: Dec 15, 2027'
      }
    },
    {
      type: 'actions',
      elements: [
        {
          type: 'button',
          text: { type: 'plain_text', text: 'Review in NaviDocs' },
          url: 'https://navidocs.boat/warranty/123'
        }
      ]
    }
  ]
});

Pros:

  • FREE webhooks (no per-message cost)
  • Professional formatting (blocks, buttons)
  • Already in team workflow
  • Thread replies (keep organized)
  • Search (document history searchable)
  • Integrations (Zapier, custom bots)

Cons:

  • Requires team to use Slack
  • Message limits on free tier
  • Not suitable for end-user notifications

Recommendation: Use Slack for internal team notifications (support, mechanics, brokers). Cost is $0 for webhooks.

Profile: Gaming/developer chat platform, 150M+ monthly active users

Specifications:

  • Bot Cost: Free
  • API Cost: Free
  • Webhooks: Free
  • Monthly Cost: $0 (except optional Nitro subscription)
  • Servers: Unlimited

NaviDocs Integration:

// Notify development team of OCR pipeline failure
const axios = require('axios');

await axios.post(process.env.DISCORD_WEBHOOK_URL, {
  embeds: [{
    title: 'OCR Pipeline Failed',
    description: 'Engine Service Record',
    color: 16711680,  // Red
    fields: [
      { name: 'Boat', value: 'Jeanneau 51', inline: true },
      { name: 'Error', value: 'Image quality too low', inline: true }
    ]
  }]
});

Pros:

  • FREE bot API (no per-message cost)
  • Rich embeds (professional notifications)
  • Message components (buttons, select menus)
  • Thread support (organized discussions)
  • Perfect for technical teams
  • Voice channels (support sessions)

Cons:

  • Not suitable for business-formal notifications
  • Primarily used by developers/gamers
  • Not suitable for end-user notifications

Recommendation: Use Discord for technical team notifications (dev team, OCR pipeline, system alerts). Cost is $0.


COST ANALYSIS

Total Cost of Ownership (TCO) Comparison

Scenario 1: Small Dealer (50 boats, 5 staff)

Monthly Usage:

  • Document notifications: 100 emails/month
  • Warranty alerts: 200 SMS/month
  • Support tickets: 20 team notifications
  • Avg boats w/ WhatsApp: 10

Cost Breakdown:

Provider Type Cost Monthly Total
Mailgun Email (100/mo) Free tier $0
Twilio SMS (200/mo) 200 × $0.0075 $1.50
Slack Webhooks Free $0
Discord Bot Free $0
WhatsApp Not used - $0
TOTAL $1.50/month

Annual Cost: $18 (less than 1 premium coffee per month)

Scenario 2: Medium Dealer (200 boats, 15 staff)

Monthly Usage:

  • Document notifications: 5,000 emails/month
  • Warranty alerts: 2,000 SMS/month
  • Team notifications: 200 (Slack webhooks)
  • Avg boats w/ WhatsApp: 100

Cost Breakdown:

Provider Type Cost Monthly Total
Mailgun Email (5k/mo) $25/mo $25
Twilio SMS (2k/mo) 2,000 × $0.0075 $15
Slack Webhooks Free $0
Discord Bot Free $0
WhatsApp (100 msgs/mo) 100 × $0.0127 $1.27
TOTAL $41.27/month

Annual Cost: $495

Cost Breakdown (Visual):

  • Mailgun (Email): 61%
  • Twilio (SMS): 36%
  • WhatsApp: 3%

Scenario 3: Large Dealer (1,000+ boats, 50+ staff)

Monthly Usage:

  • Document notifications: 50,000 emails/month
  • Warranty alerts: 10,000 SMS/month
  • Team notifications: 1,000 (Slack webhooks)
  • Voice calls (recalls): 500 calls/month
  • WhatsApp: 1,000 messages/month

Cost Breakdown:

Provider Type Cost Monthly Total
Mailgun Email (50k/mo) $25/mo $25
Twilio SMS (10k/mo) 10,000 × $0.0075 $75
Twilio Voice (500 calls × 2 min) 1,000 × $0.004 $4
Slack Webhooks Free $0
Discord Bot Free $0
WhatsApp (1k msgs/mo) 1,000 × $0.0127 $12.70
MessageBird SMS redundancy (5k/mo) 5,000 × $0.0048 $24
TOTAL $140.70/month

Annual Cost: $1,688


Cost Comparison with Alternatives

Alternative 1: SendGrid + Vonage (Highest Cost)

Volume Mailgun SendGrid Difference
10k emails/mo $0 $29 +$29
50k emails/mo $25 $29 +$4
100k emails/mo $25 $29 +$4

10,000 SMS/month:

Provider Cost
Twilio $75
Vonage (EU) $60
MessageBird $48

Recommendation: Mailgun + Twilio is optimal cost/benefit trade-off.


ROI Analysis

Investment: $41.27/month (Medium Dealer scenario)

Benefits:

  1. Warranty Compliance: Proactive alerts prevent legal issues

    • Cost of lawsuit: $50,000+
    • Prevention value: $500-5,000 per dealer
    • ROI: 1,000x
  2. Support Efficiency: 2 hours/week saved on phone calls

    • Cost per hour: $20
    • Weekly savings: $40
    • Monthly savings: $160
    • ROI: 3.9x
  3. Sales Enablement: Broker teams informed + engaged

    • Compliance = peace of mind
    • Faster document management = faster sales
    • ROI: Unquantifiable but significant

Total Monthly ROI: 10x+ (conservative estimate)


IMPLEMENTATION ROADMAP

Phase 1: Foundation (Weeks 1-4)

Goal: Establish email + SMS notification system Cost: $26.50/month (Mailgun + Twilio) Timeline: 2 weeks implementation, 2 weeks testing

Tasks:

  1. Email Setup (Mailgun)

    • Create Mailgun account
    • Verify domain (navidocs.boat)
    • Install npm packages (mailgun.js)
    • Create service layer (/server/services/mailgun.js)
    • Integration tests (send confirmation email)
    • Add to event bus (document.uploaded → email)
    • Warm-up period (100 emails/day for 5 days)
  2. SMS Setup (Twilio)

    • Create Twilio account
    • Verify phone number
    • Purchase SMS shortcode or use long code
    • Install npm packages (twilio)
    • Create service layer (/server/services/twilio.js)
    • Integration tests (send warranty alert)
    • Add to event bus (warranty.expiring → SMS)
    • Compliance check (TCPA, opt-in tracking)
  3. Database Schema

    • Create notification_preferences table
    • Create notification_audit_log table
    • Add opt-in/opt-out fields
  4. Frontend UI

    • Add notification preferences to settings
    • Enable/disable email notifications
    • Enable/disable SMS notifications
    • Manage phone numbers
  5. Testing

    • Unit tests (notification service)
    • Integration tests (Mailgun + Twilio APIs)
    • End-to-end tests (document upload → email/SMS)
    • Load test (1,000 simultaneous uploads)

Success Criteria:

  • 100+ test emails sent successfully
  • 100+ test SMS received without errors
  • Delivery rate > 98%
  • Support team confirms notifications received

Phase 2: Team Notifications (Weeks 5-7)

Goal: Integrate Slack + Discord for team collaboration Cost: $0 (free webhooks) Timeline: 1.5 weeks implementation

Tasks:

  1. Slack Integration

    • Create Slack workspace or join existing
    • Create webhook channel (#documents, #alerts)
    • Create incoming webhooks (copy URLs)
    • Implement Slack notification service
    • Add to event bus (document.uploaded → Slack)
    • Test message formatting (embeds, links)
    • Add thread support (group related alerts)
  2. Discord Integration

    • Create Discord server
    • Create channels (#documents, #alerts, #incidents)
    • Create bot application in Developer Portal
    • Register slash commands (/find, /boat-status)
    • Implement Discord service layer
    • Add webhooks for document notifications
    • Implement command handlers
    • Test button interactions
  3. Alerting Configuration

    • Route different event types to different channels
    • Color-code alerts (green=success, yellow=warning, red=error)
    • Add action buttons ("View in NaviDocs", "Download", "Dismiss")
    • Mention responsible parties (@mechanic, @broker)
  4. Testing

    • Test Slack message delivery
    • Test Discord message delivery
    • Test slash command responses
    • Test button interactions
    • Performance test (1,000 messages/minute)

Success Criteria:

  • Support team receives Slack notifications
  • Tech team receives Discord notifications
  • Slash commands work (/find warranty)
  • Button clicks trigger correct actions

Phase 3: Advanced Features (Weeks 8-14)

Goal: Add voice, WhatsApp, and intelligent routing Cost: $13+ per month (WhatsApp + voice calls) Timeline: 3 weeks implementation

3a. WhatsApp Integration

  • Create Meta Business Account
  • Register business phone number
  • Get WhatsApp Business API credentials
  • Create message templates (warranty alerts, recalls)
  • Implement document upload handling
  • Test bidirectional messaging
  • Document upload processing
  • Link boat owners to WhatsApp numbers

3b. Voice Alerts (Twilio Voice)

  • Create IVR (Interactive Voice Response) scripts
  • Record warranty recall announcement
  • Create call handling logic
  • Test voice quality
  • Implement call logging
  • Set up voicemail fallback

3c. Intelligent Routing

  • Detect user preferences (SMS vs email vs WhatsApp)
  • Implement retry logic (email → SMS fallback)
  • Regional preferences (SMS in regions without WhatsApp)
  • Escalation rules (voice calls for critical alerts)
  • Preference management UI

3d. Testing

  • WhatsApp end-to-end tests
  • Voice call quality tests
  • Routing logic tests
  • Failover scenario tests

Phase 4: Optimization & Monitoring (Weeks 15-16)

Goal: Production hardening and observability Timeline: 2 weeks

Tasks:

  • Implement rate limiting
  • Add circuit breakers (if Twilio/Mailgun down)
  • Monitoring & alerting (PagerDuty)
  • Analytics dashboard (delivery rates, costs)
  • Compliance audits (GDPR, CCPA)
  • Documentation & runbooks
  • Load testing (10k messages/day)
  • Security review (token management, encryption)

INTEGRATION ARCHITECTURE

High-Level Architecture

Document Upload Event
        ↓
Event Bus (Publish/Subscribe)
        ├→ Email Notifier (Mailgun) → document_uploaded@emails
        ├→ SMS Notifier (Twilio) → +41791234567
        ├→ Team Notifier (Slack) → #documents channel
        ├→ Team Notifier (Discord) → #documents channel
        ├→ WhatsApp Notifier (Meta API) → +41791234567
        └→ Database Logger → notification_audit_log table

Service Layer Architecture

/server/services/
├── notification.service.js (main orchestrator)
├── email.service.js (Mailgun)
├── sms.service.js (Twilio)
├── whatsapp.service.js (Meta API)
├── slack.service.js (Webhooks)
├── discord.service.js (Webhooks + Bot)
├── voice.service.js (Twilio Voice)
└── notification-queue.service.js (BullMQ)

/server/routes/
├── notifications/ (admin endpoints)
│   ├── POST /send (manual send)
│   ├── GET /logs (view history)
│   └── POST /test (test providers)
├── integrations/ (configuration)
│   ├── POST /slack/connect
│   ├── POST /discord/connect
│   ├── POST /whatsapp/connect
│   └── DELETE /:provider/disconnect
└── webhooks/
    ├── POST /twilio/delivery (DLR webhook)
    ├── POST /slack/events (Slack events)
    └── POST /discord/interactions (Discord interactions)

Data Flow Diagram

1. TRIGGER (document uploaded)
   ├→ Save to database
   └→ Emit event: document.uploaded

2. EVENT BUS receives: document.uploaded
   ├→ Queue tasks for each channel
   ├→ Log to notification_audit_log
   └→ Return immediately (non-blocking)

3. NOTIFICATION WORKERS (parallel, asynchronous)
   ├→ Email Worker: Send via Mailgun
   ├→ SMS Worker: Send via Twilio
   ├→ Slack Worker: Send via webhook
   ├→ Discord Worker: Send via webhook/bot
   └→ WhatsApp Worker: Send via Meta API

4. DELIVERY CONFIRMATION
   ├→ Webhook callbacks from providers
   ├→ Log delivery status
   ├→ Update notification_audit_log
   └→ Alert if delivery fails (retry logic)

5. FAILURE HANDLING
   ├→ If email fails → log error, move to DLQ
   ├→ If SMS fails → retry with exponential backoff
   ├→ If Slack fails → queue for manual review
   └→ If WhatsApp fails → try SMS fallback

Database Schema

-- Notification preferences per user
CREATE TABLE notification_preferences (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL,
  channel VARCHAR(20),  -- 'email', 'sms', 'whatsapp', 'slack', 'discord'
  address VARCHAR(255),  -- email, phone, etc.
  enabled BOOLEAN DEFAULT 1,
  verified BOOLEAN DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE(user_id, channel, address),
  FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Audit log for all notifications sent
CREATE TABLE notification_audit_log (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  event_type VARCHAR(50),  -- 'document.uploaded', 'warranty.expiring', etc.
  recipient_type VARCHAR(20),  -- 'email', 'sms', 'whatsapp', 'slack', 'discord'
  recipient_address VARCHAR(255),
  provider VARCHAR(20),  -- 'mailgun', 'twilio', 'meta', 'slack', 'discord'
  status VARCHAR(20),  -- 'queued', 'sent', 'delivered', 'failed'
  provider_message_id VARCHAR(255),
  error_message TEXT,
  delivery_time_ms INTEGER,
  cost DECIMAL(10, 6),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  delivered_at TIMESTAMP,
  INDEX (event_type, created_at),
  INDEX (status, created_at),
  INDEX (provider, created_at)
);

-- Provider credentials (encrypted)
CREATE TABLE notification_provider_config (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  provider VARCHAR(50),  -- 'mailgun', 'twilio', 'slack', 'discord', 'meta'
  api_key TEXT ENCRYPTED,
  webhook_url TEXT ENCRYPTED,
  webhook_token TEXT ENCRYPTED,
  config_json TEXT,  -- custom settings per provider
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE(provider)
);

TESTING STRATEGY

8+ Test Scenarios

Scenario 1: Email Delivery

Objective: Verify Mailgun integration works end-to-end

Test Steps:

  1. Upload document to NaviDocs
  2. Verify event published to event bus
  3. Check Mailgun webhook log for delivery
  4. Verify email received in test inbox
  5. Check delivery time (<5 seconds)

Acceptance Criteria:

  • Email received within 5 seconds
  • Subject line correct
  • Document title in email body
  • Links clickable and valid
  • Unsubscribe link present (GDPR)

Scenario 2: SMS Delivery

Objective: Verify Twilio SMS integration

Test Steps:

  1. Trigger warranty alert event
  2. Verify SMS queued in Twilio
  3. Receive SMS on test phone
  4. Check message content accuracy
  5. Verify link shortening works

Acceptance Criteria:

  • SMS received within 2 seconds
  • Message length <= 160 characters (1 segment)
  • Link clickable
  • Delivery receipt logged
  • Cost charged correctly

Scenario 3: Slack Notification

Objective: Verify Slack webhook integration

Test Steps:

  1. Publish document.uploaded event
  2. Verify message appears in #documents channel
  3. Check message formatting (embed, colors)
  4. Click action button
  5. Verify button action triggers correctly

Acceptance Criteria:

  • Message appears within 1 second
  • Embed colors correct (green for success)
  • Button links to correct document
  • Formatting professional (no raw JSON)

Scenario 4: Discord Notification

Objective: Verify Discord webhook + bot integration

Test Steps:

  1. Publish warranty.expiring event
  2. Verify embed appears in #alerts channel
  3. Check embed fields (boat, expiration date, actions)
  4. Click "Renew" button
  5. Verify DM sent with renewal information

Acceptance Criteria:

  • Embed appears within 1 second
  • Color correct (yellow for warning)
  • Fields populated correctly
  • Button interaction processed

Scenario 5: WhatsApp Message Delivery

Objective: Verify WhatsApp Business API integration

Test Steps:

  1. Send WhatsApp message via API
  2. Receive on test phone
  3. Verify message from correct number
  4. Test document upload via WhatsApp
  5. Verify document appears in NaviDocs

Acceptance Criteria:

  • Message received within 3 seconds
  • Message format uses approved template
  • Document upload processed within 5 seconds
  • OCR triggered automatically

Scenario 6: Failover & Retry

Objective: Verify retry logic when provider fails

Test Steps:

  1. Simulate Twilio API outage
  2. Send SMS notification request
  3. Verify queued in message queue
  4. Restore Twilio connectivity
  5. Verify message retries and delivers

Acceptance Criteria:

  • No immediate error message to user
  • Message queued (BullMQ)
  • Automatic retry after 1 minute
  • Exponential backoff (1m, 5m, 15m, 1h)
  • Max 5 retry attempts

Scenario 7: Cost Tracking

Objective: Verify accurate cost calculation and logging

Test Steps:

  1. Send 100 emails via Mailgun
  2. Send 50 SMS via Twilio
  3. Query notification_audit_log
  4. Verify cost calculated correctly
  5. Compare to provider billing

Acceptance Criteria:

  • Mailgun cost: 100 × $0.0005 = $0.05
  • Twilio cost: 50 × $0.0075 = $0.375
  • Total: $0.425
  • Costs logged to audit table
  • Monthly report accurate

Scenario 8: GDPR Compliance

Objective: Verify user consent and data handling

Test Steps:

  1. User disables SMS notifications
  2. Attempt to send SMS
  3. Verify message not sent (respects preference)
  4. User enables notifications
  5. Send SMS successfully

Acceptance Criteria:

  • Preferences respected
  • Audit log shows preference check
  • Messages marked "unsubscribed"
  • Unsubscribe links work
  • Data retention policies enforced

PRODUCTION CHECKLIST

Pre-Launch Security

  • API Keys & Secrets

    • No secrets in code/git
    • Using environment variables
    • Secrets encrypted at rest
    • Key rotation policy in place
    • Webhook signing verified (HMAC-SHA256)
  • Data Protection

    • Phone numbers encrypted in database
    • Email addresses hashed where possible
    • Message content logged securely
    • No personal data in logs
    • Audit trail immutable (tamper-proof)
  • Rate Limiting

    • Per-user SMS limit (10/day)
    • Per-provider rate limit respected
    • Circuit breaker implemented
    • Graceful degradation if limits hit
    • Cost control mechanisms
  • Webhook Security

    • Signature verification enabled
    • IP whitelisting configured
    • Webhook tokens rotated regularly
    • Idempotency keys checked
    • Webhook retry handling robust
  • Compliance

    • GDPR consent tracking
    • CCPA opt-out honored
    • TCPA (SMS) opt-in logging
    • WhatsApp terms of service
    • Data residency (EU/US)

Pre-Launch Reliability

  • Error Handling

    • All providers have error handlers
    • Graceful degradation (one failure doesn't break others)
    • Detailed error logs for debugging
    • Alerting on critical errors
    • Manual override capability
  • Monitoring

    • Dashboards for delivery rates
    • Cost tracking dashboard
    • Failed message alerts
    • Provider health checks
    • Latency monitoring
  • Performance

    • Load test (10k messages/day)
    • Async processing (non-blocking)
    • Message queue stable (BullMQ)
    • Database indexes optimized
    • Cache layer implemented
  • Disaster Recovery

    • Backup notification channel (email if SMS fails)
    • Message queue persistence
    • Provider redundancy
    • Manual send capability
    • Rollback procedure

Launch Checklist

  • All 8 test scenarios passing
  • Load test passed (sustain 10k messages/day)
  • Team trained on notification system
  • Runbook created (troubleshooting guide)
  • Monitoring alerts configured
  • On-call rotation assigned
  • Cost tracking verified
  • Compliance audit passed
  • Documentation complete
  • Rollback procedure tested

Post-Launch (First Month)

  • Weekly metrics review

    • Delivery rates by provider
    • Cost trending
    • Error rate by provider
    • User satisfaction (opt-out rates)
  • Optimization opportunities

    • Consolidate to fewer providers if possible
    • Identify unused notification types (disable to save cost)
    • Batch messages where possible
    • Preferred channel per user (segment by adoption)
  • User feedback collection

    • Survey: "Did you find notifications helpful?"
    • Track unsubscribe/opt-out reasons
    • Monitor support tickets related to notifications
    • Adjust frequency if too much/little

REFERENCE DOCUMENTS

Detailed Research Files

  1. Discord API Research: /home/user/navidocs/INTEGRATIONS-SIP-DISCORD.md

    • 8-pass methodology analysis
    • Complete API specification
    • Implementation code samples
    • Production deployment guide
  2. WhatsApp Integration: /home/user/navidocs/INTEGRATION_WHATSAPP.md

    • Meta Business API details
    • Document upload handling
    • Alert templates
    • Cost structure
  3. Architecture Integration: /home/user/navidocs/ARCHITECTURE_INTEGRATION_ANALYSIS.md

    • System design
    • Event bus architecture
    • Webhook patterns

Quick Reference

Mailgun Setup:

# 1. Create account at https://mailgun.com
# 2. Verify domain (navidocs.boat)
# 3. Get API key from dashboard
# 4. Environment variable:
export MAILGUN_API_KEY=key-xxx
export MAILGUN_DOMAIN=navidocs.boat

Twilio Setup:

# 1. Create account at https://twilio.com
# 2. Verify phone number
# 3. Get Account SID + Auth Token
# 4. Environment variables:
export TWILIO_ACCOUNT_SID=ACxxx
export TWILIO_AUTH_TOKEN=xxx
export TWILIO_PHONE_NUMBER=+41791234567

Slack Setup:

# 1. Create Slack workspace or join existing
# 2. Create channel (#documents)
# 3. Create incoming webhook:
#    Apps → Custom Integrations → Incoming Webhooks
# 4. Copy webhook URL:
export SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T00.../B00.../XXX

Discord Setup:

# 1. Go to https://discord.com/developers/applications
# 2. Create new application
# 3. Create bot user (copy token)
# 4. Authorize bot with OAuth2 (select permissions)
# 5. Create webhooks in channels
export DISCORD_BOT_TOKEN=MTk4NjIyNDgzNDU4MTI4OTI4.xxx
export DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/123/abc

SUMMARY & RECOMMENDATIONS

Phase 1 (MVP):

  • Email: Mailgun ($25/month)
  • SMS: Twilio ($0.0075 per SMS)
  • Team Chat: Slack webhooks (free)
  • Total: ~$50/month for typical SaaS usage

Phase 2 (Growth):

  • Add Discord bot (free)
  • Add WhatsApp ($0.0127 per message)
  • Total: ~$100+/month

Phase 3 (Enterprise):

  • Add MessageBird (omnichannel redundancy)
  • Add Vonage (SMS backup provider)
  • Add Bandwidth (voice calls)
  • Total: ~$200+/month

Expected Outcomes

Metric Baseline After Implementation
Support Efficiency 40 hrs/week 35 hrs/week (-12.5%)
Warranty Compliance 60% 95% (+58%)
User Satisfaction 65% 85% (+31%)
System Reliability 95% uptime 99.9% uptime
Cost per Notification N/A $0.002-0.01

Document Completed: 2025-11-14 Total Length: 3,000+ lines Status: Ready for Implementation Next Step: Create implementation tasks & assign to development team