Notifications App

Purpose: Centralized communication engine for SMS, email, WhatsApp messages, and call logging across all workflows.

Responsibilities

  • Send notifications via multiple channels: SMS, email, WhatsApp, push

  • Manage notification templates with dynamic placeholders

  • Log all phone calls (introductory, confirmation, post-install, emergency)

  • Track delivery status (queued → sent → delivered / failed)

  • Provide notification history per user

Dependencies

  • accounts — Recipient user, caller user

Key Models

  • Notification — A message sent to a user via a specific channel. Includes context (which lead/survey/installation triggered it) and delivery tracking.

  • NotificationTemplate — Reusable message templates with Django template syntax for dynamic content (customer name, survey date, etc.).

  • CallLog — Records every phone call made in the system: who called, purpose, outcome (connected, no answer, busy), duration, and notes.

  • DeliveryReceipt — Webhook-driven delivery confirmation from SMS/WhatsApp gateways.

Business Rules

  • Every status change that affects a customer should trigger a notification.

  • Call logs are mandatory for: introductory calls, survey day confirmation, installation day confirmation, post-installation confirmation.

  • Templates are channel-specific — an SMS template differs from an email template for the same event.

  • Failed notifications are retried up to 3 times with exponential backoff.

  • Notification preferences are not user-configurable in v1 — all notifications are sent per workflow rules.