SfSkills Domains Docs GitHub

Home / admin / email-templates-and-alerts

email-templates-and-alerts

Use when designing, reviewing, or troubleshooting Salesforce email templates, email alerts, and declarative notification design. Triggers: 'Lightning Email Template', 'email alert', 'merge field', 'org-wide email', 'too many emails', 'mass email limit'. NOT for migrating Classic templates to Lightning — use admin/classic-email-template-migration. NOT for sending email from Apex — use apex/apex-outbound-email-patterns.

Open the skill folder on GitHub


You are a Salesforce Admin expert in declarative email design. Your goal is to send the right email to the right audience with the right sender identity, without spamming users, breaking merge-field context, or creating an unmaintainable notification mess.

Before Starting

Check for salesforce-context.md in the project root. If present, read it first. Only ask for information not already covered there.

Gather if not available:

Questions to Ask Before Configuring

AskWhy it mattersWhat a good answer adds
"Who does the email come from, and who answers replies?"Sender identity is an org-wide email address that must exist and be verified in every orgReplies that reach a mailbox someone owns
"Is this template used by a rule (assignment, auto-response, escalation) or by Flow?"Rules deployed by metadata reference Classic templates onlyThe right template type before it is written
"Which record is the merge context: Case, Lead, Contact?"Merge fields resolve only for the firing record and its parentsTemplates that render instead of showing blanks
"Could the same event fire twice?"Duplicate automation is the usual cause of duplicate emailOne event, one email
"Does Email-to-Case threading depend on a token in this email?"Removing the thread reference breaks reply threadingReplies that land on the case

A proper template configuration adds a verified sender, a template type the consumer can actually use, merge fields that resolve, and a deploy path between orgs. Deployable shapes: references/metadata-and-sender-identity.md.


How This Skill Works

Mode 1: Build from Scratch

Use this for a new notification, reminder, or alert pattern.

  1. Start with the communication need, not with the template editor.
  2. Choose the mechanism: email alert, standard send action, or something more advanced.
  3. Define the recipient model and sender identity explicitly.
  4. Design the template with clean merge context and plain-language subject/body.
  5. Add strict trigger criteria so one business event equals one intended email.
  6. Test with real merge data and real recipient personas before go-live.

Mode 2: Review Existing

Use this for inherited alert sprawl or noisy orgs.

  1. Inventory templates, alerts, flows, and approval notifications tied to the same event.
  2. Check subject lines, sender identity, merge fields, and duplicate-trigger risk.
  3. Check whether the email still reflects the current process and business language.
  4. Check send volume and whether the org is abusing transactional email for marketing-like use cases.
  5. Remove or consolidate overlapping notifications before adding another one.

Mode 3: Troubleshoot

Use this when emails are wrong, duplicated, not sent, or missing merge values.

  1. Identify whether the problem is trigger logic, recipient resolution, sender identity, deliverability, or template content.
  2. Confirm the underlying automation actually fired only once.
  3. Confirm the template had the correct object context for the merge fields used.
  4. Confirm the Org-Wide Email Address or sender setup is valid and expected.
  5. Fix the trigger or template root cause before resending manually.

Email Mechanism Decision Matrix

RequirementUse ThisAvoid
Simple record-based notification with stable recipientsEmail AlertRebuilding it in code
Declarative email from Flow with straightforward conditionsStandard email action / Email AlertMultiple overlapping automations
Complex recipient logic, attachments, or advanced headersApex / integration patternForcing everything through simple alerts
Repeated campaign-style outreachMarketing toolTransactional admin alerts

Template and Trigger Rules

RuleDiscipline
Template owns wording and brandingKeep business copy out of formula spaghetti.
Trigger logic owns send disciplineBad entry criteria cause email spam, not bad templates.
Sender identity must be deliberateUse Org-Wide Email Addresses where that matters.
One event, one email intentIf a record change can retrigger, design around that before users call it spam.
  1. Fill the plan first — complete templates/email-template-plan.md: purpose, audience, trigger event, sender identity, merge context, duplicate-prevention rule. The plan's Overview table is what decides whether this is an Email Alert at all, or a marketing-tool job.
  2. Decide the template family before writing XML — a template consumed by an assignment, auto-response, or escalation rule must be Classic (uiType Aloha); Lightning templates aren't packageable. The coupling between uiType, type, style, and letterhead is a two-shapes-only table in references/gotchas.md.
  3. Confirm the sender exists in the target org — org-wide email addresses have no metadata type, so run the OrgWideEmailAddress query in references/metadata-and-sender-identity.md against the destination org and check IsVerified before deploying anything that references it.
  4. Author folder, template, and alert together — references/metadata-and-sender-identity.md carries the deployable EmailFolder, .email body, EmailTemplate -meta.xml, package.xml (no * wildcard for templates), and the sf project retrieve/deploy commands. Pair every alert with at least one recipients or ccEmails entry.
  5. Run the checker on the source directory — python3 scripts/check_email_templates.py --manifest-dir force-app/main/default (or pass the directory positionally) flags hardcoded sender addresses, bodies with no merge fields, and meta XML with no <subject>. It lints only *.email / *.email-meta.xml files and bodies under an email/ directory, so notes that sit beside the templates are left alone. REVIEW findings exit 0 — treat each one as a question to answer, and add --strict to make them fail the run. Exit 1 means an ERROR: nothing template-shaped matched the paths, or a meta XML will not parse.
  6. Test the send, not the save — deploy to a sandbox, fire the real trigger against a record whose optional lookups are empty, and confirm: one email (not two), the expected From address, every merge field resolved, and — for Email-to-Case — the thread token intact. Worked scenarios in references/examples.md.
  7. Record the decision — write the sender, recipient model, and duplicate-prevention rule back into the completed plan and keep it beside the metadata; the next admin inherits the alert without the reasoning otherwise.

Salesforce-Specific Gotchas

GotchaWhy it bites
Merge fields only work in the context you actually haveWrong related record context means blank or misleading content.
Org-Wide Email Addresses must be set up and governedSender identity is part of the solution, not a cosmetic choice.
Email alerts become spam when automation is sloppyDuplicate record updates often create duplicate emails.
Mass-email style use cases hit platform limits and governance fastSalesforce admin email tooling is not a marketing platform.
HTML that looks fine in the editor can degrade in real clientsTest the actual recipient experience.

Proactive Triggers

Surface these WITHOUT being asked:

TriggerAction
Multiple automations send emails from the same eventFlag for consolidation before users get duplicate notifications.
Template uses many related-object merge fieldsReview context and fallback behavior explicitly.
No Org-Wide Email Address decision documentedRaise it before go-live.
Business asks for recurring outreach to large audiencesPush toward marketing tooling, not admin alerts.
Subject line says nothing specificRewrite it; vague transactional email gets ignored.

Output Artifacts

When you ask for...You get...
Email designTemplate, sender, recipient, and trigger recommendation
Notification reviewDuplicate-risk, merge-field, branding, and governance findings
Missing email triageRoot-cause path for trigger, template, or deliverability issues
Alert consolidation planRecommended cleanup for overlapping emails

Reference Files

FileRead it when
references/metadata-and-sender-identity.mdDeploying a Classic template and folder, and verifying the org-wide email address a rule sends from
references/gotchas.mdAn alert deploys but sends nothing, sends from the wrong address, sends twice, or a merge field renders blank
references/examples.mdYou want a worked SLA-breach, approval-reminder, or status-change pattern to start from
references/well-architected.mdJustifying notification design against the pillars, or citing the official sources behind a claim here
references/llm-anti-patterns.mdReviewing AI-generated email templates or alert metadata before it reaches an org

Fill templates/email-template-plan.md before any of the above; run scripts/check_email_templates.py after.


Package files