Script - add-watcher (groovy)

Updated for Confluence 4.x/5.x 

This groovy script, implemented as a user macro, is used to add users as a watcher to a page.This is really handy in combination with scaffolding. I use it in a form where a manager can assign resources to a project request (which is a page in Confluence) and those users are automatically subscribed to the page.

Macro Name


DescriptionAdd a user as a watcher to the current page

Macro body processing

No macro body

## param0 is the user name (id) to add
#if ($param0 && $param0.length() > 0)
#set ($wiki = "{groovy:userName=${param0}}
import com.atlassian.spring.container.ContainerManager;
import com.atlassian.confluence.mail.notification.NotificationManager;

// Get the default Notification Manager
def notificationManager = (NotificationManager) ContainerManager.getComponent('notificationManager');
// Get the current page object
def page = context.getEntity();
// Get a handle on the user
def user = userAccessor.getUser(userName);
// Is the user already watching this page or space?
boolean isWatching = notificationManager.isUserWatchingPageOrSpace(user, page.getSpace(), page)
if (user && page && !isWatching) {
    notificationManager.addPageNotification(user, page);
    out.println('Subscribed User: <b>' + user.getFullName() + '</b><br />');
} else if (user == null) {
    out.println('User not found: <b>' + userName + '</b><br />');
} else if (isWatching) {
    out.println('User already watching: <b>' + userName + '</b><br />');


I have a live-template based form with a select list of users to assign:


I then have a report that iterates on the selections in the list to subscribe the selected users:

  {report-body}{add-watcher:%reference:value > user:name%}{report-body}