MemberPulse
Client PortalMemberships

Notifications Configuration

Configure email and SMS notification templates and triggers

Set up automated notifications to members for events, renewals, and other activities.

Capabilities

ActionROLE_CLIENT_ADMINROLE_CLIENT_USER
View templates
Create templates
Edit templates
Configure triggers
Send test emails

Features

Notification Types

Email Notifications

Rich HTML emails with customizable templates

SMS Notifications

Short text messages for urgent communications

Acceptance Criteria

Frontend
  • Rich text editor for message body
  • Live preview (desktop/mobile)
  • Design customization panel
  • Trigger configuration interface
  • Send test email functionality
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Template Builder

Content

  • Subject line (email only)
  • Message body with rich text editor
  • Merge tags for personalization
  • Preview in desktop and mobile views

Design

  • Background color
  • Header logo
  • Header image
  • Font selection
  • Footer banner

Settings

  • Template name
  • Template type (email/SMS)
  • Active/inactive status
  • Trigger configuration

Acceptance Criteria

Frontend
  • Template list with search and filter
  • Drag-and-drop template builder
  • Template duplication
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • Template names must be unique
  • Email templates require subject line
  • SMS templates limited to 160 characters (or 306 for multi-part)
  • At least one default template per trigger type
  • Cannot delete template if it's the only one for a trigger
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Available Merge Tags

TagDescriptionExample
{FirstName}Member's first nameJohn
{LastName}Member's last nameSmith
{FullName}Full nameJohn Smith
{Email}Email addressjohn@example.com
{MembershipPlan}Current plan nameProfessional
{MembershipExpiryDate}Expiry date15 Jan 2026
{DOB}Date of birth1 Mar 1985
{City}CitySydney
{State}StateNSW
{Country}CountryAustralia

Acceptance Criteria

Frontend
  • Merge tag insertion buttons
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • Merge tags must be valid (invalid tags render empty)
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Notification Triggers

Configure when notifications are sent:

TriggerDescription
Membership RenewalX days before expiry
Membership ExpiredOn expiry date
Payment FailedOn payment failure
Payment SuccessOn successful payment
Event RegistrationOn event signup
Event ReminderX days before event
Course CompletionOn course completion
CPD ReminderWhen CPD is due
WelcomeOn account creation

Acceptance Criteria

Frontend
  • UI supports the workflows described in this feature.
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Implementation Contracts

Backend (API)

GET    /api/notifications/templates           # List templates
POST   /api/notifications/templates           # Create template
GET    /api/notifications/templates/{id}      # Get template
PUT    /api/notifications/templates/{id}      # Update template
DELETE /api/notifications/templates/{id}      # Delete template

POST   /api/notifications/templates/{id}/test # Send test
POST   /api/notifications/templates/{id}/duplicate # Clone

GET    /api/notifications/triggers            # List triggers
PUT    /api/notifications/triggers/{id}       # Update trigger

GET    /api/notifications/logs                # Sent notifications log

Data Model

interface NotificationTemplate {
  id: string;
  name: string;
  type: 'email' | 'sms';
  
  // Content
  subject?: string;  // Email only
  body: string;
  
  // Design (email only)
  backgroundColor?: string;
  headerLogoUrl?: string;
  headerImageUrl?: string;
  fontFamily?: string;
  footerBannerUrl?: string;
  
  // System
  active: boolean;
  createdAt: string;
  updatedAt: string;
  lastSentAt?: string;
  sendCount: number;
}

interface NotificationTrigger {
  id: string;
  type: string;
  templateId: string;
  enabled: boolean;
  config: {
    daysBefore?: number;
    daysAfter?: number;
  };
}

Error Handling

ErrorHTTP StatusMessage
Duplicate name409"A template with this name already exists"
Missing subject400"Email templates require a subject line"
SMS too long400"SMS message exceeds character limit"
Invalid merge tag400Invalid merge tag: {InvalidTag}

On this page