Skip to main content

Entity Relationship Diagram

Open zoomable ER diagram

Complete ER Diagram​

Relationship Rules​

FromToCardinalityDelete BehaviorPurpose
VendorUser1:NCascadeTenant users
VendorContact1:NCascadeTenant contacts
VendorCampaign1:NCascadeTenant campaigns
VendorMessageLog1:NCascadeTenant-isolated message history
VendorTemplate1:NCascadeVendor-level templates
VendorWebhook1:NCascadeTenant event subscriptions
VendorApiLog1:NDefaultAPI audit events
VendorWallet1:0..1CascadeTenant billing account
VendorWabaAccountN:0..1Set NullOptional dedicated WABA assignment
WabaAccountPhoneNumber1:NCascadeMeta phone numbers
WabaAccountTemplate1:NSet NullOptional WABA-level template scope
WabaAccountMessageLog1:NDefaultDirect WABA trace for analytics
PhoneNumberMessageLog1:NRestrictRequired routing identity
ContactMessageLog1:NSet NullOptional contact link
CampaignMessageLog1:NSet NullOptional campaign grouping
WalletTransaction1:NCascadeBilling ledger

Key Integrity Rules​

  • Vendor is the tenant root.
  • Tenant-owned records use vendorId.
  • Shared WABAs are platform resources selected at send time.
  • Dedicated WABA assignment uses Vendor.dedicatedWabaId and is enforced by application logic.
  • MessageLog.phoneNumberId is required for routing and auditability.
  • MessageLog.recipientMobile preserves recipient identity even if contact data changes.
  • MessageLog.idempotencyKey is unique per vendor with @@unique([vendorId, idempotencyKey]).