Skip to main content
Version: Latest

20. Configuration Reference

A certification-grade reorganization of §4 Configuration, split exactly into the categories required for certification: Platform Configuration, Tenant Configuration, Secrets, Environment Variables, Feature Flags, Default Values.

20.1 Platform Configuration

Bound from appsettings.json's WhatsAppCloudApi section into WhatsAppCloudApiOptions:

KeyTypeDefault
WhatsAppCloudApi:VerifyTokenstring(empty)
WhatsAppCloudApi:AppSecretstring(empty)
WhatsAppCloudApi:SignatureValidationEnabledbooltrue
WhatsAppCloudApi:LogRawPayloadboolfalse
WhatsAppCloudApi:AccessTokenstring(empty)
WhatsAppCloudApi:PhoneNumberIdstring(empty)
WhatsAppCloudApi:BusinessAccountIdstring(empty)
WhatsAppCloudApi:GraphApiVersionstringv25.0
WhatsAppCloudApi:BaseUrlstringhttps://graph.facebook.com

20.2 Tenant Configuration

WhatsAppOperationalSettings — resolved per-tenant via IAppSettingService.GetAppSetting<T>(), never hardcoded:

PropertyDefault
WhatsAppTenantActivationTemplateNameAr / ...Enwelcome_activation_ar / welcome_activation_en
WhatsAppTenantActivationDefaultLanguageCodear
WhatsAppTenantOtpTemplateNameAr / ...Enotp_verification_ar / otp_verification_en
WhatsAppTenantOtpLanguageDefaultar
PhoneNumberId / BusinessAccountId / AccessToken / AppSecret / VerifyToken(empty) — the tenant's own Meta credentials, used only by the Communication module
DefaultLanguagear
DefaultTemplatePrefixsend_document
TemplateLanguageStrategyByRecipientLanguage

A related, platform-level (not tenant-scoped) settings class, SaaSNotificationSettings, holds the same template-name defaults consumed by the OTP/Activation message services specifically — see §4.3 for the distinction between the two classes.

20.3 Secrets

Declared in Shumoul.Application/Secrets/SecretsManifest.cs, checked by SecretsHealthCheck at startup:

Environment VariableRequiredProduction-RequiredRotation Supported
WhatsAppCloudApi__VerifyTokenNoYesYes
WhatsAppCloudApi__AppSecretNoYesNo
WhatsAppCloudApi__AccessTokenNoYesYes
WhatsAppCloudApi__PhoneNumberIdNoYesNo
WhatsAppCloudApi__BusinessAccountIdNoYesNo

No secret value is ever reproduced in this documentation set.

20.4 Environment Variables

The double-underscore ASP.NET Core convention, matching §20.3 exactly:

WhatsAppCloudApi__VerifyToken
WhatsAppCloudApi__AppSecret
WhatsAppCloudApi__AccessToken
WhatsAppCloudApi__PhoneNumberId
WhatsAppCloudApi__BusinessAccountId

There is no environment-variable override for SignatureValidationEnabled, LogRawPayload, GraphApiVersion, or BaseUrl in the SecretsManifest — those four are ordinary appsettings.json values, not treated as secrets (they contain no credential material).

20.5 Feature Flags

Boolean switches controlling whether WhatsApp functionality activates at all, all on WhatsAppOperationalSettings unless noted:

FlagDefaultEffect when false
EnableWhatsApptrueMaster switch — disables all tenant WhatsApp functionality
EnableWhatsAppOtptrueOTP delivery via WhatsApp is skipped (falls back to whatever other channel is configured)
EnableWhatsAppNotificationstrueNotification Framework's WhatsApp channel dispatch is skipped
EnableWhatsAppTemplatestrueTemplate-based sends are blocked at the guard-chain level
EnableWhatsAppActivationForFreeSubscriptionsfalseFree-tier tenants do not receive an activation WhatsApp message
EnableSendingfalseThe tenant's own WhatsApp Business number (Communication module) cannot send — master switch independent of the platform number
WebhookEnabledfalseSignals whether this tenant's own number has webhook delivery configured (informational; does not itself disable the platform's shared webhook endpoint)
WhatsAppTenantOtpIncludeUrlButtontrueOTP template is sent without its optional URL button component
WhatsAppCloudApi:SignatureValidationEnabled (platform)trueMust never be set to false in production — disables webhook authenticity verification entirely

20.6 Default Values — Quick Reference

SettingDefault
Graph API versionv25.0
Graph API base URLhttps://graph.facebook.com
Signature validationenabled
Raw payload loggingdisabled
Default template language (tenant)ar
Default template language (OTP)ar
Default template language (Activation)ar
Default document template prefixsend_document
Template language resolution strategyByRecipientLanguage
OTP URL buttonincluded
Free-tier activation messagesdisabled
Tenant's own WhatsApp sendingdisabled until explicitly enabled