diff --git a/lib/config/templates/default/pr-body.hbs b/lib/config/templates/default/pr-body.hbs
index e438988b59e908650395f620e1e11f154e3f3d27..87691a35666d5fdcc7bc6da47c83893dec416c61 100644
--- a/lib/config/templates/default/pr-body.hbs
+++ b/lib/config/templates/default/pr-body.hbs
@@ -1,4 +1,4 @@
-This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request {{#if isRollback}}rolls back{{else}}updates{{/if}} dependency {{#if repositoryUrl}}[{{depName}}]({{repositoryUrl}}){{else}}`depName`{{/if}} from version `{{currentVersion}}` to `{{newVersion}}`{{#if isRollback}}. This is necessary and important because version `{{currentVersion}}` cannot be found in the npm registry - probably because of it being unpublished.{{/if}}
+This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request {{#if isRollback}}rolls back{{else}}updates{{/if}} dependency {{#if repositoryUrl}}[{{depName}}]({{repositoryUrl}}){{else}}`{{depName}}`{{/if}} from version `{{currentVersion}}` to `{{newVersion}}`{{#if isRollback}}. This is necessary and important because version `{{currentVersion}}` cannot be found in the npm registry - probably because of it being unpublished.{{/if}}
 {{#if releases.length}}
 
 {{#if schedule}}
diff --git a/lib/config/templates/group/pr-body.hbs b/lib/config/templates/group/pr-body.hbs
index c85ec6c522544f9b54fff2c741561b5d8ef7d512..8b519ead53e23d97d96896fa7c3dc3d04d9bd2f8 100644
--- a/lib/config/templates/group/pr-body.hbs
+++ b/lib/config/templates/group/pr-body.hbs
@@ -5,7 +5,7 @@ This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request renovates the package grou
 {{/if}}
 
 {{#each upgrades as |upgrade|}}
--   [{{upgrade.depName}}]({{upgrade.repositoryUrl}}): from `{{upgrade.currentVersion}}` to `{{upgrade.newVersion}}`
+-   {{#if repositoryUrl}}[{{upgrade.depName}}]({{upgrade.repositoryUrl}}){{else}}`{{depName}}`{{/if}}: from `{{upgrade.currentVersion}}` to `{{upgrade.newVersion}}`
 {{/each}}
 
 {{#unless isPin}}
diff --git a/lib/workers/package/index.js b/lib/workers/package/index.js
index 526e220435c7770b1231a8d507d9d9e8045ccdac..5494ba9500c3ca4f193af3269abd9bdd8253ed18 100644
--- a/lib/workers/package/index.js
+++ b/lib/workers/package/index.js
@@ -50,7 +50,10 @@ async function renovatePackage(config) {
   // Flatten the result on top of config, add repositoryUrl
   return results.map(result => {
     const upg = configParser.mergeChildConfig(config, result);
-    upg.repositoryUrl = npmDep ? npmDep.repositoryUrl : '';
+    upg.repositoryUrl =
+      npmDep && npmDep.repositoryUrl && npmDep.repositoryUrl.length
+        ? npmDep.repositoryUrl
+        : null;
     return configParser.filterConfig(upg, 'branch');
   });
 }
diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js
index c15c0ad228cf0c06f78e43e4d1af27d32f5e250c..b34a1a4fdee458d71d07eeedcc8a20f4f4b8ddb6 100644
--- a/lib/workers/pr/index.js
+++ b/lib/workers/pr/index.js
@@ -115,7 +115,7 @@ async function ensurePr(inputConfig, logger, errors, warnings) {
 
   const prTitle = handlebars.compile(config.prTitle)(config);
   let prBodyMarkdown = handlebars.compile(config.prBody)(config);
-  const atUserRe = /@([a-z]+\/[a-z]+)/;
+  const atUserRe = /[^`]@([a-z]+\/[a-z]+)/g;
   prBodyMarkdown = prBodyMarkdown.replace(atUserRe, '@​$1');
   const prBody = converter.makeHtml(prBodyMarkdown);
 
diff --git a/test/workers/package/__snapshots__/index.spec.js.snap b/test/workers/package/__snapshots__/index.spec.js.snap
index 1eedc003f608e1ab85a3923fddd6971578574e44..4160c5b53dec5990edc9b18eb1deb5faa0cb27d4 100644
--- a/test/workers/package/__snapshots__/index.spec.js.snap
+++ b/test/workers/package/__snapshots__/index.spec.js.snap
@@ -49,7 +49,7 @@ Array [
 {{/if}}
 
 {{#each upgrades as |upgrade|}}
--   [{{upgrade.depName}}]({{upgrade.repositoryUrl}}): from \`{{upgrade.currentVersion}}\` to \`{{upgrade.newVersion}}\`
+-   {{#if repositoryUrl}}[{{upgrade.depName}}]({{upgrade.repositoryUrl}}){{else}}\`{{depName}}\`{{/if}}: from \`{{upgrade.currentVersion}}\` to \`{{upgrade.newVersion}}\`
 {{/each}}
 
 {{#unless isPin}}
@@ -110,7 +110,7 @@ This {{#if isGitHub}}PR{{else}}MR{{/if}} has been generated by [Renovate Bot](ht
     "labels": Array [],
     "lazyGrouping": true,
     "message": "Failed to look up dependency",
-    "prBody": "This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request {{#if isRollback}}rolls back{{else}}updates{{/if}} dependency {{#if repositoryUrl}}[{{depName}}]({{repositoryUrl}}){{else}}\`depName\`{{/if}} from version \`{{currentVersion}}\` to \`{{newVersion}}\`{{#if isRollback}}. This is necessary and important because version \`{{currentVersion}}\` cannot be found in the npm registry - probably because of it being unpublished.{{/if}}
+    "prBody": "This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request {{#if isRollback}}rolls back{{else}}updates{{/if}} dependency {{#if repositoryUrl}}[{{depName}}]({{repositoryUrl}}){{else}}\`{{depName}}\`{{/if}} from version \`{{currentVersion}}\` to \`{{newVersion}}\`{{#if isRollback}}. This is necessary and important because version \`{{currentVersion}}\` cannot be found in the npm registry - probably because of it being unpublished.{{/if}}
 {{#if releases.length}}
 
 {{#if schedule}}
@@ -166,7 +166,7 @@ This {{#if isGitHub}}PR{{else}}MR{{/if}} has been generated by [Renovate Bot](ht
     "rebaseStalePrs": false,
     "recreateClosed": false,
     "repoIsOnboarded": true,
-    "repositoryUrl": "",
+    "repositoryUrl": null,
     "requiredStatusChecks": Array [],
     "reviewers": Array [],
     "schedule": "some schedule",