diff --git a/lib/workers/repository/onboarding/pr/index.spec.ts b/lib/workers/repository/onboarding/pr/index.spec.ts
index b9a29bbbdc5c78ecc5646419dd0c59780f5a98a4..ba26fbbfaf414a707c5f7bccc22018d0ae109066 100644
--- a/lib/workers/repository/onboarding/pr/index.spec.ts
+++ b/lib/workers/repository/onboarding/pr/index.spec.ts
@@ -77,6 +77,23 @@ describe('workers/repository/onboarding/pr/index', () => {
       expect(platform.createPr).toHaveBeenCalledTimes(1);
     });
 
+    it('creates semantic PR', async () => {
+      await ensureOnboardingPr(
+        {
+          ...config,
+          semanticCommitType: undefined, // should default to "chore"
+          semanticCommits: 'enabled',
+        },
+        packageFiles,
+        branches,
+      );
+      expect(platform.createPr).toHaveBeenCalledWith(
+        expect.objectContaining({
+          prTitle: 'chore: Configure Renovate',
+        }),
+      );
+    });
+
     it('creates PR with labels', async () => {
       await ensureOnboardingPr(
         {
diff --git a/lib/workers/repository/onboarding/pr/index.ts b/lib/workers/repository/onboarding/pr/index.ts
index 3d36e5d5775d7ff67e6f9035b5270c5b7c0f08c2..adfddab3ea9288a350891c567a002a5cdd885f35 100644
--- a/lib/workers/repository/onboarding/pr/index.ts
+++ b/lib/workers/repository/onboarding/pr/index.ts
@@ -173,10 +173,16 @@ If you need any further assistance then you can also [request help here](${
       logger.info('DRY-RUN: Would create onboarding PR');
     } else {
       // TODO #22198
+      const prTitle =
+        config.semanticCommits === 'enabled'
+          ? `${config.semanticCommitType ?? 'chore'}: ${
+              config.onboardingPrTitle
+            }`
+          : config.onboardingPrTitle!;
       const pr = await platform.createPr({
         sourceBranch: config.onboardingBranch!,
         targetBranch: config.defaultBranch!,
-        prTitle: config.onboardingPrTitle!,
+        prTitle,
         prBody,
         labels,
         platformOptions: getPlatformPrOptions({