Gerrit uses Closure Templates (Soy) for the bulk of the standard mails it sends out. There are builtin default templates which are used if they are not overridden. These defaults are also provided as examples so that administrators may copy them and easily modify them to tweak their contents.

Compatibility Note: previously, Velocity Template Language (VTL) was used as the template language for Gerrit emails. Support for VTL has now been removed in favor of Soy, and Velocity templates that modify text emails are no longer supported.

Template Locations and Extensions

The default example templates reside under: '$site_path'/etc/mail and are terminated with the double extension .soy.example. Modifying these example files will have no effect on the behavior of Gerrit. However, copying an example template to an equivalently named file without the .example extension and modifying it will allow an administrator to customize the template.

Note
The content of the templates at '$site_path'/etc/mail/.*\.soy are cached at startup by Gerrit. If they are modified Gerrit needs to be restarted before the changes takes effect.

Supported Mail Templates

Each mail that Gerrit sends out is controlled by at least one template. These are listed below. Change emails are influenced by two additional templates, one to set the subject line, and one to set the footer which gets appended to all the change emails (see ChangeSubject.soy and ChangeFooter.soy below.)

Many types of Gerrit email message support HTML in addition to plain-text. Where both are supported, templates to control the HTML part have …​Html appended in their file names. For example, for "Abandoned" emails, the Abandoned.soy template determines the text part of the message, whereas AbandonedHtml.soy determines the HTML part.

Abandoned.soy and AbandonedHtml.soy

The "Abandoned" templates will determine the contents of the email related to a change being abandoned. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

AddKey.soy and AddKeyHtml.soy

AddKey templates will determine the contents of the email related to SSH and GPG keys being added to a user account. This notification is not sent when the key is administratively added to another user account.

ChangeFooter.soy and ChangeFooterHtml.soy

The ChangeFooter templates will determine the contents of the footer that will be appended to emails related to changes (all `ChangeEmail`s).

ChangeSubject.soy

The ChangeSubject.soy template will determine the contents of the email subject line for ALL emails related to changes.

Comment.soy

The Comment.soy template will determine the contents of the email related to a user submitting comments on changes. It is a ChangeEmail: see ChangeSubject.soy, ChangeFooter and CommentFooter.

CommentFooter.soy and CommentFooterHtml.soy

The CommentFooter templates will determine the contents of the footer text that will be appended to emails related to a user submitting comments on changes. See ChangeSubject.soy, Comment and ChangeFooter.

DeleteKey.soy and DeleteKeyHtml.soy

DeleteKey templates will determine the contents of the email related to SSH or GPG keys being deleted from a user account. This notification is not sent when the key is administratively deleted from another user account.

DeleteVote.soy and DeleteVoteHtml.soy

The DeleteVote templates will determine the contents of the email related to removing votes on changes. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

DeleteReviewer.soy and DeleteReviewerHtml.soy

The DeleteReviewer templates will determine the contents of the email related to a user removing a reviewer (with a vote) from a change. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

The Footer templates will determine the contents of the footer text appended to the end of all outgoing emails after the ChangeFooter and CommentFooter.

HttpPasswordUpdate.soy and HttpPasswordUpdateHtml.soy

HttpPasswordUpdate templates will determine the contents of the email related to adding, changing or deleting the HTTP password on a user account.

Merged.soy and MergedHtml.soy

The Merged templates will determine the contents of the email related to a change successfully merged to the head. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

NewChange.soy and NewChangeHtml.soy

The NewChange templates will determine the contents of the email related to a user submitting a new change for review. This includes changes created by actions made by the user in the Web UI such as cherry picking a commit or reverting a change. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

RegisterNewEmail.soy and RegisterNewEmailHtml.soy

Those templates will determine the contents of the email related to registering new email accounts.

ReplacePatchSet.soy and ReplacePatchSetHtml.soy

The ReplacePatchSet templates will determine the contents of the email related to a user submitting a new patchset for a change. This includes patchsets created by actions made by the user in the Web UI such as editing the commit message, cherry picking a commit, or rebasing a change. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

Restored.soy and RestoredHtml.soy

The Restored templates will determine the contents of the email related to a change being restored. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

Reverted.soy and RevertedHtml.soy

The Reverted templates will determine the contents of the email related to a change being reverted. It is a ChangeEmail: see ChangeSubject.soy and ChangeFooter.

Mail Variables and Methods

Mail templates can access and display objects currently made available to them via the Soy context.

Warning

Be aware that modifying templates can cause them to fail to parse and therefore not send out the actual email.

All OutgoingEmails

All outgoing emails have the following variables available to them:

$email.settingsUrl

The URL to view the user’s settings in the Gerrit web UI.

$email.gerritHost

The name of the Gerrit instance.

$email.gerritUrl

The URL to the Gerrit web UI.

$messageClass

A String containing the messageClass.

$messageClassDisplay

A String containing the messageClass display text.

Change Emails

Change related emails have the following template data available to them, in addition to what’s available to all outgoing emails.

$changeId

Id of the current change (a Change.Key).

$coverLetter

The text of the ChangeMessage.

$fromName

The name of the from user.

$email.unifiedDiff

The diff of the change.

$email.changeDetail

The details of the change, including the commit message.

$email.changeUrl

The URL to the change in the web UI.

$email.includeDiff

Whether the Gerrit instance is configured to include diffs in emails.

$change.subject

The subject of the current change.

$change.originalSubject

The subject corresponding to the first patch set of the current change.

$change.shortSubject

The subject limited to 72 characters, with an ellipsis if it exceeds that.

$change.shortOriginalSubject

The original subject limited to 72 characters, with an ellipsis if it exceeds that.

$change.sizeBucket

Human-readable size bucket of the current change.

$change.ownerEmail

The email address of the owner of the change.

$branch.shortName

The name of the branch targeted by the current change.

$projectName

The name of this change’s project.

$shortProjectName

The project name with the path abbreviated.

$instanceAndProjectName

The Gerrit instance name, followed by the short project name

$addInstanceNameInSubject

Whether the instance name should be included in the email subject.

$sshHost

SSH hostname for the Gerrit instance.

$patchSet.patchSetId

The current patch set number.

$patchSet.refname

The refname of the patch set.

$patchSetInfo.authorName

The name of the author of the patch set.

$patchSetInfo.authorEmail

The email address of the author of the patch set.