Skip to content


Download via Git

This option requires several command-line tools:

Once these are installed, you should:

## Navigate to your extension directory, e.g.
cd sites/default/files/civicrm/ext

## Download the extensions
git clone
git clone
git clone

## Download additional dependencies
./bin/ -D

The script bin/ handles various build activities:

## Download dependencies
./bin/ -D

## Regenerate DAOs
./bin/ -g

## Build zip archive
./bin/ -z

Styling Changes

We use Gulp and Sass for styling and handle different running tasks. Firstly, you should install node packages using npm package manager:

npm install

Styling changes should go into sass directory and compiled to CSS using the following command:

gulp sass

Once you are done making your changes, please use BackstopJS (see Testing to check for any possible visual regression issues

Patching Mosaico

This extension ships with a patched version of Mosaico. The patches are maintained as a fork in using Twigflow (Rebase).


Whenever a change is merged or pushed to, a bot on jenkins test-ci automatically builds a new zip archive and publishes

The build/publish process has a few properties:

  • It combines, civicrm/mosaico, and any other runtime dependencies into one zip file.
  • The version number is determined by reading info.xml (<version>) and appending the current Unix timestamp.
  • Example: If the version is declared as 1.0.beta1, then it will be published as 1.0.beta1.1478151288.
  • Three files are published:
  • The zip archive
  • The new info.xml file
  • A JSON document describing the build.
  • An alias is provided under the folder latest.

The bot does not publish the new version to To do this, download the to get the version from the info.xml ( eg. 2.5.1597918155).

Then add the actual release zip file to the release node on

Example filename:


Last time a release was tagged (2.5) the extension publisher made it available for download via the extension feed even though it was unpublished. This needs to be fixed before the next release!