---
title: " Gerrit Code Review - Email Notifications"
sidebar: gerritdoc_sidebar
permalink: user-notify.html
---
## Description

Gerrit can automatically notify users by email when new changes are
uploaded for review, after comments have been posted on a change, or
after the change has been submitted to a branch.

## User Level Settings

Individual users can configure email subscriptions by editing watched
projects through Settings \> Watched Projects with the web UI.

Specific projects may be watched, or the special project `All-Projects`
can be watched to watch all projects that are visible to the user.

[Change search expressions](user-search.html) can be used to filter
change notifications to specific subsets, for example `branch:master` to
only see changes proposed for the master branch. If a filter would match
at the `All-Projects` level as well as a specific project, the more
specific project’s notification settings are used.

Notification mails for new changes and new patch sets are not sent to
the change owner.

Notification mails for comments added on changes are not sent to the
user who added the comment unless the user has enabled the *Every
comment* option in the user preferences.

## Project Level Settings

Project owners and site administrators can configure project level
notifications, enabling Gerrit Code Review to automatically send emails
to team mailing lists, or groups of users. Project settings are stored
inside of the `refs/meta/config` branch of each Git repository, and are
placed inside of the `project.config` file.

To edit the project level notify settings, ensure the project owner has
Push permission already granted for the `refs/meta/config` branch.
Consult [access controls](access-control.html) for details on how access
permissions work.

Initialize a temporary Git repository to edit the configuration:

``` 
  mkdir cfg_dir
  cd cfg_dir
  git init
```

Download the existing configuration from Gerrit:

``` 
  git fetch ssh://localhost:29418/project refs/meta/config
  git checkout FETCH_HEAD
```

Enable notifications to an email address by adding to `project.config`,
this can be done using the `git config`
command:

``` 
  git config -f project.config --add notify.team.email team-address@example.com
  git config -f project.config --add notify.team.email paranoid-manager@example.com
```

Examining the project.config file with any text editor should show a new
notify section describing the email addresses to deliver to:

``` 
  [notify "team"]
        email = team-address@example.com
        email = paranoid-manager@example.com
```

Each notify section within a single project.config file must have a
unique name. The section name itself does not matter and may later
appear in the web UI. Naming a section after the email address or group
it delivers to is typical. Multiple sections can be specified if
different filters are needed.

Commit the configuration change, and push it back:

``` 
  git commit -a -m "Notify team-address@example.com of changes"
  git push ssh://localhost:29418/project HEAD:refs/meta/config
```

  - notify.\<name\>.email  
    List of email addresses to send matching notifications to. Each
    email address should be placed on its own line.
    
    Internal groups within Gerrit Code Review can also be named using
    `group NAME` syntax. If this format is used the group’s UUID must
    also appear in the corresponding `groups` file. Gerrit will expand
    the group membership and BCC all current users.

  - notify.\<name\>.type  
    Types of notifications to send. If not specified, all notifications
    are sent.
    
      - `new_changes`: Only newly created changes.
    
      - `new_patchsets`: Only newly created patch sets.
    
      - `all_comments`: Only comments on existing changes.
    
      - `submitted_changes`: Only changes that have been submitted.
    
      - `abandoned_changes`: Only changes that have been abandoned.
    
      - `all`: All notifications.
    
    Like email, this variable may be a list of options.

  - notify.\<name\>.header  
    Email header used to list the destination. If not set BCC is used.
    Only one value may be specified. To use different headers for each
    address list them in different notify blocks.
    
      - `to`: The standard To field is used; addresses are visible to
        all.
    
      - `cc`: The standard CC field is used; addresses are visible to
        all.
    
      - `bcc`: SMTP RCPT TO is used to hide the address.

  - notify.\<name\>.filter  
    [Change search expression](user-search.html) to match changes that
    should be sent to the emails named in this section. Within a
    Git-style configuration file double quotes around complex operator
    values may need to be escaped, e.g. `filter =
    branch:\"^(maint|stable)-.*\"`.

When sending email to a bare email address in a notify block, Gerrit
Code Review ignores read access controls and assumes the administrator
has set the filtering options correctly. Project owners can implement
security filtering by adding the `visibleto:groupname` predicate to the
filter expression, for example:

``` 
  [notify "Developers"]
        email = team-address@example.com
        filter = visibleto:Developers
```

When sending email to an internal group, the internal group’s read
access is automatically checked by Gerrit and therefore does not need to
use the `visibleto:` operator in the filter.

## Email Footers

Notification emails related to changes include metadata about the change
to support writing mail filters. This metadata is included in the form
of footers in the message content. For HTML emails, these footers are
hidden, but they can be examined by viewing the HTML source of messages.

In this way users may apply filters and rules to their incoming Gerrit
notifications using the values of these footers. For example a Gmail
filter to find emails regarding reviews that you are a reviewer of might
take the following form.

``` 
  "Gerrit-Reviewer: Your Name <your.email@example.com>"
```

  - Gerrit-MessageType  
    The message type footer states the type of the message and will take
    one of the following values.
    
      - abandon
    
      - comment
    
      - deleteReviewer
    
      - deleteVote
    
      - merged
    
      - newchange
    
      - newpatchset
    
      - restore
    
      - revert
    
      - setassignee

  - Gerrit-Change-Id  
    The change ID footer states the ID of the change, such as
    `I3443af49fcdc16ca941ee7cf2b5e33c1106f3b1d`.

  - Gerrit-Change-Number  
    The change number footer states the numeric ID of the change, for
    example `92191`.

  - Gerrit-PatchSet  
    The patch set footer states the number of the patch set that the
    email relates to. For example, a notification email for a vote being
    set on the seventh patch set will take a value of `7`.

  - Gerrit-Owner  
    The owner footer states the name and email address of the change’s
    owner. For example, `Owner Name <owner@example.com>`.

  - Gerrit-Reviewer  
    The reviewer footers list the names and email addresses of the
    change’s reviewrs. One footer is included for each reviewer. For
    example, if a change has two reviewers, the footers might include:

<!-- end list -->

``` 
  Gerrit-Reviewer: Reviewer One <one@example.com>
  Gerrit-Reviewer: Reviewer Two <two@example.com>
```

  - Gerrit-CC  
    The CC footers list the names and email addresses of those who have
    been CC’d on the change. One footer is included for each reviewer.
    For example, if a change CCs two users, the footers might include:

<!-- end list -->

``` 
  Gerrit-CC: User One <one@example.com>
  Gerrit-CC: User Two <two@example.com>
```

  - Gerrit-Project  
    The project footer states the project to which the change belongs.

  - Gerrit-Branch  
    The branch footer states the abbreviated name of the branch that the
    change targets.

  - Gerrit-Comment-Date  
    In comment emails, the comment date footer states the date that the
    comment was posted.

  - Gerrit-HasComments  
    In comment emails, the has-comments footer states whether inline
    comments had been posted in that notification using "Yes" or "No",
    for example `Gerrit-HasComments: Yes`.

  - Gerrit-HasLabels  
    In comment emails, the has-labels footer states whether label votes
    had been posted in that notification using "Yes" or "No", for
    example `Gerrit-HasLabels: No`.

## GERRIT

Part of [Gerrit Code Review](index.html)

## SEARCHBOX

