diff --git a/docs/usage/self-hosted-configuration.md b/docs/usage/self-hosted-configuration.md
index f591bc8de80ea97848b9acc097982aa399f6c189..1df50e1478c423a136e08afbee35402df9b0910c 100644
--- a/docs/usage/self-hosted-configuration.md
+++ b/docs/usage/self-hosted-configuration.md
@@ -103,6 +103,10 @@ This option is useful for troubleshooting, particularly if using presets. e.g. r
 
 ## privateKey
 
+## productLinks
+
+Override this object if you wish to change the URLs that Renovate links to, e.g. if you have an internal forum for asking for help.
+
 ## repositories
 
 ## requireConfig
diff --git a/lib/config/app-strings.ts b/lib/config/app-strings.ts
index f8b18e54d20409e3e4f681da551db6f49b07ef58..bc3fb3f0c93d193a5a166058ca04fffbfeaca3ed 100644
--- a/lib/config/app-strings.ts
+++ b/lib/config/app-strings.ts
@@ -11,9 +11,3 @@ export const configFileNames = [
   '.renovaterc.json',
   'package.json',
 ];
-
-export const urls = {
-  documentation: 'https://docs.renovatebot.com/',
-  help: 'https://github.com/renovatebot/config-help/issues',
-  homepage: 'https://renovatebot.com',
-};
diff --git a/lib/config/definitions.ts b/lib/config/definitions.ts
index 014d3b49bba7c13ebfde31a8727902e4c10fac8c..3ea310b5ddc065694c0c362dc794199ec99d73ac 100644
--- a/lib/config/definitions.ts
+++ b/lib/config/definitions.ts
@@ -1,4 +1,4 @@
-import { appName, appSlug, urls } from './app-strings';
+import { appName, appSlug } from './app-strings';
 import { RenovateConfigStage } from './common';
 
 export interface RenovateOptionBase {
@@ -94,6 +94,22 @@ const options: RenovateOptions[] = [
     admin: true,
     cli: false,
   },
+  {
+    name: 'productLinks',
+    description: 'Links which are embedded within PRs, issues, etc',
+    type: 'object',
+    admin: true,
+    mergeable: true,
+    default: {
+      documentation: 'https://docs.renovatebot.com/',
+      help: 'https://github.com/renovatebot/config-help/issues',
+      homepage: 'https://github.com/renovatebot/renovate',
+    },
+    additionalProperties: {
+      type: 'string',
+      format: 'uri',
+    },
+  },
   {
     name: 'extends',
     description:
@@ -1213,7 +1229,7 @@ const options: RenovateOptions[] = [
     name: 'prFooter',
     description: 'Pull Request footer template',
     type: 'string',
-    default: `This PR has been generated by [${appName} Bot](${urls.homepage}).`,
+    default: `This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).`,
     stage: 'global',
   },
   {
diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts
index 35daae3da5118a232f5918f7af1c658768f23f15..8ccb406abb89a63ad91e43e1523628e55d1f7349 100644
--- a/lib/platform/github/index.ts
+++ b/lib/platform/github/index.ts
@@ -15,12 +15,7 @@ import {
   VulnerabilityAlert,
 } from '../common';
 
-import {
-  appName,
-  appSlug,
-  configFileNames,
-  urls,
-} from '../../config/app-strings';
+import { appName, appSlug, configFileNames } from '../../config/app-strings';
 import { sanitize } from '../../util/sanitize';
 import { smartTruncate } from '../utils/pr-body';
 
@@ -70,6 +65,7 @@ interface LocalRepoConfig {
   localDir: string;
   isGhe: boolean;
   renovateUsername: string;
+  productLinks: any;
 }
 
 type BranchProtection = any;
@@ -1647,7 +1643,7 @@ export async function createPr(
       `${appSlug}/verify`,
       `${appName} verified pull request`,
       'success',
-      urls.homepage
+      'https://github.com/renovatebot/renovate'
     );
   }
   pr.isModified = false;
diff --git a/lib/workers/branch/status-checks.ts b/lib/workers/branch/status-checks.ts
index e9dfc6c2b3584254e20a0c1f80802ae08ca35bbe..c96e15c54b2dd560866bcb1766f0955bf3cda8f9 100644
--- a/lib/workers/branch/status-checks.ts
+++ b/lib/workers/branch/status-checks.ts
@@ -1,5 +1,5 @@
 import { logger } from '../../logger';
-import { appSlug, urls } from '../../config/app-strings';
+import { appSlug } from '../../config/app-strings';
 import { RenovateConfig } from '../../config';
 import { platform } from '../../platform';
 
@@ -7,7 +7,8 @@ async function setStatusCheck(
   branchName: string,
   context: string,
   description: string,
-  state: string
+  state: string,
+  url: string
 ): Promise<void> {
   const existingState = await platform.getBranchStatusCheck(
     branchName,
@@ -23,7 +24,7 @@ async function setStatusCheck(
       context,
       description,
       state,
-      urls.documentation
+      url
     );
   }
 }
@@ -46,7 +47,8 @@ export async function setStability(config: StabilityConfig): Promise<void> {
     config.branchName,
     context,
     description,
-    config.stabilityStatus
+    config.stabilityStatus,
+    config.productLinks.documentation
   );
 }
 
@@ -68,5 +70,11 @@ export async function setUnpublishable(
   const description = config.canBeUnpublished
     ? 'Packages < 24 hours old can be unpublished'
     : 'Packages cannot be unpublished';
-  await setStatusCheck(config.branchName, context, description, state);
+  await setStatusCheck(
+    config.branchName,
+    context,
+    description,
+    state,
+    config.productLinks.docs
+  );
 }
diff --git a/lib/workers/pr/body/config-description.js b/lib/workers/pr/body/config-description.js
index e32f8d7e690f96688c4982a918109ca7ea4f8819..8b24f5d631607753fcf2b6f23016869b541f9456 100644
--- a/lib/workers/pr/body/config-description.js
+++ b/lib/workers/pr/body/config-description.js
@@ -1,4 +1,4 @@
-const { appName, urls } = require('../../../config/app-strings');
+const { appName } = require('../../../config/app-strings');
 const { platform } = require('../../../platform');
 const { emojify } = require('../../../util/emoji');
 
@@ -55,7 +55,7 @@ async function getPrConfigDescription(config) {
   }
   if (config.recreateClosed) {
     prBody += emojify(
-      `:ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](${urls.help}) if that's undesired.\n\n`
+      `:ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](${config.productLinks.help}) if that's undesired.\n\n`
     );
   } else {
     prBody += emojify(
diff --git a/lib/workers/repository/onboarding/pr/index.ts b/lib/workers/repository/onboarding/pr/index.ts
index 5bdd613dffcd8707eade0af37a7836363f76b493..ca3d05b8e00b951112d5b98e2d5199dddda69707 100644
--- a/lib/workers/repository/onboarding/pr/index.ts
+++ b/lib/workers/repository/onboarding/pr/index.ts
@@ -5,7 +5,7 @@ import { getConfigDesc } from './config-description';
 import { getErrors, getWarnings, getDepWarnings } from './errors-warnings';
 import { getBaseBranchDesc } from './base-branch';
 import { getPrList, BranchConfig } from './pr-list';
-import { appName, urls } from '../../../../config/app-strings';
+import { appName } from '../../../../config/app-strings';
 import { emojify } from '../../../../util/emoji';
 import { RenovateConfig } from '../../../../config';
 import { PackageFile } from '../../../../manager/common';
@@ -22,7 +22,7 @@ export async function ensureOnboardingPr(
   logger.trace({ config });
   const existingPr = await platform.getBranchPr(config.onboardingBranch);
   logger.debug('Filling in onboarding PR template');
-  let prTemplate = `Welcome to [${appName}](${urls.homepage})! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\n\n`;
+  let prTemplate = `Welcome to [${appName}](${config.productLinks.homepage})! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\n\n`;
   prTemplate += config.requireConfig
     ? emojify(
         `:vertical_traffic_light: To activate ${appName}, merge this Pull Request. To disable ${appName}, simply close this Pull Request unmerged.\n\n`
@@ -43,8 +43,8 @@ export async function ensureOnboardingPr(
 
 ---
 
-:question: Got questions? Check out ${appName}'s [Docs](${urls.documentation}), particularly the Getting Started section.
-If you need any further assistance then you can also [request help here](${urls.help}).
+:question: Got questions? Check out ${appName}'s [Docs](${config.productLinks.documentation}), particularly the Getting Started section.
+If you need any further assistance then you can also [request help here](${config.productLinks.help}).
 `
   );
   let prBody = prTemplate;
@@ -68,7 +68,7 @@ If you need any further assistance then you can also [request help here](${urls.
     configDesc = getConfigDesc(config, packageFiles);
   } else {
     configDesc = emojify(
-      `### Configuration\n\n:abcd: ${appName} has detected a custom config for this PR. Feel free to ask for [help](${urls.help}) if you have any doubts and would like it reviewed.\n\n`
+      `### Configuration\n\n:abcd: ${appName} has detected a custom config for this PR. Feel free to ask for [help](${config.productLinks.help}) if you have any doubts and would like it reviewed.\n\n`
     );
     if (existingPr.isConflicted) {
       configDesc += emojify(
diff --git a/renovate-schema.json b/renovate-schema.json
index 0b6d8d350c649f411ff59d61f9f58169bc7fb8a1..635161c21dbe3b394e2f68fcd464b01ebe31f1c3 100644
--- a/renovate-schema.json
+++ b/renovate-schema.json
@@ -13,6 +13,20 @@
       "type": "string",
       "default": "Configure Renovate"
     },
+    "productLinks": {
+      "description": "Links which are embedded within PRs, issues, etc",
+      "type": "object",
+      "default": {
+        "documentation": "https://docs.renovatebot.com/",
+        "help": "https://github.com/renovatebot/config-help/issues",
+        "homepage": "https://github.com/renovatebot/renovate"
+      },
+      "additionalProperties": {
+        "type": "string",
+        "format": "uri"
+      },
+      "$ref": "#"
+    },
     "extends": {
       "description": "Configuration presets to use/extend. Note: does not work if configured in config.js",
       "type": "array",
@@ -755,7 +769,7 @@
     "prFooter": {
       "description": "Pull Request footer template",
       "type": "string",
-      "default": "This PR has been generated by [Renovate Bot](https://renovatebot.com)."
+      "default": "This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate)."
     },
     "lockFileMaintenance": {
       "description": "Configuration for lock file maintenance",
diff --git a/test/platform/github/__snapshots__/index.spec.ts.snap b/test/platform/github/__snapshots__/index.spec.ts.snap
index 7bf58d6ea3923cd05173e11ab0b52efb50e9f96e..cbf78d72c5c3450a1263cb53ed099f6b05856c28 100644
--- a/test/platform/github/__snapshots__/index.spec.ts.snap
+++ b/test/platform/github/__snapshots__/index.spec.ts.snap
@@ -73,7 +73,7 @@ Array [
         "context": "renovate/verify",
         "description": "Renovate verified pull request",
         "state": "success",
-        "target_url": "https://renovatebot.com",
+        "target_url": "https://github.com/renovatebot/renovate",
       },
     },
   ],