diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js
index 699b1feda3f6a344b0a93a7ebd2da8af0f289866..a1c840fe566c04880aa6ebf26a73643bf29e50e8 100644
--- a/lib/workers/repository/index.js
+++ b/lib/workers/repository/index.js
@@ -84,7 +84,7 @@ async function renovateRepository(repoConfig, token) {
       logger.trace({ config }, 'post-packageFiles config');
       // TODO: why is this fix needed?!
       config.logger = logger;
-      config.repoIsOnboarded = await onboarding.getOnboardingStatus(config);
+      config = await onboarding.getOnboardingStatus(config);
       if (!config.repoIsOnboarded) {
         config.contentBaseBranch = `${config.branchPrefix}configure`;
         // Remove packageFile list in case they are provisioned in renovate.json
diff --git a/lib/workers/repository/onboarding.js b/lib/workers/repository/onboarding.js
index b325586e65b98dc1d382c4be78f55ec78965c698..2d034e6d5ada686fab11ad1c2e87b5c7e8c3ef54 100644
--- a/lib/workers/repository/onboarding.js
+++ b/lib/workers/repository/onboarding.js
@@ -228,17 +228,18 @@ With your current configuration, renovate will initially create the following Pu
   logger.debug(`Created ${pr.displayNumber} for configuration`);
 }
 
-async function getOnboardingStatus(config) {
+async function getOnboardingStatus(inputConfig) {
+  const config = { ...inputConfig };
   const { logger } = config;
   logger.debug('Checking if repo is configured');
   // Check if repository is configured
   if (config.onboarding === false) {
     logger.debug('Repo onboarding is disabled');
-    return true;
+    return { ...config, repoIsOnboarded: true };
   }
   if (config.renovateJsonPresent || config.hasPackageJsonRenovateConfig) {
     logger.debug('Repo has been configured');
-    return true;
+    return { ...config, repoIsOnboarded: true };
   }
   const pr = await config.api.findPr(
     `${config.branchPrefix}configure`,
@@ -248,7 +249,7 @@ async function getOnboardingStatus(config) {
     logger.debug(`Found existing onboarding PR#${pr.number}`);
     if (pr.isClosed) {
       logger.debug('Found closed Configure Renovate PR');
-      return true;
+      return { ...config, repoIsOnboarded: true };
     }
     // PR exists but hasn't been closed yet
     logger.debug(
@@ -257,10 +258,10 @@ async function getOnboardingStatus(config) {
     const prDetails = await config.api.getPr(pr.number);
     if (!prDetails.canRebase) {
       // Cannot update files if rebasing not possible
-      return false;
+      return { ...config, repoIsOnboarded: false };
     }
   }
   // Create or update files, then return
   await module.exports.createBranch(config);
-  return false;
+  return { ...config, repoIsOnboarded: false };
 }
diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js
index f653f35bd7221be6ea600661beda4e65adfca91d..3edb86e43ffd4847889c81098153a94c1ca53a95 100644
--- a/test/workers/repository/index.spec.js
+++ b/test/workers/repository/index.spec.js
@@ -48,7 +48,7 @@ describe('workers/repository', () => {
       apis.detectPackageFiles = jest.fn();
       apis.resolvePackageFiles = jest.fn(input => input);
       apis.checkMonorepos = jest.fn(input => input);
-      onboarding.getOnboardingStatus = jest.fn();
+      onboarding.getOnboardingStatus = jest.fn(input => input);
       onboarding.ensurePr = jest.fn();
       upgrades.determineRepoUpgrades = jest.fn(() => []);
       upgrades.branchifyUpgrades = jest.fn(() => ({ branchUpgrades: {} }));
@@ -177,7 +177,10 @@ describe('workers/repository', () => {
     it('calls branchWorker', async () => {
       config.packageFiles = ['package.json'];
       config.hasRenovateJson = true;
-      onboarding.getOnboardingStatus.mockReturnValueOnce(true);
+      onboarding.getOnboardingStatus.mockImplementation(input => ({
+        ...input,
+        repoIsOnboarded: true,
+      }));
       upgrades.branchifyUpgrades.mockReturnValueOnce({
         upgrades: [{}, {}, {}],
       });
@@ -188,7 +191,10 @@ describe('workers/repository', () => {
     it('skips branchWorker after automerging', async () => {
       config.packageFiles = ['package.json'];
       config.hasRenovateJson = true;
-      onboarding.getOnboardingStatus.mockReturnValue(true);
+      onboarding.getOnboardingStatus.mockImplementation(input => ({
+        ...input,
+        repoIsOnboarded: true,
+      }));
       upgrades.branchifyUpgrades.mockReturnValueOnce({
         upgrades: [{}, {}, {}],
       });
@@ -210,7 +216,10 @@ describe('workers/repository', () => {
     it('stops branchWorker after lockFileError', async () => {
       config.packageFiles = ['package.json'];
       config.hasRenovateJson = true;
-      onboarding.getOnboardingStatus.mockReturnValue(true);
+      onboarding.getOnboardingStatus.mockImplementation(input => ({
+        ...input,
+        repoIsOnboarded: true,
+      }));
       upgrades.branchifyUpgrades.mockReturnValueOnce({
         upgrades: [{}, {}, {}],
       });
@@ -223,7 +232,10 @@ describe('workers/repository', () => {
     it('stops branchWorker after pin', async () => {
       config.packageFiles = ['package.json'];
       config.hasRenovateJson = true;
-      onboarding.getOnboardingStatus.mockReturnValue(true);
+      onboarding.getOnboardingStatus.mockImplementation(input => ({
+        ...input,
+        repoIsOnboarded: true,
+      }));
       upgrades.branchifyUpgrades.mockReturnValueOnce({
         upgrades: [{ type: 'pin' }, {}, {}],
       });
diff --git a/test/workers/repository/onboarding.spec.js b/test/workers/repository/onboarding.spec.js
index 10cb9b43ada75d2700cd07a8dc779a6bbc415c15..8b432bacf3ec5e6672cdc4173cd315d39a83a18b 100644
--- a/test/workers/repository/onboarding.spec.js
+++ b/test/workers/repository/onboarding.spec.js
@@ -238,21 +238,21 @@ describe('lib/workers/repository/onboarding', () => {
     it('returns true if onboarding is false', async () => {
       config.onboarding = false;
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(true);
+      expect(res.repoIsOnboarded).toEqual(true);
       expect(config.api.findPr.mock.calls.length).toBe(0);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
     it('returns true if renovate config present', async () => {
       config.renovateJsonPresent = true;
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(true);
+      expect(res.repoIsOnboarded).toEqual(true);
       expect(config.api.findPr.mock.calls.length).toBe(0);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
     it('returns true if pr and pr is closed', async () => {
       config.api.findPr.mockReturnValueOnce({ isClosed: true });
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(true);
+      expect(res.repoIsOnboarded).toEqual(true);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
@@ -260,7 +260,7 @@ describe('lib/workers/repository/onboarding', () => {
       config.api.findPr.mockReturnValueOnce({});
       config.api.getPr.mockReturnValueOnce({ canRebase: true });
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1);
     });
@@ -268,13 +268,13 @@ describe('lib/workers/repository/onboarding', () => {
       config.api.findPr.mockReturnValueOnce({});
       config.api.getPr.mockReturnValueOnce({ canRebase: false });
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
     it('commits files and returns false if no pr', async () => {
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot();
@@ -282,7 +282,7 @@ describe('lib/workers/repository/onboarding', () => {
     it('pins private repos', async () => {
       onboarding.isRepoPrivate.mockReturnValueOnce(true);
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot();
@@ -290,7 +290,7 @@ describe('lib/workers/repository/onboarding', () => {
     it('commits files if existing content does not match', async () => {
       config.api.getFileContent.mockReturnValueOnce('some-different-content');
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot();
@@ -299,7 +299,7 @@ describe('lib/workers/repository/onboarding', () => {
       const existingContent = `{\n  "extends": ["config:js-lib"]\n}\n`;
       config.api.getFileContent.mockReturnValueOnce(existingContent);
       const res = await onboarding.getOnboardingStatus(config);
-      expect(res).toEqual(false);
+      expect(res.repoIsOnboarded).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });