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