Skip to content

trial-ending-soon

Source of truth: packages/notifications/src/translations.ts

DomainChannelsRecipients
SourceContext
apps/worker/src/billing.ts:117processTrialScan
interface TrialEndingSoonData {
daysLeft: number;
trialEndsAt: string;
billingUrl: string;
}

The caller invokes triggerWorkflow('trial-ending-soon', recipientIds, data) where data is the TrialEndingSoonData shape above. The server pre-translates the payload via getTranslatedPayload('trial-ending-soon', recipientLocale, data) from @repo/notifications before sending, producing { inAppBody, emailSubject, emailBody } for the dashboard templates to render.