Email notifications look unprofessional when they're just plain text, and recreating the same HTML formatting across dozens of notifications wastes time. This guide shows you how to build reusable email templates that give your notifications consistent branding and structure.
Why custom email templates matter
ServiceNow's default notification emails are functional but ugly — plain text with basic record information dumped in a list. Your users see these emails in their inbox next to polished marketing emails and SaaS notifications, and the contrast isn't flattering. Platform admins spend hours copying HTML between individual notification records, and any branding changes mean updating dozens of places. Worse, business stakeholders who care about user experience start questioning your team's attention to detail based on email appearance.
How email templates work in ServiceNow
ServiceNow has two related but different concepts: notification layouts and notification templates. Layouts are HTML wrappers that go around notification body content — think of them as the outer shell with headers, footers, and CSS styling. Notification templates are complete email formats you can select when creating individual notifications. Most teams start with layouts because they're reusable across many notifications. You build the layout once with your branding and placeholder areas, then individual notifications just specify their content and ServiceNow wraps it in your layout automatically.
Making templates production-ready
Basic templates work for internal IT notifications, but production implementations need responsive design for mobile, fallback text for blocked images, and robust variable handling for missing data. Smart teams create a small library of layouts — one for alerts, one for approvals, one for status updates — rather than trying to build a single template that handles everything. The real sophistication comes from using conditional logic in your templates to show different content based on record state and building proper plain-text alternatives for email clients that strip HTML.
Before you start
- •notification_admin role or admin role
- •SMTP configured and tested in outbound email settings
Sourdough: ServiceNow Monitoring and Analytics
A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.
Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.
Step by step
Navigate to Email Layouts
Go to System Notification > Email > Layouts. This is where you build the reusable HTML wrapper that goes around notification content. Don't confuse this with the Notification Templates module, which creates complete notification records.
Email Layouts is a different table than Notification Templates — layouts wrap content, templates are complete notifications.
Create the layout record
Click New and fill in the Name field with something descriptive like 'IT Service Alerts' or 'Approval Requests'. Set Type to HTML — the Plain Text option is for fallback content only. Leave Active checked so notifications can use this layout immediately.
Build the HTML structure
In the HTML field, write your email template HTML. Use ${message} where you want the notification body content to appear — ServiceNow replaces this with the actual notification text. Include ${mail_to} in a hidden div for tracking. Add your CSS inline or in style tags since many email clients strip external stylesheets.
Test your HTML in multiple email clients — Outlook handles CSS differently than Gmail.
Add dynamic content with variables
Insert record data using ${table.field} syntax, like ${incident.number} or ${sc_request.requested_by.name}. For the current record, ServiceNow automatically provides the main table context. For related records, use dot notation to traverse references. Wrap variables in conditional checks like ${if incident.priority == '1'} for dynamic content and save the layout.
Apply layout to notifications
Open any notification record and scroll to the Email Layout field. Select your new layout from the dropdown. The notification's Body field content will now be inserted where you placed ${message} in your layout HTML. Update and test the notification to see your template in action.
Test with actual data
Trigger the notification or use the 'Send Test Email' option to verify your template renders correctly with real record data. Check that variables populate properly and HTML displays as expected across different email clients. Fix any rendering issues before rolling out to other notifications.
Best practices
Build separate layouts for different notification types (alerts, approvals, informational) rather than one generic template — specific layouts are more effective than trying to handle every use case.
Always include ${mail_to} somewhere in your template HTML even if hidden — ServiceNow needs this for proper email tracking and threading.
Use inline CSS for critical styling since many email clients strip style tags — only use style tags for non-essential formatting.
Test your variables with empty or null values by checking records that don't have data in referenced fields — missing data breaks template rendering.
Don't reference fields from different table contexts without proper null checking — ${incident.caller_id.department} fails if caller_id is empty.
Test Your Knowledge
Quick 3-question quiz — see how your ServiceNow skills stack up.
A list view on a table with millions of records is slow. Best fix?
Select an answer to continue