# ZapaziMe Notification System Checklist
This document provides a comprehensive overview of all notifications in the ZapaziMe system, including where they are fired, when they are triggered, and how they are delivered.
## Table of Contents
1. [Account Notifications](#account-notifications)
2. [Booking Notifications](#booking-notifications)
3. [Payment Notifications](#payment-notifications)
4. [Business/Venue Notifications](#businessvenue-notifications)
5. [Admin Notifications](#admin-notifications)
6. [Support Notifications](#support-notifications)
7. [Security Notifications](#security-notifications)
8. [GDPR Notifications](#gdpr-notifications)
9. [Marketing Notifications](#marketing-notifications)
---
## Account Notifications
### 1. Account Delete Notification
- **Class:** `App\Notifications\AccountDeleteNotification`
- **Template:** `emails.account-delete.blade.php`
- **Trigger:** When a user requests account deletion
- **Location:** User account deletion request handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User requesting deletion
- **Frequency:** Once per request
- **Priority:** High
### 2. Account Update Notification
- **Class:** `App\Notifications\AccountUpdateNotification`
- **Template:** `emails.account-update.blade.php`
- **Trigger:** When user updates their account information
- **Location:** User profile update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User whose account was updated
- **Frequency:** Per update event
- **Priority:** Medium
### 3. Account Updated Notification
- **Class:** `App\Notifications\AccountUpdatedNotification`
- **Template:** `emails.account-updated.blade.php`
- **Trigger:** When account information is updated by admin
- **Location:** Admin user update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User whose account was updated
- **Frequency:** Per admin update
- **Priority:** Medium
### 4. Email Verification Notification
- **Class:** `App\Notifications\EmailVerificationNotification`
- **Template:** `emails.email-verification.blade.php`
- **Trigger:** When user registers or changes email
- **Location:** User registration/email change handler
- **Channels:** Mail
- **Recipients:** User requiring verification
- **Frequency:** Per registration/email change
- **Priority:** High
### 5. Password Reset Notification
- **Class:** `App\Notifications\PasswordResetNotification`
- **Template:** `emails.password-reset.blade.php`
- **Trigger:** When user requests password reset
- **Location:** Password reset request handler
- **Channels:** Mail
- **Recipients:** User requesting reset
- **Frequency:** Per request
- **Priority:** High
### 6. Welcome Notification
- **Class:** `App\Notifications\WelcomeNotification`
- **Template:** `emails.welcome.blade.php` / `emails.welcome-en.blade.php`
- **Trigger:** After successful user registration
- **Location:** User registration completion handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** New user
- **Frequency:** Once per user
- **Priority:** High
---
## Booking Notifications
### 7. Booking Cancellation Notification
- **Class:** `App\Notifications\BookingCancellationNotification`
- **Template:** `emails.booking-cancellation.blade.php`
- **Trigger:** When a booking is cancelled
- **Location:** Booking cancellation handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User who cancelled, venue owner
- **Frequency:** Per cancellation
- **Priority:** High
### 8. Booking Cancelled Notification
- **Class:** `App\Notifications\BookingCancelledNotification`
- **Template:** `emails.booking-cancelled.blade.php` / `emails.booking-cancelled-en.blade.php`
- **Trigger:** When booking is cancelled by system/admin
- **Location:** Admin/system booking cancellation handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per cancellation
- **Priority:** High
### 9. Booking Confirmed Notification
- **Class:** `App\Notifications\BookingConfirmedNotification`
- **Template:** `emails.booking-confirmed.blade.php` / `emails.booking-confirmed-en.blade.php`
- **Trigger:** When booking is confirmed
- **Location:** Booking confirmation handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per booking confirmation
- **Priority:** High
### 10. Booking Reminder Notification
- **Class:** `App\Notifications\BookingReminderNotification`
- **Template:** `emails.booking-reminder.blade.php` / `emails.booking-reminder-en.blade.php` / `emails.booking-reminder-bg.blade.php`
- **Trigger:** 24 hours before booking time
- **Location:** Scheduled job (cron)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Daily check for upcoming bookings
- **Priority:** High
### 11. Booking Update Notification
- **Class:** `App\Notifications\BookingUpdateNotification`
- **Template:** `emails.booking-update.blade.php`
- **Trigger:** When booking details are updated
- **Location:** Booking update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per booking update
- **Priority:** Medium
### 12. Booking Updated Notification
- **Class:** `App\Notifications\BookingUpdatedNotification`
- **Template:** `emails.booking-updated.blade.php` / `emails.booking-updated-en.blade.php`
- **Trigger:** When booking is updated by admin
- **Location:** Admin booking update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per admin update
- **Priority:** Medium
### 13. New Reservation Admin Notification
- **Class:** `App\Notifications\NewReservationAdminNotification`
- **Template:** `emails.new-reservation-admin.blade.php`
- **Trigger:** When a new booking is created
- **Location:** Booking creation handler
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** Per new booking
- **Priority:** High
### 14. New Reservation For Owner Notification
- **Class:** `App\Notifications\NewReservationForOwnerNotification`
- **Template:** `emails.new-reservation-owner.blade.php` / `emails.new-reservation-owner-en.blade.php`
- **Trigger:** When a new booking is created for a venue
- **Location:** Booking creation handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per new booking
- **Priority:** High
### 15. New Reservation Notice To Admin Notification
- **Class:** `App\Notifications\NewReservationNoticeToAdminNotification`
- **Template:** `emails.new-reservation-notice-to-admin.blade.php`
- **Trigger:** When a new booking needs admin attention
- **Location:** Booking creation handler
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** Per problematic booking
- **Priority:** High
### 16. No-Show Detected Admin Notification
- **Class:** `App\Notifications\NoShowDetectedAdminNotification`
- **Template:** `emails.no-show-admin.blade.php`
- **Trigger:** When a user doesn't show up for booking
- **Location:** No-show detection job (scheduled)
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** After booking time + 30 minutes
- **Priority:** Medium
### 17. No-Show Detected Business Notification
- **Class:** `App\Notifications\NoShowDetectedBusinessNotification`
- **Template:** `emails.no-show-business.blade.php` / `emails.no-show-business-en.blade.php`
- **Trigger:** When a user doesn't show up for booking
- **Location:** No-show detection job (scheduled)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** After booking time + 30 minutes
- **Priority:** Medium
### 18. Urgent Booking Notification
- **Class:** `App\Notifications\UrgentBookingNotification`
- **Template:** `emails.urgent-booking.blade.php`
- **Trigger:** When an urgent booking is received
- **Location:** Urgent booking handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner, admin
- **Frequency:** Per urgent booking
- **Priority:** High
---
## Payment Notifications
### 19. Payment Confirmation Notification
- **Class:** `App\Notifications\PaymentConfirmationNotification`
- **Template:** `emails.payment-confirmation.blade.php` / `emails.payment-success-en.blade.php`
- **Trigger:** When payment is successfully processed
- **Location:** Payment success handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per successful payment
- **Priority:** High
### 20. Payment Failed Notification
- **Class:** `App\Notifications\PaymentFailedNotification`
- **Template:** `emails.payment-failed.blade.php` / `emails.payment-failed-en.blade.php`
- **Trigger:** When payment fails
- **Location:** Payment failure handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per failed payment
- **Priority:** High
### 21. Payment Request Notification
- **Class:** `App\Notifications\PaymentRequestNotification`
- **Template:** `emails.payment-request.blade.php` / `emails.payment-request-en.blade.php`
- **Trigger:** When payment is requested
- **Location:** Payment request handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per payment request
- **Priority:** High
### 22. Payment Success Notification
- **Class:** `App\Notifications\PaymentSuccessNotification`
- **Template:** `emails.payment-success.blade.php`
- **Trigger:** Alternative payment success notification
- **Location:** Payment success handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per successful payment
- **Priority:** High
### 23. Refund Processed Business Notification
- **Class:** `App\Notifications\RefundProcessedBusinessNotification`
- **Template:** `emails.refund-processed-business.blade.php` / `emails.refund-processed-business-en.blade.php`
- **Trigger:** When refund is processed for business
- **Location:** Refund processing handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per refund
- **Priority:** High
### 24. Refund Processed User Notification
- **Class:** `App\Notifications\RefundProcessedUserNotification`
- **Template:** `emails.refund-processed-user.blade.php` / `emails.refund-processed-user-en.blade.php`
- **Trigger:** When refund is processed for user
- **Location:** Refund processing handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per refund
- **Priority:** High
### 25. Reservation Payment Notification
- **Class:** `App\Notifications\ReservationPaymentNotification`
- **Template:** `emails.reservation-payment-confirmation.blade.php`
- **Trigger:** When reservation payment is made
- **Location:** Payment handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User, venue owner
- **Frequency:** Per payment
- **Priority:** High
### 26. Reservation Payment Request Notification
- **Class:** `App\Notifications\ReservationPaymentRequestNotification`
- **Template:** `emails.reservation-payment-request.blade.php`
- **Trigger:** When reservation payment is requested
- **Location:** Payment request handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per payment request
- **Priority:** High
---
## Business/Venue Notifications
### 27. New Venue Announcement Notification
- **Class:** `App\Notifications\NewVenueAnnouncementNotification`
- **Template:** `emails.new-venue-announcement.blade.php`
- **Trigger:** When a new venue is listed
- **Location:** Venue listing handler
- **Channels:** Mail, Database
- **Recipients:** Subscribed users
- **Frequency:** Per new venue listing
- **Priority:** Medium
### 28. New Venue Listed Notification
- **Class:** `App\Notifications\NewVenueListedNotification`
- **Template:** `emails.new-venue-listed.blade.php` / `emails.new-venue-listed-en.blade.php`
- **Trigger:** When venue is successfully listed
- **Location:** Venue listing completion handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per venue listing
- **Priority:** High
### 29. Venue Listing Expires Notification
- **Class:** `App\Notifications\VenueListingExpiresNotification`
- **Template:** `emails.venue-listing-expires.blade.php`
- **Trigger:** When venue listing is about to expire
- **Location:** Scheduled job (daily check)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** 7 days before expiry, 3 days before expiry, on expiry
- **Priority:** High
### 30. New Review Received Business Notification
- **Class:** `App\Notifications\NewReviewReceivedBusinessNotification`
- **Template:** `emails.new-review-business.blade.php` / `emails.new-review-business-en.blade.php`
- **Trigger:** When a new review is submitted
- **Location:** Review submission handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per new review
- **Priority:** Medium
### 31. Review Request User Notification
- **Class:** `App\Notifications\ReviewRequestUserNotification`
- **Template:** `emails.review-request-user.blade.php` / `emails.review-request-user-en.blade.php`
- **Trigger:** After booking completion
- **Location:** Scheduled job (24 hours after booking)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Once per completed booking
- **Priority:** Medium
### 32. Business Monthly Digest Notification
- **Class:** `App\Notifications\BusinessMonthlyDigestNotification`
- **Template:** `emails.business-monthly-digest.blade.php` / `emails.business-monthly-digest-en.blade.php`
- **Trigger:** Monthly digest
- **Location:** Scheduled job (monthly)
- **Channels:** Mail, Database
- **Recipients:** All venue owners
- **Frequency:** Monthly (1st of each month)
- **Priority:** Low
### 33. Business Payment Overdue Notification
- **Class:** `App\Notifications\BusinessPaymentOverdueNotification`
- **Template:** `emails.business-payment-overdue.blade.php` / `emails.business-payment-overdue-en.blade.php`
- **Trigger:** When payment is overdue
- **Location:** Scheduled job (daily check)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Daily until paid
- **Priority:** High
### 34. Business Reactivated Notification
- **Class:** `App\Notifications\BusinessReactivatedNotification`
- **Template:** `emails.business-reactivated.blade.php` / `emails.business-reactivated-en.blade.php`
- **Trigger:** When suspended venue is reactivated
- **Location:** Venue reactivation handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per reactivation
- **Priority:** High
### 35. Business Suspended Notification
- **Class:** `App\Notifications\BusinessSuspendedNotification`
- **Template:** `emails.business-suspended.blade.php` / `emails.business-suspended-en.blade.php`
- **Trigger:** When venue is suspended
- **Location:** Venue suspension handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per suspension
- **Priority:** High
### 36. Low Availability Warning Notification
- **Class:** `App\Notifications\LowAvailabilityWarningNotification`
- **Template:** `emails.low-availability-warning.blade.php` / `emails.low-availability-warning-en.blade.php`
- **Trigger:** When venue availability drops below threshold
- **Location:** Availability check job
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** When availability < 5 slots
- **Priority:** Medium
### 37. Monthly Commission Statement Notification
- **Class:** `App\Notifications\MonthlyCommissionStatementNotification`
- **Template:** `emails.monthly-commission-statement.blade.php` / `emails.monthly-commission-statement-en.blade.php`
- **Trigger:** Monthly commission statement
- **Location:** Scheduled job (monthly)
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owners with bookings
- **Frequency:** Monthly (1st of each month)
- **Priority:** High
---
## Admin Notifications
### 38. Revenue Report Notification
- **Class:** `App\Notifications\RevenueReportNotification`
- **Template:** `emails.revenue-report.blade.php`
- **Trigger:** Weekly revenue report
- **Location:** Scheduled job (weekly)
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** Weekly
- **Priority:** Low
### 39. Seasonal Campaign Notification
- **Class:** `App\Notifications\SeasonalCampaignNotification`
- **Template:** `emails.seasonal-campaign.blade.php`
- **Trigger:** Seasonal campaign launch
- **Location:** Campaign launch handler
- **Channels:** Mail, Database
- **Recipients:** Admin users, venue owners
- **Frequency:** Per campaign
- **Priority:** Medium
### 40. System Alert Notification
- **Class:** `App\Notifications\SystemAlertNotification`
- **Template:** `emails.system-alert.blade.php`
- **Trigger:** Critical system events
- **Location:** System error handlers, monitoring
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** As needed
- **Priority:** Critical
### 41. Dispute Chargeback Admin Notification
- **Class:** `App\Notifications\DisputeChargebackAdminNotification`
- **Template:** `emails.dispute-chargeback-admin.blade.php`
- **Trigger:** When dispute or chargeback is opened
- **Location:** Payment dispute handler
- **Channels:** Mail, Database
- **Recipients:** Admin users
- **Frequency:** Per dispute/chargeback
- **Priority:** Critical
---
## Support Notifications
### 42. Support Ticket Update Business Notification
- **Class:** `App\Notifications\SupportTicketUpdateBusinessNotification`
- **Template:** `emails.support-ticket-business.blade.php` / `emails.support-ticket-business-en.blade.php`
- **Trigger:** When support ticket is updated
- **Location:** Support ticket update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** Venue owner
- **Frequency:** Per ticket update
- **Priority:** Medium
### 43. Support Ticket Update User Notification
- **Class:** `App\Notifications\SupportTicketUpdateUserNotification`
- **Template:** `emails.support-ticket-user.blade.php` / `emails.support-ticket-user-en.blade.php`
- **Trigger:** When support ticket is updated
- **Location:** Support ticket update handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per ticket update
- **Priority:** Medium
---
## Security Notifications
### 44. Security Alert (Suspicious Activity) Notification
- **Class:** `App\Notifications\SystemAlertNotification` (reused)
- **Template:** `emails.system-alert.blade.php` (reused)
- **Trigger:** Suspicious activity detected
- **Location:** Security monitoring system
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User (if account affected), Admin
- **Frequency:** Per security event
- **Priority:** Critical
---
## GDPR Notifications
### 45. GDPR Data Export Ready Notification
- **Class:** `App\Notifications\GdprDataExportReadyNotification`
- **Template:** `emails.gdpr-data-export.blade.php` / `emails.gdpr-data-export-en.blade.php`
- **Trigger:** When GDPR data export is ready
- **Location:** Data export completion handler
- **Channels:** Mail, Database, GatewayAPI (SMS)
- **Recipients:** User
- **Frequency:** Per export request
- **Priority:** High
---
## Marketing Notifications
### 46. Promotional Offer Notification
- **Class:** `App\Notifications\PromotionalOfferNotification`
- **Template:** `emails.promotional-offer.blade.php`
- **Trigger:** When promotional offer is sent
- **Location:** Marketing campaign handler
- **Channels:** Mail, Database
- **Recipients:** Subscribed users
- **Frequency:** Per campaign
- **Priority:** Low
---
## Notification Channels
### Mail
- Used for: All notifications
- Provider: SMTP/SendGrid
- Template Location: `resources/views/emails/`
### Database
- Used for: All notifications
- Table: `notifications`
- Storage: JSON in `data` column
- Retention: 30 days
### GatewayAPI (SMS)
- Used for: High-priority notifications
- Provider: GatewayAPI
- Locale Support: BG and EN
- Character Limit: 160 chars per SMS
---
## Scheduled Jobs (Cron)
### Daily Jobs
- Booking reminders (24 hours before)
- No-show detection
- Payment overdue check
- Low availability warning
### Weekly Jobs
- Revenue report (admins)
### Monthly Jobs
- Business monthly digest
- Monthly commission statement
- Seasonal campaign checks
---
## Notification Settings
Users can manage their notification preferences in:
- Route: `route('notifications.settings')`
- Available channels per notification type
- Email subscription management
- SMS opt-in/opt-out
---
## Summary Statistics
- **Total Notifications:** 46
- **Account Notifications:** 6
- **Booking Notifications:** 12
- **Payment Notifications:** 8
- **Business/Venue Notifications:** 11
- **Admin Notifications:** 4
- **Support Notifications:** 2
- **Security Notifications:** 1
- **GDPR Notifications:** 1
- **Marketing Notifications:** 1
- **Notification Classes:** 46
- **Email Templates:** 50+ (with EN/BG variants)
- **Mailables:** 1 (BookingConfirmationMail)
- **Delivery Channels:** 3 (Mail, Database, GatewayAPI)
---
## Implementation Status
### ✅ Complete (First Batch - 19 notifications)
All notification classes and email templates exist.
### ✅ Complete (Second Batch - 17 newly created)
All 17 notification classes have been created:
1. NewReviewReceivedBusinessNotification
2. NoShowDetectedAdminNotification
3. NoShowDetectedBusinessNotification
4. RefundProcessedBusinessNotification
5. RefundProcessedUserNotification
6. ReviewRequestUserNotification
7. SupportTicketUpdateBusinessNotification
8. SupportTicketUpdateUserNotification
9. BusinessMonthlyDigestNotification
10. BusinessPaymentOverdueNotification
11. BusinessReactivatedNotification
12. BusinessSuspendedNotification
13. DisputeChargebackAdminNotification
14. DisputeChargebackBusinessNotification
15. GdprDataExportReadyNotification
16. LowAvailabilityWarningNotification
17. MonthlyCommissionStatementNotification
### ⚠️ Pending
Email templates for the 17 newly created notifications need to be created.
---
## Notes
- All notifications implement `ShouldQueue` for async processing
- Notification settings helper determines available channels per user
- Locale-aware notifications (BG/EN)
- All email templates follow consistent design system
- SMS messages are concise and actionable
- Database notifications are retained for 30 days