diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index ec45d23f9c20e3cf2e6ef6e700bd219dfbc8c21e..1fd1401c97710dbdea07ec74b1ce719357c2047d 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -305,7 +305,7 @@ const options: RenovateOptions[] = [
     description: 'Configuration to use in onboarding PRs',
     stage: 'repository',
     type: 'object',
-    default: {},
+    default: { $schema: 'https://docs.renovatebot.com/renovate-schema.json' },
     admin: true,
     mergeable: true,
   },
diff --git a/test/workers/repository/onboarding/branch/__snapshots__/index.spec.ts.snap b/test/workers/repository/onboarding/branch/__snapshots__/index.spec.ts.snap
index c7ea67e145aaf8905e65570a40c8ed343d83aea7..abf19bd7c5faeb768194f54283e852e22d2dedfb 100644
--- a/test/workers/repository/onboarding/branch/__snapshots__/index.spec.ts.snap
+++ b/test/workers/repository/onboarding/branch/__snapshots__/index.spec.ts.snap
@@ -2,6 +2,7 @@
 
 exports[`workers/repository/onboarding/branch checkOnboardingBranch creates onboarding branch with greenkeeper migration 1`] = `
 "{
+  \\"$schema\\": \\"https://docs.renovatebot.com/renovate-schema.json\\",
   \\"statusCheckVerify\\": true,
   \\"labels\\": [
     \\"renovate\\"
@@ -14,3 +15,10 @@ exports[`workers/repository/onboarding/branch checkOnboardingBranch creates onbo
 }
 "
 `;
+
+exports[`workers/repository/onboarding/branch checkOnboardingBranch has default onboarding config 1`] = `
+"{
+  \\"$schema\\": \\"https://docs.renovatebot.com/renovate-schema.json\\"
+}
+"
+`;
diff --git a/test/workers/repository/onboarding/branch/index.spec.ts b/test/workers/repository/onboarding/branch/index.spec.ts
index cb7073bc41c44e41a842f3f32250c6f779716346..9e7e5eae4386c13166964010f6a51438e11de9e1 100644
--- a/test/workers/repository/onboarding/branch/index.spec.ts
+++ b/test/workers/repository/onboarding/branch/index.spec.ts
@@ -20,6 +20,14 @@ describe('workers/repository/onboarding/branch', () => {
       config.isFork = true;
       await expect(checkOnboardingBranch(config)).rejects.toThrow();
     });
+    it('has default onboarding config', async () => {
+      platform.getFileList.mockResolvedValue(['package.json']);
+      platform.getFile.mockResolvedValue('{}');
+      await checkOnboardingBranch(config);
+      expect(
+        platform.commitFilesToBranch.mock.calls[0][0].files[0].contents
+      ).toMatchSnapshot();
+    });
     it('handles skipped onboarding combined with requireConfig = false', async () => {
       config.requireConfig = false;
       config.onboarding = false;