diff --git a/lib/config/index.ts b/lib/config/index.ts
index 076ef08bae98f1383670ce28b69642a9af5eaea0..886b0a688842fa2a847f86474b595db12792bc08 100644
--- a/lib/config/index.ts
+++ b/lib/config/index.ts
@@ -1,7 +1,12 @@
 import { logger } from '../logger';
 import { get, getLanguageList, getManagerList } from '../modules/manager';
 import * as options from './options';
-import type { AllConfig, RenovateConfig, RenovateConfigStage } from './types';
+import type {
+  AllConfig,
+  ManagerConfig,
+  RenovateConfig,
+  RenovateConfigStage,
+} from './types';
 import { mergeChildConfig } from './utils';
 
 export { mergeChildConfig };
@@ -9,24 +14,23 @@ export { mergeChildConfig };
 export function getManagerConfig(
   config: RenovateConfig,
   manager: string
-): RenovateConfig {
-  let managerConfig: RenovateConfig = {
+): ManagerConfig {
+  let managerConfig: ManagerConfig = {
     ...config,
     language: null,
-    manager: null,
+    manager,
   };
   const language = get(manager, 'language');
   if (language) {
     // TODO: fix types #7154
     managerConfig = mergeChildConfig(managerConfig, config[language] as any);
+    managerConfig.language = language;
   }
   // TODO: fix types #7154
   managerConfig = mergeChildConfig(managerConfig, config[manager] as any);
   for (const i of getLanguageList().concat(getManagerList())) {
     delete managerConfig[i];
   }
-  managerConfig.language = language;
-  managerConfig.manager = manager;
   return managerConfig;
 }
 
diff --git a/lib/config/types.ts b/lib/config/types.ts
index 7b97a44377f1e2d8e402436db07dd9136c4c9bac..2c58466bd75976ba71a274e42412963e3b3966a3 100644
--- a/lib/config/types.ts
+++ b/lib/config/types.ts
@@ -1,5 +1,6 @@
 import type { LogLevel } from 'bunyan';
 import type { Range } from 'semver';
+import type { ExtractConfig } from '../modules/manager/types';
 import type { HostRule } from '../types';
 import type { GitNoVerifyOption } from '../util/git/types';
 
@@ -429,6 +430,17 @@ export interface MigratedRenovateConfig extends RenovateConfig {
   gradle?: RenovateConfig;
 }
 
+export interface ManagerConfig extends RenovateConfig {
+  manager: string;
+  language?: string | null;
+}
+
+export interface WorkerExtractConfig extends ExtractConfig {
+  manager: string;
+  enabled?: boolean;
+  fileList: string[];
+}
+
 export interface ValidationResult {
   errors: ValidationMessage[];
   warnings: ValidationMessage[];
diff --git a/lib/modules/manager/index.spec.ts b/lib/modules/manager/index.spec.ts
index dac8175de31371e207c06a765485627a3867d44b..1c646ff8f237ba99c9cda8938bcec39c50b2b7e6 100644
--- a/lib/modules/manager/index.spec.ts
+++ b/lib/modules/manager/index.spec.ts
@@ -109,8 +109,12 @@ describe('modules/manager/index', () => {
         defaultConfig: {},
         supportedDatasources: [],
       });
-      expect(manager.extractPackageFile('unknown', null)).toBeNull();
-      expect(manager.extractPackageFile('dummy', null)).toBeNull();
+      expect(
+        manager.extractPackageFile('unknown', null, 'filename', {})
+      ).toBeNull();
+      expect(
+        manager.extractPackageFile('dummy', null, 'filename', {})
+      ).toBeNull();
     });
 
     it('returns non-null', () => {
@@ -120,7 +124,9 @@ describe('modules/manager/index', () => {
         extractPackageFile: () => Promise.resolve({ deps: [] }),
       });
 
-      expect(manager.extractPackageFile('dummy', null)).not.toBeNull();
+      expect(
+        manager.extractPackageFile('dummy', null, 'filename', {})
+      ).not.toBeNull();
     });
 
     afterEach(() => {
diff --git a/lib/modules/manager/index.ts b/lib/modules/manager/index.ts
index 08e5eae3560d9d01564ee6bfecf251dd9e00e510..e8ee94bbaf050061dafc3575e325a22cfb0653e1 100644
--- a/lib/modules/manager/index.ts
+++ b/lib/modules/manager/index.ts
@@ -59,8 +59,8 @@ export async function extractAllPackageFiles(
 export function extractPackageFile(
   manager: string,
   content: string,
-  fileName?: string,
-  config?: ExtractConfig
+  fileName: string,
+  config: ExtractConfig
 ): Result<PackageFile | null> {
   if (!managers.has(manager)) {
     return null;
diff --git a/lib/modules/manager/types.ts b/lib/modules/manager/types.ts
index 0a4f314fad4ecaa2a967a0e45b3952d15bf92e9a..6592cd67205dc012e750df1fb3846398d3aa6113 100644
--- a/lib/modules/manager/types.ts
+++ b/lib/modules/manager/types.ts
@@ -15,10 +15,8 @@ export interface ManagerData<T> {
 }
 
 export interface ExtractConfig {
-  constraints?: Record<string, string>;
   registryUrls?: string[];
   endpoint?: string;
-  gradle?: { timeout?: number };
   aliases?: Record<string, string>;
   npmrc?: string;
   npmrcMerge?: boolean;
diff --git a/lib/workers/repository/extract/index.ts b/lib/workers/repository/extract/index.ts
index a231d7cfa48aa1541a54e95f50effb03abf3d707..de496dc5dbb4ffb2d7697defe6088b1876de70d2 100644
--- a/lib/workers/repository/extract/index.ts
+++ b/lib/workers/repository/extract/index.ts
@@ -1,6 +1,10 @@
 import is from '@sindresorhus/is';
 import { getManagerConfig, mergeChildConfig } from '../../../config';
-import type { RenovateConfig } from '../../../config/types';
+import type {
+  ManagerConfig,
+  RenovateConfig,
+  WorkerExtractConfig,
+} from '../../../config/types';
 import { logger } from '../../../logger';
 import { getManagerList } from '../../../modules/manager';
 import type { PackageFile } from '../../../modules/manager/types';
@@ -18,13 +22,13 @@ export async function extractAllDependencies(
       config.enabledManagers.includes(manager)
     );
   }
-  const extractList: RenovateConfig[] = [];
+  const extractList: WorkerExtractConfig[] = [];
   const fileList = await getFileList();
 
-  const tryConfig = (extractConfig: RenovateConfig): void => {
-    const matchingFileList = getMatchingFiles(extractConfig, fileList);
+  const tryConfig = (managerConfig: ManagerConfig): void => {
+    const matchingFileList = getMatchingFiles(managerConfig, fileList);
     if (matchingFileList.length) {
-      extractList.push({ ...extractConfig, fileList: matchingFileList });
+      extractList.push({ ...managerConfig, fileList: matchingFileList });
     }
   };
 
diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts
index 66105a6b84f6cf8d006aaa3ea83ab202bf929ff0..e448bb9c3b411edf90768c3d4cb5950238193049 100644
--- a/lib/workers/repository/extract/manager-files.spec.ts
+++ b/lib/workers/repository/extract/manager-files.spec.ts
@@ -21,20 +21,24 @@ describe('workers/repository/extract/manager-files', () => {
     });
 
     it('returns empty of manager is disabled', async () => {
-      const managerConfig = { manager: 'travis', enabled: false };
+      const managerConfig = { manager: 'travis', enabled: false, fileList: [] };
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
     });
 
     it('returns empty of manager is not enabled', async () => {
       config.enabledManagers = ['npm'];
-      const managerConfig = { manager: 'docker', enabled: true };
+      const managerConfig = { manager: 'docker', enabled: true, fileList: [] };
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
     });
 
     it('skips files if null content returned', async () => {
-      const managerConfig = { manager: 'npm', enabled: true };
+      const managerConfig = {
+        manager: 'npm',
+        fileList: [],
+        enabled: true,
+      };
       fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts
index 53025a39f85de9e1e55f672b0a95162217b4fb49..2b6549ba7b96b0bae3f3e8ce8da39589d1d572bf 100644
--- a/lib/workers/repository/extract/manager-files.ts
+++ b/lib/workers/repository/extract/manager-files.ts
@@ -1,5 +1,5 @@
 import is from '@sindresorhus/is';
-import type { RenovateConfig } from '../../../config/types';
+import type { WorkerExtractConfig } from '../../../config/types';
 import { logger } from '../../../logger';
 import {
   extractAllPackageFiles,
@@ -10,7 +10,7 @@ import type { PackageFile } from '../../../modules/manager/types';
 import { readLocalFile } from '../../../util/fs';
 
 export async function getManagerPackageFiles(
-  config: RenovateConfig
+  config: WorkerExtractConfig
 ): Promise<PackageFile[]> {
   const { enabled, manager, fileList } = config;
   logger.trace(`getPackageFiles(${manager})`);
diff --git a/lib/workers/repository/onboarding/pr/pr-list.spec.ts b/lib/workers/repository/onboarding/pr/pr-list.spec.ts
index 2300c3cfae78c5fb58db058f19c63865804ef93d..915990175f5b19cf76fcc43394149c6754c4e359 100644
--- a/lib/workers/repository/onboarding/pr/pr-list.spec.ts
+++ b/lib/workers/repository/onboarding/pr/pr-list.spec.ts
@@ -29,8 +29,10 @@ describe('workers/repository/onboarding/pr/pr-list', () => {
           prTitle: 'Lock file maintenance',
           schedule: ['before 5am'],
           branchName: 'renovate/lock-file-maintenance',
+          manager: 'some-manager',
           upgrades: [
             {
+              manager: 'some-manager',
               updateType: 'lockFileMaintenance',
             } as never,
           ],
@@ -62,8 +64,10 @@ describe('workers/repository/onboarding/pr/pr-list', () => {
           prTitle: 'Pin dependencies',
           baseBranch: 'some-other',
           branchName: 'renovate/pin-dependencies',
+          manager: 'some-manager',
           upgrades: [
             {
+              manager: 'some-manager',
               updateType: 'pin',
               sourceUrl: 'https://a',
               depName: 'a',
@@ -71,6 +75,7 @@ describe('workers/repository/onboarding/pr/pr-list', () => {
               newValue: '1.1.0',
             },
             {
+              manager: 'some-manager',
               updateType: 'pin',
               depName: 'b',
               newValue: '1.5.3',
@@ -80,8 +85,10 @@ describe('workers/repository/onboarding/pr/pr-list', () => {
         {
           prTitle: 'Update a to v2',
           branchName: 'renovate/a-2.x',
+          manager: 'some-manager',
           upgrades: [
             {
+              manager: 'some-manager',
               sourceUrl: 'https://a',
               depName: 'a',
               currentValue: '^1.0.0',
diff --git a/lib/workers/repository/process/extract-update.spec.ts b/lib/workers/repository/process/extract-update.spec.ts
index a76f3cf003de6c48914c692d564df5447fe4ae15..8483f13d5ad2ffee19597b4d9d5f6efcd597b496 100644
--- a/lib/workers/repository/process/extract-update.spec.ts
+++ b/lib/workers/repository/process/extract-update.spec.ts
@@ -17,7 +17,9 @@ const branchify = mocked(_branchify);
 const repositoryCache = mocked(_repositoryCache);
 
 branchify.branchifyUpgrades.mockResolvedValueOnce({
-  branches: [{ branchName: 'some-branch', upgrades: [] }],
+  branches: [
+    { manager: 'some-manager', branchName: 'some-branch', upgrades: [] },
+  ],
   branchList: ['branchName'],
 });
 
@@ -37,6 +39,7 @@ describe('workers/repository/process/extract-update', () => {
         branches: [
           {
             branchName: 'some-branch',
+            manager: 'some-manager',
             upgrades: [],
           },
         ],
diff --git a/lib/workers/repository/update/branch/artifacts.spec.ts b/lib/workers/repository/update/branch/artifacts.spec.ts
index 17d4103e500d1d5429d21e340555419e0c73db5d..efbff23b668b6c675ad94cff46dae1cf0677f5d5 100644
--- a/lib/workers/repository/update/branch/artifacts.spec.ts
+++ b/lib/workers/repository/update/branch/artifacts.spec.ts
@@ -12,6 +12,7 @@ describe('workers/repository/update/branch/artifacts', () => {
     jest.resetAllMocks();
     config = {
       ...getConfig(),
+      manager: 'some-manager',
       branchName: 'renovate/pin',
       upgrades: [],
       artifactErrors: [{ lockFile: 'some' }],
diff --git a/lib/workers/repository/update/branch/execute-post-upgrade-commands.spec.ts b/lib/workers/repository/update/branch/execute-post-upgrade-commands.spec.ts
index 1ff65b234d126bd361501a10128857e656a87160..00a12a45ceb598e7012fb9236a69fdea423cc427 100644
--- a/lib/workers/repository/update/branch/execute-post-upgrade-commands.spec.ts
+++ b/lib/workers/repository/update/branch/execute-post-upgrade-commands.spec.ts
@@ -12,6 +12,7 @@ describe('workers/repository/update/branch/execute-post-upgrade-commands', () =>
     it('handles an artifact which is a directory', async () => {
       const commands: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           branchName: 'main',
           postUpgradeTasks: {
             executionMode: 'update',
@@ -20,6 +21,7 @@ describe('workers/repository/update/branch/execute-post-upgrade-commands', () =>
         },
       ];
       const config: BranchConfig = {
+        manager: 'some-manager',
         updatedPackageFiles: [],
         updatedArtifacts: [
           { type: 'addition', path: 'some-existing-dir', contents: '' },
diff --git a/lib/workers/repository/update/branch/execute-post-upgrade-commands.ts b/lib/workers/repository/update/branch/execute-post-upgrade-commands.ts
index 10a3584049d801b8221101b19a60604f7f7e1382..f79916b6a7b157fed7f1062cdecd8f351e94894e 100644
--- a/lib/workers/repository/update/branch/execute-post-upgrade-commands.ts
+++ b/lib/workers/repository/update/branch/execute-post-upgrade-commands.ts
@@ -169,6 +169,7 @@ export default async function executePostUpgradeCommands(
 
   const branchUpgradeCommands: BranchUpgradeConfig[] = [
     {
+      manager: config.manager,
       depName: config.upgrades.map(({ depName }) => depName).join(' '),
       branchName: config.branchName,
       postUpgradeTasks:
diff --git a/lib/workers/repository/update/branch/reuse.spec.ts b/lib/workers/repository/update/branch/reuse.spec.ts
index ceda5f86b94681a4381576b3bd7b2f947f2115fc..63d540061c16740b6b696d8f5b91912de1568a27 100644
--- a/lib/workers/repository/update/branch/reuse.spec.ts
+++ b/lib/workers/repository/update/branch/reuse.spec.ts
@@ -18,6 +18,7 @@ describe('workers/repository/update/branch/reuse', () => {
 
     beforeEach(() => {
       config = {
+        manager: 'some-manager',
         branchName: 'renovate/some-branch',
         rebaseLabel: 'rebase',
         rebaseWhen: 'behind-base-branch',
@@ -50,16 +51,19 @@ describe('workers/repository/update/branch/reuse', () => {
     it('returns false if does not need rebasing but has upgrades that need lockfile maintenance along with upgrades that do not', async () => {
       config.upgrades = [
         {
+          manager: 'some-manager',
           packageFile: 'package.json',
           rangeStrategy: 'replace',
           branchName: 'current',
         },
         {
+          manager: 'some-manager',
           packageFile: 'package.json',
           rangeStrategy: 'update-lockfile',
           branchName: 'current',
         },
         {
+          manager: 'some-manager',
           packageFile: 'package.json',
           rangeStrategy: 'in-range-only',
           branchName: 'current',
@@ -75,11 +79,13 @@ describe('workers/repository/update/branch/reuse', () => {
     it('returns true if does not need rebasing and lockfile update is on different packages', async () => {
       config.upgrades = [
         {
+          manager: 'some-manager',
           packageFile: 'package.json',
           rangeStrategy: 'replace',
           branchName: 'current',
         },
         {
+          manager: 'some-manager',
           packageFile: 'subpackage/package.json',
           rangeStrategy: 'update-lockfile',
           branchName: 'current',
diff --git a/lib/workers/repository/update/pr/body/changelogs.spec.ts b/lib/workers/repository/update/pr/body/changelogs.spec.ts
index cec36e1f7d26d3373c2802027a2f4a6ed5b71493..bfefb10bc4d4c1e65ea11308d05f28058152cb0d 100644
--- a/lib/workers/repository/update/pr/body/changelogs.spec.ts
+++ b/lib/workers/repository/update/pr/body/changelogs.spec.ts
@@ -12,6 +12,7 @@ describe('workers/repository/update/pr/body/changelogs', () => {
 
   it('returns empty string when there is no release notes', () => {
     const res = getChangelogs({
+      manager: 'some-manager',
       branchName: 'some-branch',
       upgrades: [],
       hasReleaseNotes: false,
@@ -33,26 +34,31 @@ describe('workers/repository/update/pr/body/changelogs', () => {
 
     const res = getChangelogs({
       branchName: 'some-branch',
+      manager: 'some-manager',
       upgrades: [
         {
+          manager: 'some-manager',
           depName: 'dep-1',
           repoName: 'some/repo',
           branchName: 'some-branch',
           hasReleaseNotes: true,
         },
         {
+          manager: 'some-manager',
           depName: 'dep-2',
           repoName: 'some/repo',
           branchName: 'some-branch',
           hasReleaseNotes: true,
         },
         {
+          manager: 'some-manager',
           depName: 'dep-3',
           repoName: 'some/repo',
           branchName: 'some-branch',
           hasReleaseNotes: true,
         },
         {
+          manager: 'some-manager',
           depName: 'dep-4',
           repoName: 'other/repo',
           branchName: 'some-branch',
diff --git a/lib/workers/repository/update/pr/body/config-description.spec.ts b/lib/workers/repository/update/pr/body/config-description.spec.ts
index 2d77a24a0a7af892927ed2503959ded187cb7967..0a9b491835d692a99657b066a24ee8fc87018032 100644
--- a/lib/workers/repository/update/pr/body/config-description.spec.ts
+++ b/lib/workers/repository/update/pr/body/config-description.spec.ts
@@ -10,6 +10,7 @@ const checks = mocked(_checks);
 describe('workers/repository/update/pr/body/config-description', () => {
   describe('getPrConfigDescription', () => {
     const config: BranchConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       upgrades: [],
     };
diff --git a/lib/workers/repository/update/pr/body/footer.spec.ts b/lib/workers/repository/update/pr/body/footer.spec.ts
index e9464491e1a73e8fa73c753a112621b2db6f0dc8..51c1ec24e2e6e899d2987cf2f649a812533be46f 100644
--- a/lib/workers/repository/update/pr/body/footer.spec.ts
+++ b/lib/workers/repository/update/pr/body/footer.spec.ts
@@ -11,13 +11,24 @@ describe('workers/repository/update/pr/body/footer', () => {
   });
 
   it('renders empty footer', () => {
-    expect(getPrFooter({ branchName: 'branch', upgrades: [] })).toBe('');
+    expect(
+      getPrFooter({
+        manager: 'some-manager',
+        branchName: 'branch',
+        upgrades: [],
+      })
+    ).toBe('');
   });
 
   it('renders prFooter', () => {
     template.compile.mockImplementation((x) => x);
     expect(
-      getPrFooter({ branchName: 'branch', upgrades: [], prFooter: 'FOOTER' })
+      getPrFooter({
+        manager: 'some-manager',
+        branchName: 'branch',
+        upgrades: [],
+        prFooter: 'FOOTER',
+      })
     ).toMatchInlineSnapshot(`
       "
       ---
diff --git a/lib/workers/repository/update/pr/body/header.spec.ts b/lib/workers/repository/update/pr/body/header.spec.ts
index dbdcc2f5690c39ac4bbe53d313389ef2f3ff4c6d..85f43a824ab23b9f1b3a36b6e1eee9a03fcc899c 100644
--- a/lib/workers/repository/update/pr/body/header.spec.ts
+++ b/lib/workers/repository/update/pr/body/header.spec.ts
@@ -11,13 +11,24 @@ describe('workers/repository/update/pr/body/header', () => {
   });
 
   it('renders empty header', () => {
-    expect(getPrHeader({ branchName: 'branch', upgrades: [] })).toBe('');
+    expect(
+      getPrHeader({
+        manager: 'some-manager',
+        branchName: 'branch',
+        upgrades: [],
+      })
+    ).toBe('');
   });
 
   it('renders prHeader', () => {
     template.compile.mockImplementation((x) => x);
     expect(
-      getPrHeader({ branchName: 'branch', upgrades: [], prHeader: 'HEADER' })
+      getPrHeader({
+        manager: 'some-manager',
+        branchName: 'branch',
+        upgrades: [],
+        prHeader: 'HEADER',
+      })
     ).toMatchInlineSnapshot(`
       "HEADER
 
diff --git a/lib/workers/repository/update/pr/body/index.spec.ts b/lib/workers/repository/update/pr/body/index.spec.ts
index d5ffd31bcfd9b5605ef550e096e4662291d316a7..cfca7adc46a4c665a6eccc44bb4b25dc3ace3be2 100644
--- a/lib/workers/repository/update/pr/body/index.spec.ts
+++ b/lib/workers/repository/update/pr/body/index.spec.ts
@@ -49,12 +49,17 @@ describe('workers/repository/update/pr/body/index', () => {
     });
 
     it('handles empty template', async () => {
-      const res = await getPrBody({ branchName: 'some-branch', upgrades: [] });
+      const res = await getPrBody({
+        manager: 'some-manager',
+        branchName: 'some-branch',
+        upgrades: [],
+      });
       expect(res).toBeEmptyString();
     });
 
     it('massages upgrades', async () => {
       const upgrade = {
+        manager: 'some-manager',
         branchName: 'some-branch',
         dependencyUrl: 'https://github.com/foo/bar',
         sourceUrl: 'https://github.com/foo/bar.git',
@@ -64,7 +69,11 @@ describe('workers/repository/update/pr/body/index', () => {
         homepage: 'https://example.com',
       };
 
-      await getPrBody({ branchName: 'some-branch', upgrades: [upgrade] });
+      await getPrBody({
+        manager: 'some-manager',
+        branchName: 'some-branch',
+        upgrades: [upgrade],
+      });
 
       expect(upgrade).toMatchObject({
         branchName: 'some-branch',
@@ -83,11 +92,16 @@ describe('workers/repository/update/pr/body/index', () => {
 
     it('uses dependencyUrl as primary link', async () => {
       const upgrade = {
+        manager: 'some-manager',
         branchName: 'some-branch',
         dependencyUrl: 'https://github.com/foo/bar',
       };
 
-      await getPrBody({ branchName: 'some-branch', upgrades: [upgrade] });
+      await getPrBody({
+        manager: 'some-manager',
+        branchName: 'some-branch',
+        upgrades: [upgrade],
+      });
 
       expect(upgrade).toMatchObject({
         branchName: 'some-branch',
@@ -101,6 +115,7 @@ describe('workers/repository/update/pr/body/index', () => {
       platform.massageMarkdown.mockImplementation((x) => x);
       template.compile.mockImplementation((x) => x);
       const res = await getPrBody({
+        manager: 'some-manager',
         branchName: 'some-branch',
         upgrades: [],
         prBodyTemplate: 'PR BODY',
@@ -113,6 +128,7 @@ describe('workers/repository/update/pr/body/index', () => {
       template.compile.mockImplementation((x) => x);
       const res = await getPrBody(
         {
+          manager: 'some-manager',
           branchName: 'some-branch',
           upgrades: [],
           prBodyTemplate: ['aaa', '**Rebasing**: FOO', 'bbb'].join('\n'),
diff --git a/lib/workers/repository/update/pr/body/notes.spec.ts b/lib/workers/repository/update/pr/body/notes.spec.ts
index 0d74852cc40e0fa5833930986c55bd9ce4bde405..47a9f672a547de4501fd76d6bed1d0ea347e19c5 100644
--- a/lib/workers/repository/update/pr/body/notes.spec.ts
+++ b/lib/workers/repository/update/pr/body/notes.spec.ts
@@ -13,8 +13,15 @@ describe('workers/repository/update/pr/body/notes', () => {
   it('renders notes', () => {
     template.compile.mockImplementation((x) => x);
     const res = getPrNotes({
+      manager: 'some-manager',
       branchName: 'branch',
-      upgrades: [{ branchName: 'branch', prBodyNotes: ['NOTE'] }],
+      upgrades: [
+        {
+          manager: 'some-manager',
+          branchName: 'branch',
+          prBodyNotes: ['NOTE'],
+        },
+      ],
     });
     expect(res).toContain('NOTE');
   });
@@ -24,16 +31,26 @@ describe('workers/repository/update/pr/body/notes', () => {
       throw new Error('unknown');
     });
     const res = getPrNotes({
+      manager: 'some-manager',
       branchName: 'branch',
-      upgrades: [{ branchName: 'branch', prBodyNotes: ['NOTE'] }],
+      upgrades: [
+        {
+          manager: 'some-manager',
+          branchName: 'branch',
+          prBodyNotes: ['NOTE'],
+        },
+      ],
     });
     expect(res).not.toContain('NOTE');
   });
 
   it('handles extra notes', () => {
     const res = getPrExtraNotes({
+      manager: 'some-manager',
       branchName: 'branch',
-      upgrades: [{ branchName: 'branch', gitRef: true }],
+      upgrades: [
+        { manager: 'some-manager', branchName: 'branch', gitRef: true },
+      ],
       updateType: 'lockFileMaintenance',
       isPin: true,
     });
diff --git a/lib/workers/repository/update/pr/body/updates-table.spec.ts b/lib/workers/repository/update/pr/body/updates-table.spec.ts
index 8e6089a98796177d5b31032ec85587c9c9244819..f2ee613cfb5499f48761517ee43412c5d2ceb76e 100644
--- a/lib/workers/repository/update/pr/body/updates-table.spec.ts
+++ b/lib/workers/repository/update/pr/body/updates-table.spec.ts
@@ -4,6 +4,7 @@ import { getPrUpdatesTable } from './updates-table';
 describe('workers/repository/update/pr/body/updates-table', () => {
   it('checks a case where prBodyColumns are undefined', () => {
     const configObj: BranchConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       upgrades: [],
       prBodyColumns: undefined,
@@ -14,6 +15,7 @@ describe('workers/repository/update/pr/body/updates-table', () => {
 
   it('checks results for getPrUpdatesTable', () => {
     const upgrade0: BranchUpgradeConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       prBodyDefinitions: {
         Package: '{{{depNameLinked}}}',
@@ -30,6 +32,7 @@ describe('workers/repository/update/pr/body/updates-table', () => {
     };
 
     const upgrade1: BranchUpgradeConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       prBodyDefinitions: {
         Package: '{{{depNameLinked}}}',
@@ -56,6 +59,7 @@ describe('workers/repository/update/pr/body/updates-table', () => {
     };
 
     const upgrade2: BranchUpgradeConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       prBodyDefinitions: {
         Package: '{{{depNameLinked}}}',
@@ -83,6 +87,7 @@ describe('workers/repository/update/pr/body/updates-table', () => {
     };
     const upgrade3: BranchUpgradeConfig = undefined;
     const configObj: BranchConfig = {
+      manager: 'some-manager',
       branchName: 'some-branch',
       upgrades: [upgrade0, upgrade1, upgrade2, upgrade3],
       prBodyColumns: ['Package', 'Type', 'Update', 'Change', 'Pending'],
diff --git a/lib/workers/repository/update/pr/changelog/github.spec.ts b/lib/workers/repository/update/pr/changelog/github.spec.ts
index 77074ea4b63cfa76a2b4c7f31d45fcd64ded89e5..0b36cb106f70ea7ad654082a1372bfd595f6e6df 100644
--- a/lib/workers/repository/update/pr/changelog/github.spec.ts
+++ b/lib/workers/repository/update/pr/changelog/github.spec.ts
@@ -9,6 +9,7 @@ import { ChangeLogError, getChangeLogJSON } from '.';
 jest.mock('../../../../../modules/datasource/npm');
 
 const upgrade: BranchUpgradeConfig = {
+  manager: 'some-manager',
   branchName: undefined,
   depName: 'renovate',
   endpoint: 'https://api.github.com/',
@@ -307,6 +308,7 @@ describe('workers/repository/update/pr/changelog/github', () => {
         ]);
 
       const upgradeData: BranchUpgradeConfig = {
+        manager: 'some-manager',
         branchName: undefined,
         depName: 'correctPrefix/target',
         endpoint: 'https://api.github.com/',
diff --git a/lib/workers/repository/update/pr/changelog/gitlab.spec.ts b/lib/workers/repository/update/pr/changelog/gitlab.spec.ts
index 556fe39a853c68efd3d7dffd8d67da180d67878f..f8b7e89cde9837d24906f60fcba512032abe17fb 100644
--- a/lib/workers/repository/update/pr/changelog/gitlab.spec.ts
+++ b/lib/workers/repository/update/pr/changelog/gitlab.spec.ts
@@ -8,6 +8,7 @@ import { getChangeLogJSON } from '.';
 jest.mock('../../../../../modules/datasource/npm');
 
 const upgrade: BranchUpgradeConfig = {
+  manager: 'some-manager',
   branchName: undefined,
   endpoint: 'https://gitlab.com/api/v4/ ',
   depName: 'renovate',
diff --git a/lib/workers/repository/update/pr/index.spec.ts b/lib/workers/repository/update/pr/index.spec.ts
index eb0d70dcc90219c536352d5b266ad04466f55635..345301637b4f3fc28504b4fed1fcf9f019646d3a 100644
--- a/lib/workers/repository/update/pr/index.spec.ts
+++ b/lib/workers/repository/update/pr/index.spec.ts
@@ -57,6 +57,7 @@ describe('workers/repository/update/pr/index', () => {
     };
 
     const config: BranchConfig = {
+      manager: 'some-manager',
       branchName: sourceBranch,
       upgrades: [],
       prTitle,
diff --git a/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap b/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
index 51ebb4b08078373295ceba76c308946d3c781ebb..eb890680e9d6bd0e9276d6a08eda3b3e54feb0fd 100644
--- a/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
+++ b/lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
@@ -20,6 +20,7 @@ Object {
     "c",
     "b",
   ],
+  "manager": "some-manager",
   "newValue": "0.6.0",
   "prBodyColumns": Array [],
   "prTitle": "some-title",
@@ -38,6 +39,7 @@ Object {
         "a",
         "c",
       ],
+      "manager": "some-manager",
       "newValue": "0.6.0",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
@@ -55,6 +57,7 @@ Object {
         "a",
         "b",
       ],
+      "manager": "some-manager",
       "newValue": "1.0.0",
       "prTitle": "some-other-title",
       "prettyDepType": "dependency",
@@ -69,6 +72,7 @@ Object {
       "labels": Array [
         "a",
       ],
+      "manager": "some-manager",
       "newValue": "0.5.7",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
@@ -95,6 +99,7 @@ Object {
   "hasTypes": true,
   "isRange": false,
   "labels": Array [],
+  "manager": "some-manager",
   "newValue": "0.6.0",
   "prBodyColumns": Array [],
   "prTitle": "some-title",
@@ -113,6 +118,7 @@ Object {
       "displayPending": "",
       "displayTo": "0.6.0",
       "isRange": false,
+      "manager": "some-manager",
       "newValue": "0.6.0",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
@@ -128,6 +134,7 @@ Object {
       "displayPending": "",
       "displayTo": "1.0.0",
       "isRange": false,
+      "manager": "some-manager",
       "newValue": "1.0.0",
       "prTitle": "some-other-title",
       "prettyDepType": "dependency",
@@ -144,6 +151,7 @@ Object {
       "displayPending": "",
       "displayTo": "0.5.8",
       "isRange": false,
+      "manager": "some-manager",
       "newValue": "0.5.8",
       "newVersion": "0.5.8",
       "prTitle": "some-title",
@@ -167,6 +175,7 @@ Object {
   "displayTo": "",
   "isLockFileMaintenance": true,
   "labels": Array [],
+  "manager": "some-manager",
   "prBodyColumns": Array [],
   "prTitle": "some-title",
   "prettyDepType": "dependency",
@@ -180,6 +189,7 @@ Object {
       "displayPending": "",
       "displayTo": "",
       "isLockFileMaintenance": true,
+      "manager": "some-manager",
       "prTitle": "some-title",
       "prettyDepType": "dependency",
     },
@@ -205,6 +215,7 @@ Object {
   "isRange": false,
   "labels": Array [],
   "lockedVersion": "1.0.0",
+  "manager": "some-manager",
   "newValue": "^1.0.0",
   "newVersion": "1.0.1",
   "prBodyColumns": Array [],
@@ -224,6 +235,7 @@ Object {
       "isLockfileUpdate": true,
       "isRange": false,
       "lockedVersion": "1.0.0",
+      "manager": "some-manager",
       "newValue": "^1.0.0",
       "newVersion": "1.0.1",
       "prTitle": "some-title",
diff --git a/lib/workers/repository/updates/generate.spec.ts b/lib/workers/repository/updates/generate.spec.ts
index 5e3417ac5f2dbe5cbfd2f5bc0c5109c35e46c77c..25ded125464fbf6aa4b92d7695446901abab7a88 100644
--- a/lib/workers/repository/updates/generate.spec.ts
+++ b/lib/workers/repository/updates/generate.spec.ts
@@ -14,6 +14,7 @@ describe('workers/repository/updates/generate', () => {
     it('does not group single upgrade', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -34,6 +35,7 @@ describe('workers/repository/updates/generate', () => {
     it('handles lockFileMaintenance', () => {
       const branch = [
         {
+          manager: 'some-manager',
           branchName: 'some-branch',
           prTitle: 'some-title',
           isLockFileMaintenance: true,
@@ -57,6 +59,7 @@ describe('workers/repository/updates/generate', () => {
     it('handles lockFileUpdate', () => {
       const branch = [
         {
+          manager: 'some-manager',
           branchName: 'some-branch',
           prTitle: 'some-title',
           isLockfileUpdate: true,
@@ -96,6 +99,7 @@ describe('workers/repository/updates/generate', () => {
     it('does not group same upgrades', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -106,6 +110,7 @@ describe('workers/repository/updates/generate', () => {
           },
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -124,6 +129,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups multiple upgrades same version', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -143,6 +149,7 @@ describe('workers/repository/updates/generate', () => {
           },
         },
         {
+          manager: 'some-manager',
           depName: 'some-other-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -163,6 +170,7 @@ describe('workers/repository/updates/generate', () => {
           },
         },
         {
+          manager: 'some-manager',
           depName: 'another-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -193,6 +201,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups major updates with different versions but same newValue, no recreateClosed', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -206,6 +215,7 @@ describe('workers/repository/updates/generate', () => {
           newMajor: 5,
         },
         {
+          manager: 'some-manager',
           depName: 'some-other-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -227,6 +237,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups multiple upgrades different version', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'depB',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -242,6 +253,7 @@ describe('workers/repository/updates/generate', () => {
           releaseTimestamp: '2017-02-07T20:01:41+00:00',
         },
         {
+          manager: 'some-manager',
           depName: 'depA',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -268,6 +280,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups multiple upgrades different version but same value', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'depB',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -283,6 +296,7 @@ describe('workers/repository/updates/generate', () => {
           releaseTimestamp: '2017-02-07T20:01:41+00:00',
         },
         {
+          manager: 'some-manager',
           depName: 'depA',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -309,6 +323,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups multiple upgrades different value but same version', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'depB',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -324,6 +339,7 @@ describe('workers/repository/updates/generate', () => {
           releaseTimestamp: '2017-02-07T20:01:41+00:00',
         },
         {
+          manager: 'some-manager',
           depName: 'depA',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -350,6 +366,7 @@ describe('workers/repository/updates/generate', () => {
     it('groups multiple digest updates', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'foo/bar',
           groupName: 'foo docker images',
           branchName: 'some-branch',
@@ -365,6 +382,7 @@ describe('workers/repository/updates/generate', () => {
           },
         },
         {
+          manager: 'some-manager',
           depName: 'foo/baz',
           groupName: 'foo docker images',
           branchName: 'some-branch',
@@ -404,6 +422,7 @@ describe('workers/repository/updates/generate', () => {
     it('fixes different messages', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'depA',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -419,6 +438,7 @@ describe('workers/repository/updates/generate', () => {
           releaseTimestamp: '2017-02-07T20:01:41+00:00',
         },
         {
+          manager: 'some-manager',
           depName: 'depA',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -443,6 +463,7 @@ describe('workers/repository/updates/generate', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           semanticCommits: 'enabled',
           semanticCommitType: 'chore',
@@ -466,6 +487,7 @@ describe('workers/repository/updates/generate', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           packageFile: 'package.json',
           baseDir: '',
@@ -490,6 +512,7 @@ describe('workers/repository/updates/generate', () => {
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
           commitBodyTable: false,
+          manager: 'some-manager',
           depName: 'some-dep',
           packageFile: 'foo/bar/package.json',
           parentDir: 'bar',
@@ -515,6 +538,7 @@ describe('workers/repository/updates/generate', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           packageFile: 'foo/bar/package.json',
           packageFileDir: 'foo/bar',
@@ -540,6 +564,7 @@ describe('workers/repository/updates/generate', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           commitBody: '[skip-ci]',
           newValue: '1.2.0',
@@ -556,6 +581,7 @@ describe('workers/repository/updates/generate', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           prTitle: 'Upgrade {{depName}}',
           toLowerCase: true,
@@ -568,6 +594,7 @@ describe('workers/repository/updates/generate', () => {
     it('handles @types specially', () => {
       const branch: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           commitBodyTable: true,
           datasource: NpmDatasource.id,
           depName: '@types/some-dep',
@@ -583,6 +610,7 @@ describe('workers/repository/updates/generate', () => {
         {
           commitBodyTable: true,
           datasource: NpmDatasource.id,
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: null,
           branchName: 'some-branch',
@@ -593,6 +621,7 @@ describe('workers/repository/updates/generate', () => {
         {
           commitBodyTable: true,
           datasource: NpmDatasource.id,
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: null,
           branchName: 'some-branch',
@@ -607,11 +636,13 @@ describe('workers/repository/updates/generate', () => {
       expect(generateBranchConfig(branch)).toMatchSnapshot({
         upgrades: [
           {
+            manager: 'some-manager',
             depName: 'some-dep',
             branchName: 'some-branch',
             newValue: '0.6.0',
           },
           {
+            manager: 'some-manager',
             depName: 'some-dep',
             branchName: 'some-branch',
             newValue: '1.0.0',
@@ -628,6 +659,7 @@ describe('workers/repository/updates/generate', () => {
     it('handles @types specially (reversed)', () => {
       const branch: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: null,
           branchName: 'some-branch',
@@ -639,6 +671,7 @@ describe('workers/repository/updates/generate', () => {
         {
           commitBodyTable: true,
           datasource: NpmDatasource.id,
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: null,
           branchName: 'some-branch',
@@ -648,6 +681,7 @@ describe('workers/repository/updates/generate', () => {
           group: {},
         },
         {
+          manager: 'some-manager',
           depName: '@types/some-dep',
           groupName: null,
           branchName: 'some-branch',
@@ -660,12 +694,14 @@ describe('workers/repository/updates/generate', () => {
       expect(generateBranchConfig(branch)).toMatchSnapshot({
         upgrades: [
           {
+            manager: 'some-manager',
             depName: 'some-dep',
             branchName: 'some-branch',
             newValue: '0.6.0',
             labels: ['a', 'c'],
           },
           {
+            manager: 'some-manager',
             depName: 'some-dep',
             branchName: 'some-branch',
             newValue: '1.0.0',
@@ -684,6 +720,7 @@ describe('workers/repository/updates/generate', () => {
     it('handles upgrades', () => {
       const branch: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -693,6 +730,7 @@ describe('workers/repository/updates/generate', () => {
         },
         {
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -704,6 +742,7 @@ describe('workers/repository/updates/generate', () => {
         },
         {
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -715,6 +754,7 @@ describe('workers/repository/updates/generate', () => {
         },
         {
           ...defaultConfig,
+          manager: 'some-manager',
           depName: 'some-dep',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -733,10 +773,12 @@ describe('workers/repository/updates/generate', () => {
     it('combines prBodyColumns', () => {
       const branch: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           branchName: 'some-branch',
           prBodyColumns: ['column-a', 'column-b'],
         },
         {
+          manager: 'some-manager',
           branchName: 'some-branch',
           prBodyColumns: ['column-c', 'column-b', 'column-a'],
         },
@@ -748,6 +790,7 @@ describe('workers/repository/updates/generate', () => {
     it('sorts upgrades, without position first', () => {
       const branch: BranchUpgradeConfig[] = [
         {
+          manager: 'some-manager',
           depName: 'some-dep1',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -755,6 +798,7 @@ describe('workers/repository/updates/generate', () => {
           fileReplacePosition: 1,
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep2',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -762,6 +806,7 @@ describe('workers/repository/updates/generate', () => {
           fileReplacePosition: undefined,
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep3',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -769,6 +814,7 @@ describe('workers/repository/updates/generate', () => {
           fileReplacePosition: 4,
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep4',
           branchName: 'some-branch',
           prTitle: 'some-title',
@@ -785,6 +831,7 @@ describe('workers/repository/updates/generate', () => {
     it('passes through pendingChecks', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -792,6 +839,7 @@ describe('workers/repository/updates/generate', () => {
           pendingChecks: true,
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -807,6 +855,7 @@ describe('workers/repository/updates/generate', () => {
     it('filters pendingChecks', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -814,6 +863,7 @@ describe('workers/repository/updates/generate', () => {
           pendingChecks: true,
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -828,12 +878,14 @@ describe('workers/repository/updates/generate', () => {
     it('displays pending versions', () => {
       const branch = [
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
           prTitle: 'No pending version',
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
@@ -841,6 +893,7 @@ describe('workers/repository/updates/generate', () => {
           pendingVersions: ['1.1.0'],
         },
         {
+          manager: 'some-manager',
           depName: 'some-dep',
           groupName: 'some-group',
           branchName: 'some-branch',
diff --git a/lib/workers/types.ts b/lib/workers/types.ts
index 787c1b6222ac4703548fa0e52d2bd94193e27066..f7df16edb0dace43d607dc8fc0c9d58672c3487d 100644
--- a/lib/workers/types.ts
+++ b/lib/workers/types.ts
@@ -45,7 +45,7 @@ export interface BranchUpgradeConfig
   groupName?: string;
   groupSlug?: string;
   language?: string;
-  manager?: string;
+  manager: string;
   packageFile?: string;
   lockFile?: string;
   lockFiles?: string[];