DEV Community

Takefumi Muto
Takefumi Muto

Posted on

Implementing Event-Triggered Notifications in ServiceNow

Introduction

In ServiceNow, the most common way to send a Notification is to trigger it when a record is inserted or updated.
However, sometimes this approach is not flexible enough, especially when:

  • The condition is too complex for the GUI.
  • You need to compare old and new values in the notification.
  • You want to suppress notifications for API calls.
  • You want to reuse the same trigger across multiple notifications or processes.

This is where event-triggered notifications come in handy.
In this post, I’ll walk you through an implementation where a notification is sent when the priority of an Incident changes, using an Event as the trigger.


Implementation Steps

1. Event Registry

First, create a custom Event Registry entry.

  • Name: Test_incident.priority_changed
  • Table: incident
  • Description: Event fired when the priority changes
<event_name>Test_incident.priority_changed</event_name>
<table>incident</table>
<description>Event Registration of test</description>
Enter fullscreen mode Exit fullscreen mode

2. Business Rule: Fire the Event

Next, create a Business Rule that fires the event whenever the priority changes.

  • Name: Test_incident events
  • Table: incident
  • When: after update
if (current.priority.changes() && current.priority != previous.priority) {
    gs.eventQueue(
        "Test_incident.priority_changed",  // event name
        current,                           // source record
        current.priority.toString(),       // parm1: new priority
        previous.priority.toString()       // parm2: old priority
    );
}

// Optional: exclude updates from Connect API
function isConnect() {
    var transaction = GlideTransaction.get();
    if (!transaction) return false;

    var request = transaction.getRequest();
    if (!request) return false;

    var path = request.getRequestURI();
    return path && path.match(/\/api\/now\/connect/);
}
Enter fullscreen mode Exit fullscreen mode

👉 Here, I’m passing parm1 (new priority) and parm2 (old priority) so they can be referenced later in the notification body.


3. Notification

Now, configure the Notification that listens for the event.

  • Name: Test_Event trigger notification
  • When to send: Event is fired → Test_incident.priority_changed
  • Subject:
  Test Subject: ${number}
Enter fullscreen mode Exit fullscreen mode
  • Body:
  Incident ${number} priority has changed!
  Previous: ${event.parm2}
  Current:  ${event.parm1}
Enter fullscreen mode Exit fullscreen mode

4. Unit Test

Finally, let’s test with an Incident record.

  • Incident: INC0010005

    • Short description: Event Trigger Notification Test
    • Priority: changed from 3 → 1
  • Notification Result

Subject:

Test Subject: INC0010005
Enter fullscreen mode Exit fullscreen mode

Body:

Incident INC0010005 priority has changed!
Previous: 3
Current:  1
Enter fullscreen mode Exit fullscreen mode

✅ Works as expected — the event parameters were passed into the notification successfully.


Why Use Events?

From this small experiment, I can summarize the main benefits of event-triggered notifications:

  • Handle complex conditions via scripts.
  • Easily insert old/new values into notifications.
  • Reuse the same event across multiple notifications or flows.
  • Prevent unnecessary notifications (e.g., API updates).

For simple cases like “notify the assignee when an Incident is created,” a standard notification is fine.
But once conditions get more advanced, events give you much more control.


Conclusion

Here’s the overall flow again:

  1. Register the event in Event Registry.
  2. Use a Business Rule to fire the event with gs.eventQueue().
  3. Create a Notification triggered by the event.
  4. Pass parameters (parm1, parm2) for richer notification content.

This approach is flexible, reusable, and prevents unwanted notifications.


Next Steps

  • Use Flow Designer to trigger Slack messages from the event.
  • Explore Notification Email Scripts for richer email content.
  • Try applying the same pattern to Change or Problem records.

✍️ That’s it! This was a simple but effective pattern for event-triggered notifications in ServiceNow.

Top comments (0)