ServiceNow Notifications: The Complete Setup and Troubleshooting Guide

How ServiceNow notifications actually work under the hood — notification triggers, templates, email digests, device routing, and the debug techniques that find delivery issues fast.

Notification issues are among the most common support tickets in any ServiceNow instance. Users complain they are getting too many emails, or not getting the ones they need, or getting them at the wrong time. Understanding how the notification engine works makes these problems fast to diagnose and fix.

How Notifications Fire

A notification fires when:

  1. A triggering event occurs (record inserted, updated, or a specific condition is met)
  2. The notification's conditions evaluate to true against the triggering record
  3. There are recipients who should receive it (based on users, groups, or dynamic recipient fields)
  4. The notification is not suppressed by a maintenance window or user preference

All four conditions must be true. A notification that is firing but no one is receiving it usually means condition 3 or 4 is failing.

Notification Log — Your First Stop for Debugging

Navigate to System Mailboxes > Outbound > Sent to see all outbound notifications. This shows what was sent, to whom, and when.

Navigate to System Mailboxes > Outbound > Skipped to see notifications that were evaluated but not sent. The Skip Reason column tells you exactly why — invalid recipient, user opted out, maintenance window active, etc.

For real-time debugging, navigate to System Diagnostics > Session Debug > Debug Notifications and then trigger the event. The debug output shows the full evaluation trace.

Recipient Evaluation

Notifications can send to:

  • Users — specific user records
  • Groups — all members of a group
  • Dynamic fields — values from the triggering record (assigned_to, caller_id, etc.)
  • Event parameters — passed when the notification is triggered via gs.eventQueue()

Email Digests

Email digests batch multiple notifications into a single email, sent on a schedule. Users can configure digest preferences in their notification preferences. Digests reduce email volume but introduce latency — a user on hourly digest won't see a notification for up to an hour.

For time-sensitive notifications (P1 incidents, critical alerts), explicitly exclude them from digest by setting the notification's weight to High. High-weight notifications are always sent immediately regardless of user digest settings.

Common Notification Problems

Notification not sending — but no error

Check the Skipped mailbox first. The most common reasons:

  • User has opted out of this notification category
  • User's email address is blank or invalid
  • Notification is in a maintenance window
  • Duplicate notification suppression (same notification fired twice within the suppression window)

Users getting too many notifications

Audit the notification subscriptions on the user's record. Check for group memberships that are adding them to notification lists they don't need. Also check if they are on both the assigned_to field and in the assignment group — they may be receiving both the individual and group notification.

Notification template showing raw variables

Variables like ${caller_id} appear as literal text when the field is null or when the template variable references a field that doesn't exist on the table. Check the template variables against the actual table fields.

Notification Template Best Practices

// Always use dot-walking carefully in templates
// This works:
${caller_id.name}

// This throws an error if caller_id is null:
${caller_id.manager.email}

// Safe version:
${caller_id.manager != null ? caller_id.manager.email : 'No manager'}

Testing Notifications Without Spamming Users

Before enabling a notification in production, use the Preview feature on the notification record to see exactly what the email will look like with real record data. You can specify a test record sys_id and the notification shows a rendered preview without actually sending anything.

For end-to-end testing, use a dedicated test email address rather than your personal email — this keeps test notifications separate from real ones and makes it easier to confirm delivery without confusion.

Notification triggers and when they fire

ServiceNow notifications are triggered by record events — insert, update, or both. Understanding when the notification trigger fires and what data is available at that point is essential for building reliable notifications.

The Condition on the notification filters which records and which updates trigger it. The condition runs after the event fires — if the record was updated but the condition evaluates to false, the notification does not send. Use conditions to ensure notifications fire only when meaningful — "Assigned to changed AND assigned_to is not empty" for assignment notifications, "State changed to Resolved" for resolution notifications.

Who receives the notification — the recipient model

The Recipients section of a Notification record defines who receives it. ServiceNow provides several recipient types:

Message templates and variable references

// Example notification message template variables
Subject: [INCIDENT] ${number} - ${short_description}

Body:
A new incident has been assigned to you.

Incident: ${number}
Priority: ${priority}
Description: ${short_description}

Assigned by: ${sys_updated_by}
Time: ${sys_updated_on}

State: ${state}
Category: ${category} / ${subcategory}

