diff --git a/lib/workers/repository/onboarding/pr/config-description.js b/lib/workers/repository/onboarding/pr/config-description.js
index 3f96ad6da4523c29fc600d07f67e8f3d4339e71c..f3101697282501a6506cd34f91bcecc12161c1b2 100644
--- a/lib/workers/repository/onboarding/pr/config-description.js
+++ b/lib/workers/repository/onboarding/pr/config-description.js
@@ -30,15 +30,15 @@ function getConfigDesc(config, packageFiles) {
   ) {
     descriptionArr = descriptionArr.filter(val => !val.includes('Docker-only'));
   }
-  let desc = `\n## Configuration Summary\n\nBased on the currently configured presets, Renovate will:\n\n`;
+  let desc = `\n### Configuration Summary\n\nBased on the default config's presets, Renovate will:\n\n`;
   desc +=
     '  - Start dependency updates only once this Configure Renovate PR is merged\n';
   descriptionArr.forEach(d => {
     desc += `  - ${d}\n`;
   });
   desc += '\n';
-  desc += `Would you like to change the way Renovate is upgrading your dependencies?`;
-  desc += ` Simply edit the \`renovate.json\` in this branch and this Pull Request description will be updated the next time Renovate runs. Try to use Config Presets (the \`extends\` array) when possible rather than raw config, as then this PR will be able to more accurately describe your settings.`;
+  desc += `:abcd: Would you like to change the way Renovate is upgrading your dependencies?`;
+  desc += ` Simply edit the \`renovate.json\` in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.`;
   desc += '\n\n---\n';
   return desc;
 }
