diff --git a/lib/workers/repository/updates/branchify.js b/lib/workers/repository/updates/branchify.js
index 8806e1d5c32402ac92fdef00d3128295126e0fc3..36acdbbe693180564f5d9da282c65f7cfd6f491f 100644
--- a/lib/workers/repository/updates/branchify.js
+++ b/lib/workers/repository/updates/branchify.js
@@ -36,6 +36,9 @@ function branchifyUpgrades(config) {
         logger.debug('Using regular branchName template');
         upgrade.branchName = handlebars.compile(upgrade.branchName)(upgrade);
       }
+      // Compile extra times in case of nested handlebars templates
+      upgrade.branchName = handlebars.compile(upgrade.branchName)(upgrade);
+      upgrade.branchName = handlebars.compile(upgrade.branchName)(upgrade);
       branchUpgrades[upgrade.branchName] =
         branchUpgrades[upgrade.branchName] || [];
       branchUpgrades[upgrade.branchName] = [upgrade].concat(
diff --git a/lib/workers/repository/updates/generate.js b/lib/workers/repository/updates/generate.js
index 80e01a6c0e91f0bda2ecf0e1b4aa95a22a9a3e24..d07b1bc354e2f3622010e9d31d6b27f42ef87966 100644
--- a/lib/workers/repository/updates/generate.js
+++ b/lib/workers/repository/updates/generate.js
@@ -49,6 +49,9 @@ function generateBranchConfig(branchUpgrades) {
       upgrade.baseBranches && upgrade.baseBranches.length > 1
         ? ' ({{baseBranch}})'
         : '';
+    // Compile a few times to allow for nested handlebars templates
+    upgrade.prTitle = handlebars.compile(upgrade.prTitle)(upgrade);
+    upgrade.prTitle = handlebars.compile(upgrade.prTitle)(upgrade);
     upgrade.prTitle = handlebars.compile(upgrade.prTitle)(upgrade);
     if (upgrade.semanticCommits) {
       logger.debug('Upgrade has semantic commits enabled');