ObjectStackObjectStack

Email Template

Email Template protocol schemas

Email Template Metadata Protocol

Declarative template definition consumed by IEmailService.sendTemplate()

to render outbound mail. Persisted as rows of sys_email_template so

administrators can author/edit/translate templates in Studio without

shipping code, and tenants can override the built-in defaults

(allowOrgOverride: true in the metadata registry).

Aligned with Salesforce EmailTemplate and ServiceNow

sysevent_email_action conventions: a single named template is

resolved by (name, locale); subject/body strings carry simple

\{\{path.to.value\}\} placeholders rendered against a per-send

data payload.

Source: packages/spec/src/system/email-template.zod.ts

TypeScript Usage

import { EmailTemplateDefinition, EmailTemplateDefinitionCategory, EmailTemplateDefinitionVariable } from '@objectstack/spec/system';
import type { EmailTemplateDefinition, EmailTemplateDefinitionCategory, EmailTemplateDefinitionVariable } from '@objectstack/spec/system';

// Validate data
const result = EmailTemplateDefinition.parse(data);

EmailTemplateDefinition

Properties

PropertyTypeRequiredDescription
namestringTemplate identifier (dotted snake_case)
labelstringDisplay label
categoryEnum<'auth' | 'notification' | 'workflow' | 'marketing' | 'custom'>
localestringBCP-47 locale (e.g. en-US, zh-CN)
subjectstringSubject template
bodyHtmlstringHTML body template
bodyTextstringoptionalPlain-text body template (auto-derived from HTML when omitted)
variablesObject[]
fromOverrideObjectoptional
replyTostringoptional
activeboolean
isSystemboolean
descriptionstringoptional

EmailTemplateDefinitionCategory

Allowed Values

  • auth
  • notification
  • workflow
  • marketing
  • custom

EmailTemplateDefinitionVariable

Properties

PropertyTypeRequiredDescription
namestringVariable name as referenced in placeholders (snake_case or dotted path)
typeEnum<'string' | 'number' | 'boolean' | 'date' | 'url' | 'user' | 'record'>
requiredboolean
descriptionstringoptionalAuthor hint shown in Studio

On this page