View incident: ${URI_REF}

// Reference related records with dot-walk:
Caller: ${caller_id.name}
Caller email: ${caller_id.email}
Department: ${caller_id.department.name}

// Previous values (for Update notifications):
Previous state: ${previous_state}
Previous assignment: ${previous_assignment_group.name}

Email digests and notification scheduling

For notifications that should not interrupt the recipient in real time — weekly summaries, daily metric reports, periodic reminders — use the Digest feature on the Notification record. A digest collects notification instances over a configured period (hourly, daily, weekly) and sends them as a single bundled email rather than individual messages. This significantly reduces email noise for notifications that trigger frequently but are not individually time-sensitive.

Related: Business Rules for notification triggers · Flow Designer triggers · SLA breach notifications · Scheduled Jobs for digest-style reports

Notification troubleshooting — the systematic approach

When a notification is not sending, diagnose in order: First, check the System Email Log (System Mailboxes > Outbound > Sent) — if the email appears there, it sent from ServiceNow but may have been filtered by the recipient's mail server. Second, check the Notification record's Condition — use the Condition Builder to test the condition against the record that should have triggered it. Third, check who should receive the notification under the Recipients tab — if the recipient list evaluates to empty, no email is sent without error. Fourth, check the Event Log (System Log > Events) if the notification uses an event trigger — confirm the event was fired. Fifth, check whether the notification is being suppressed by a user's notification preferences or by the record's Watch List configuration. This five-step sequence resolves 95% of notification issues without needing ServiceNow support.

Related: Business Rules for event-firing triggers · Flow Designer for flow-triggered notifications · SLA notifications · Scheduled Jobs for digest-style reports

Notification Conditions and Business Rules

Every notification has two condition layers: the notification condition (when to send) and the notification recipient conditions (who to send to). The notification condition evaluates against the triggering record — it is the same filter syntax used in GlideRecord encoded queries. The recipient conditions determine which users or groups receive the notification based on the record's field values and the user's relationship to the record. Understanding both layers prevents the common mistake of creating a notification that fires correctly but reaches the wrong recipients — or one that has correct recipients but fires on every update instead of just the triggering condition. Test both layers explicitly by simulating the triggering condition and verifying the recipient list before activating a notification in production.

Notification Templates and Dynamic Content

Notification templates use a variable syntax to include record field values in the subject and body. Standard variables follow the pattern ${field_name} for the triggering record's fields. For related records, the dot-walk syntax works: ${caller_id.name} inserts the caller's display name. The template engine also supports scripted variables defined in the Notification Script field — these are evaluated at send time and can perform GlideRecord lookups or complex string formatting that goes beyond simple field substitution. For HTML-formatted email notifications, test the template in multiple email clients since HTML rendering varies significantly between Outlook, Gmail, and mobile clients. Keep the plain-text version accurate for users who receive plain-text email.

Notification Digest and Frequency Controls

ServiceNow's notification digest feature batches multiple notifications into a single email for users who would otherwise receive high volumes of individual messages. This is particularly important for Scheduled Job-triggered notifications that might send hundreds of emails during a batch processing run. The digest configuration specifies a time window (e.g., "bundle all notifications of this type in a 15-minute window") and controls how the bundled message is formatted. For ITSM notifications in high-volume environments, implementing digest for update notifications while keeping create and escalation notifications immediate provides a balance between keeping users informed without overwhelming their inboxes. Users can typically control their own digest preferences through their profile notification preferences.

Notification Delivery Troubleshooting

When notifications are not being received, the investigation path follows a clear sequence. First, check the Outbound Email Log (sys_email table, filtered to type = send) to see whether the notification was created and attempted. A record with state = sent means ServiceNow successfully handed the email to the mail relay — the problem is downstream (spam filters, recipient address issues). A record with state = error means the notification was generated but delivery failed — check the error field for SMTP authentication or connection errors. If there is no email record at all, the notification either did not trigger or the recipient evaluation excluded all recipients — use the Notification Activity view to see the evaluation trace for recent notification triggers. The debugging guide covers the general log analysis patterns applicable here.

Want the complete reference?

This article is part of the NowSpectrum knowledge library. Browse all products for cheat sheets, interview prep, and deep-dive reference guides.

Browse All Products →
← Back to all posts