How to Sync Watchers Field in Jira Cloud

    Watchers field is one of the standard fields of an issue. You can synchronize it as any other issue field. This article provides descriptions and scripts that help you to synchronize issue watchers and create new users if they do not exist on the destination side. Exalate has a helper method to create users with no permissions. Use this method to sync the watcher's list.

    More details about the watcher's issue field.

    Source Side

     Outgoing sync

    Send watchers

     replica.watchers = issue.watchers

    Destination Side (Jira on-premise)

    Add the code below to the Incoming sync to create users if they don't exist on the receiving side.

    issue.watchers = replica.watchers.each { w ->
        def _localW = nodeHelper.getUserByEmail(
        if (_localW == null) {
            // We create a user with no permissions, and with randomly generated password
            return nodeHelper.createUser(

    Destination Side (Jira Cloud)

    There's no API on Jira Cloud to create users if they don't exist. Exalate can lookup local users in different ways:

    • by email, if the user email is not hidden in the Atlassian account settings
    • by user accountID if the user email is hidden in the Atlassian account settings

    Incoming sync

    Set local watcher based on the received user data from the remote side. If the user is not found locally then don't set any value.

    def localWatchers = []
    replica.watchers.each { w ->
        def _localW = nodeHelper.getUser(w.key)
        if (_localW != null) {
            localWatchers << _localW  // Add to the local watchers list if the user exists
    issue.watchers = localWatchers

    Note: Updating watchers on Jira Cloud does not trigger Exalate synchronization event. It means that watchers sync with the next issue update like new comment, description or other fields update.