Email & Notifications

Emails are the closing punctuation on every flow: confirmations, receipts, reminders, warnings. They have to be reliable (90 %+ inboxing), fast (under 30 seconds of action), and branded (look like ABc, not a generic SaaS template).

What we send

TriggerToTemplateChannel
Sign-upUserwelcome_owner / welcome_publicEmail
OTP requestUserotp_phone / otp_emailSMS / Email
Password resetUserpassword_resetEmail
KYC submittedOwnerkyc_submittedEmail
KYC approved / rejectedOwnerkyc_decisionEmail
Property liveOwnerproperty_publishedEmail
Booking confirmedGuest + Ownerbooking_confirmed_guest, booking_confirmed_ownerEmail + SMS
Payment receivedGuestpayment_receipt (PDF attached)Email
Balance due tomorrowGuestbalance_due_tomorrowEmail + SMS
Pre-stay reminder T−1dGuestpre_stay_reminderEmail + SMS
Booking cancelledGuest + Ownerbooking_cancelledEmail
Refund processedGuestrefund_processedEmail
Post-stay review requestGuestreview_requestEmail
Team inviteInviteeteam_inviteEmail
Login from new deviceUsersecurity_new_deviceEmail
OTA new bookingOwnerota_booking_inEmail
OTA sync failedOwnerota_sync_failureEmail
Payout settledOwnerpayout_summaryEmail

Confirmation email — preview

inbox · priya@example.com
A
ABc
Booking confirmation
You're booked, Priya. 🎉
Confirmation #ABC-24817 · Park View Hotel, Manali
Check-inSat 27 Dec 2026 · 14:00
Check-outTue 30 Dec 2026 · 11:00
RoomDeluxe King × 1
Guests2 adults · 1 child
Total paid₹22,230
View booking Add to calendar
Cancellation Free cancellation till 26 Dec, 14:00. After that, 50 % refund within 24 h of check-in.

Park View Hotel · Old Manali, HP · +91 98xxxxxx21 · View directions
You received this because you booked on abc.com. Need help? Contact support

Template gallery — more previews

The same brand shell, different jobs. Each template has a hand-written plain-text fallback and is rendered in EN + HI based on the user's profile language.

otp_email · "Your sign-in code"
A
ABc
Sign-in code
Your sign-in code
Use this code to finish signing in. It expires in 10 minutes.
428 619
Didn't try to sign in? Ignore this email and consider changing your password.
balance_due_tomorrow · reminder
A
ABc
Balance reminder
Your balance is due tomorrow
Hi Ramesh — your check-in at Park View Hotel is in 1 day. The remaining balance becomes due at check-in.
Total₹25,200
Paid (cash)₹10,000

Balance due₹15,200
Pay balance now
You can also pay at the desk in cash, UPI or card.
booking_cancelled · refund issued
A
ABc
Cancellation
Booking cancelled · refund on the way
Hi Priya — we've cancelled ABC-24817 for Park View Hotel, 27–30 Dec.
Cancellation policyFlexible
Refund amount₹22,230 (100 %)
MethodRazorpay → original card
Reach your bank in3–7 working days
Sorry to see you cancel. Save your dates? Browse other options.
review_request · 1 day after checkout
A
ABc
How was it?
How was Park View?
Hi Daniel — hope you enjoyed your stay! A quick rating helps Rohan's team and future guests.
Tap a star
★ ★ ★ ★ ★
Write a full review
ota_booking_in · to owner
A
ABc
Booking.com · new reservation
+ ₹19,800 · 3-night Booking.com reservation
Daniel Chen · Family Suite · 02–05 Jan · 2 adults
Gross₹19,800
BDC commission (15 %)−₹2,970

Net to property₹16,830
View booking ABC-24812
pre_stay_reminder · T−1 day
A
ABc
Check-in tomorrow
Bag is packed? See you tomorrow!
Hi Priya — your stay at Park View Hotel starts tomorrow at 14:00.
AddressOld Manali, HP
Front desk+91 98xxxxxx21
Booking refABC-24817

Template engine

We use MJML as the authoring format and ship HTML + plain-text variants on every send. Each template has:

  • Subject line (with variables, e.g. Your stay at {{property.name}} is confirmed)
  • Pre-header (visible in the inbox preview)
  • HTML body (responsive, branded)
  • Plain text fallback
  • Locale (English + Hindi initially)
  • Test-render endpoint that fills with realistic sample data

Delivery pipeline

Trigger event
notify-svc resolves template + recipient
Compose & enqueue (Redis)
Worker sends via Postmark
Postmark relays to inbox
Webhook back: delivered / bounced / opened

Provider — Postmark

WhyDetail
Transactional focusBuilt for receipts, OTPs & alerts — not marketing. Bounce/complaint thresholds suited to our use.
Separate streamsTransactional + broadcast streams kept apart so a marketing campaign can't drop our OTP deliverability.
Strong deliverability toolsSPF/DKIM/DMARC setup wizard, inbox-placement reports, bounce categorisation.
Webhooks backdelivery, bounce, complaint, open, click — feeds into our audit log.
FallbackIf Postmark down > 5 min, queue auto-fails over to SES with a different from-domain.

SMS & WhatsApp

Email isn't enough in India — OTPs and last-minute alerts go by SMS, post-confirmation comms (richer media) go by WhatsApp.

SMS — MSG91 / Gupshup

DLT-registered headers, transactional templates for OTP + booking confirmation. Per-region pricing tracked.

V1

WhatsApp Business API

Pre-approved templates for confirmation, balance reminder, pre-stay info. Guest must have opted in.

V1.1

Push (mobile app)

FCM / APNs when the mobile app ships.

V2

Failure modes & retries

OutcomeWhat we do
Soft bounceRetry after 30 min, 2 hr, 6 hr (3 attempts), then mark soft_bounced.
Hard bounceMark recipient email_blocked; alert user via SMS / in-app banner to update email.
Complaint (spam)Auto-unsubscribe; flag for manual review.
Postmark downQueue holds for 5 min then fails over to SES with alt from-domain.
SMS gateway 5xx3 retries with exponential backoff; alert on persistent failure for OTP traffic.

Brand & tone

  • Subject lines under 50 chars where possible. Lead with what changed, not the brand.
  • Friendly but not flippant — "You're booked" rather than "🎉🎉🎉 BOOKING!!!!".
  • Always include a one-line "what to do next" near the top.
  • Hindi versions when the user's profile language is hi-IN; never auto-translate inline.
  • Plain-text fallback is hand-written, not stripped HTML.

Compliance

  • SPF, DKIM and DMARC configured on day one for the sending domain.
  • Unsubscribe footer on every marketing email (transactional emails are exempt).
  • DLT registration for all SMS sender IDs (Indian requirement).
  • WhatsApp opt-in stored as a verifiable consent record.
  • No personal data in email subject lines (privacy on shared phones).