diff --git a/lib/workers/repository/onboarding/pr/index.js b/lib/workers/repository/onboarding/pr/index.js
index bcde820d94e2345fb5f3e20e131279732538f037..045e598e932fcee9034e161765c3800a8a1888a6 100644
--- a/lib/workers/repository/onboarding/pr/index.js
+++ b/lib/workers/repository/onboarding/pr/index.js
@@ -11,14 +11,14 @@ async function ensureOnboardingPr(config, packageFiles, branches) {
   logger.debug('ensureOnboardingPr()');
   logger.trace({ config });
   const onboardingBranch = `renovate/configure`;
-  const onboardingPrTitle = 'Configure Renovate';
+  const onboardingPrTitle = 'Configure Renovate'; // Check if existing PR exists
+  const existingPr = await platform.getBranchPr(onboardingBranch);
   logger.debug('Filling in onboarding PR template');
   let prTemplate = `Welcome to [Renovate](https://renovatebot.com)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\n\n`;
   prTemplate += config.requireConfig
-    ? `Renovate will begin keeping your dependencies up-to-date only once you merge this Pull Request.\nIf you close this Pull Request unmerged, then Renovate will be disabled.\n\n`
-    : `Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\n\n`;
-  prTemplate += `If you have any questions, try reading our [Docs](https://renovatebot.com/docs), particularly the Getting Started section.
-You can post questions in [our Config Help repository](https://github.com/renovatebot/config-help/issues) or @ the app author @rarkins in this PR and he'll probably see it.
+    ? `:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\n\n`
+    : `:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\n\n`;
+  prTemplate += `
 
 ---
 {{PACKAGE FILES}}
@@ -28,7 +28,8 @@ You can post questions in [our Config Help repository](https://github.com/renova
 {{BASEBRANCH}}
 {{PRLIST}}
 
----
+:question: If you have any questions, try reading the [Docs](https://renovatebot.com/docs), particularly the Getting Started section.
+You can post questions in [Renovate's Config Help repository](https://github.com/renovatebot/config-help/issues) or @ the app author @rarkins in this PR and he'll hopefully see it.
 `;
   let prBody = prTemplate;
   if (packageFiles && Object.entries(packageFiles).length) {
@@ -46,7 +47,21 @@ You can post questions in [our Config Help repository](https://github.com/renova
   } else {
     prBody = prBody.replace('{{PACKAGE FILES}}\n', '');
   }
-  prBody = prBody.replace('{{CONFIG}}\n', getConfigDesc(config, packageFiles));
+  let configDesc = '';
+  if (!existingPr || existingPr.canRebase) {
+    configDesc = getConfigDesc(config, packageFiles);
+  } else {
+    configDesc =
+      '### Configuration\n\n:abcd: Renovate has detected a custom config for this PR. Feel free to post it to the [Config Help repository](https://github.com/renovatebot/config-help/issues) if you have any doubts and would like it reviewed.\n\n';
+    if (existingPr.canMerge) {
+      configDesc +=
+        "Important: Now that this branch is edited, Renovate can't rebase it from the base branch any more. If you make changes to the base branch that could impact this onboarding PR, please merge them manually.\n\n";
+    } else {
+      configDesc +=
+        ':warning: This PR has a merge conflict, however Renovate is unable to automatically fix that due to edits in this branch. Please resolve the merge conflict manually.\n\n';
+    }
+  }
+  prBody = prBody.replace('{{CONFIG}}\n', configDesc);
   prBody = prBody.replace('{{WARNINGS}}\n', getWarnings(config));
   prBody = prBody.replace('{{ERRORS}}\n', getErrors(config));
   prBody = prBody.replace('{{BASEBRANCH}}\n', getBaseBranchDesc(config));
@@ -64,8 +79,6 @@ You can post questions in [our Config Help repository](https://github.com/renova
 
   prBody = platform.getPrBody(prBody);
 
-  // Check if existing PR exists
-  const existingPr = await platform.getBranchPr(`renovate/configure`);
   if (existingPr) {
     logger.info('Found open onboarding PR');
     // Check if existing PR needs updating
diff --git a/lib/workers/repository/onboarding/pr/pr-list.js b/lib/workers/repository/onboarding/pr/pr-list.js
index 9ded9028a3a3610f866b3b6fe133d5e2db3c2d26..b61a2c15e97844518eb8ac029daa9b4ae59fe285 100644
--- a/lib/workers/repository/onboarding/pr/pr-list.js
+++ b/lib/workers/repository/onboarding/pr/pr-list.js
@@ -50,6 +50,15 @@ function getPrList(config, branches) {
     prDesc += '\n\n';
     prDesc += '</details>\n\n';
   }
+  if (
+    config.prHourlyLimit > 0 &&
+    config.prHourlyLimit < 5 &&
+    config.prHourlyLimit < branches.length
+  ) {
+    prDesc += `<br />\n\n:children_crossing: Branch creation will be limited to maximum ${
+      config.prHourlyLimit
+    } per hour, so it doesn't swamp any CI resources or spam the project. See: [prHourlyLimit](https://renovatebot.com/docs/configuration-options/#prhourlylimit).\n\n`;
+  }
   return prDesc;
 }
 
diff --git a/test/workers/repository/onboarding/pr/__snapshots__/config-description.spec.js.snap b/test/workers/repository/onboarding/pr/__snapshots__/config-description.spec.js.snap
index a34e1b0e82dd398c38167d6f5567484e93a6d296..c36da47699d8dce957c981b427c699640ffd41bd 100644
--- a/test/workers/repository/onboarding/pr/__snapshots__/config-description.spec.js.snap
+++ b/test/workers/repository/onboarding/pr/__snapshots__/config-description.spec.js.snap
@@ -2,14 +2,14 @@
 
 exports[`workers/repository/onboarding/pr/config-description getConfigDesc() assignees, labels and schedule 1`] = `
 "
-## Configuration Summary
+### Configuration Summary
 
-Based on the currently configured presets, Renovate will:
+Based on the default config's presets, Renovate will:
 
   - Start dependency updates only once this Configure Renovate PR is merged
   - Run Renovate on following schedule: before 5am
 
-Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch and this Pull Request description will be updated the next time Renovate runs. Try to use Config Presets (the \`extends\` array) when possible rather than raw config, as then this PR will be able to more accurately describe your settings.
+:abcd: Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch with your custom config and the list of Pull Requests in the \\"What to Expect\\" section below will be updated the next time Renovate runs.
 
 ---
 "
@@ -17,16 +17,16 @@ Would you like to change the way Renovate is upgrading your dependencies? Simply
 
 exports[`workers/repository/onboarding/pr/config-description getConfigDesc() returns a filtered list 1`] = `
 "
-## Configuration Summary
+### Configuration Summary
 
-Based on the currently configured presets, Renovate will:
+Based on the default config's presets, Renovate will:
 
   - Start dependency updates only once this Configure Renovate PR is merged
   - description 1
   - description two
   - something else
 
-Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch and this Pull Request description will be updated the next time Renovate runs. Try to use Config Presets (the \`extends\` array) when possible rather than raw config, as then this PR will be able to more accurately describe your settings.
+:abcd: Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch with your custom config and the list of Pull Requests in the \\"What to Expect\\" section below will be updated the next time Renovate runs.
 
 ---
 "
@@ -34,9 +34,9 @@ Would you like to change the way Renovate is upgrading your dependencies? Simply
 
 exports[`workers/repository/onboarding/pr/config-description getConfigDesc() returns a full list 1`] = `
 "
-## Configuration Summary
+### Configuration Summary
 
-Based on the currently configured presets, Renovate will:
+Based on the default config's presets, Renovate will:
 
   - Start dependency updates only once this Configure Renovate PR is merged
   - description 1
@@ -44,7 +44,7 @@ Based on the currently configured presets, Renovate will:
   - something else
   - this is Docker-only
 
-Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch and this Pull Request description will be updated the next time Renovate runs. Try to use Config Presets (the \`extends\` array) when possible rather than raw config, as then this PR will be able to more accurately describe your settings.
+:abcd: Would you like to change the way Renovate is upgrading your dependencies? Simply edit the \`renovate.json\` in this branch with your custom config and the list of Pull Requests in the \\"What to Expect\\" section below will be updated the next time Renovate runs.
 
 ---
 "
diff --git a/test/workers/repository/onboarding/pr/__snapshots__/pr-list.spec.js.snap b/test/workers/repository/onboarding/pr/__snapshots__/pr-list.spec.js.snap
index b2297672d331bffaa20ec535b80d577e222c2100..713f4019e27aa586798ca0aa8cd269467020f27e 100644
--- a/test/workers/repository/onboarding/pr/__snapshots__/pr-list.spec.js.snap
+++ b/test/workers/repository/onboarding/pr/__snapshots__/pr-list.spec.js.snap
@@ -33,6 +33,10 @@ With your current configuration, Renovate will create 2 Pull Requests:
 
 </details>
 
+<br />
+
+:children_crossing: Branch creation will be limited to maximum 1 per hour, so it doesn't swamp any CI resources or spam the project. See: [prHourlyLimit](https://renovatebot.com/docs/configuration-options/#prhourlylimit).
+
 "
 `;
 
diff --git a/test/workers/repository/onboarding/pr/index.spec.js b/test/workers/repository/onboarding/pr/index.spec.js
index bcb0dd457b9012bddd27bf6278e772d897499028..13c11799a6055e263f0681d4313a8fa124fbc88d 100644
--- a/test/workers/repository/onboarding/pr/index.spec.js
+++ b/test/workers/repository/onboarding/pr/index.spec.js
@@ -36,6 +36,7 @@ describe('workers/repository/onboarding/pr', () => {
       platform.getBranchPr.mockReturnValue({
         title: 'Configure Renovate',
         body: createPrBody,
+        canRebase: true,
       });
       await ensureOnboardingPr(config, packageFiles, branches);
       expect(platform.createPr.mock.calls).toHaveLength(0);
@@ -51,5 +52,16 @@ describe('workers/repository/onboarding/pr', () => {
       expect(platform.createPr.mock.calls).toHaveLength(0);
       expect(platform.updatePr.mock.calls).toHaveLength(1);
     });
+    it('updates PR', async () => {
+      config.baseBranch = 'some-branch';
+      platform.getBranchPr.mockReturnValue({
+        title: 'Configure Renovate',
+        body: createPrBody,
+        canMerge: true,
+      });
+      await ensureOnboardingPr(config, [], branches);
+      expect(platform.createPr.mock.calls).toHaveLength(0);
+      expect(platform.updatePr.mock.calls).toHaveLength(1);
+    });
   });
 });
diff --git a/test/workers/repository/onboarding/pr/pr-list.spec.js b/test/workers/repository/onboarding/pr/pr-list.spec.js
index 43bbb59461e605251275b7a92f92ea4728864bf1..873bfbe5d1a761ee6953835c6091f0f56db9aaa2 100644
--- a/test/workers/repository/onboarding/pr/pr-list.spec.js
+++ b/test/workers/repository/onboarding/pr/pr-list.spec.js
@@ -68,6 +68,7 @@ describe('workers/repository/onboarding/pr/pr-list', () => {
           ],
         },
       ];
+      config.prHourlyLimit = 1;
       const res = getPrList(config, branches);
       expect(res).toMatchSnapshot();
     });