diff --git a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotifications.java b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotifications.java
index 1656a953b..34bc63b1c 100644
--- a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotifications.java
+++ b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotifications.java
@@ -63,11 +63,15 @@ public class BitbucketBuildStatusNotifications {
     private static final String STOPPED_STATE = "STOPPED";
     private static final String INPROGRESS_STATE = "INPROGRESS";
 
-    private static String getRootURL(@NonNull Run<?, ?> build) {
+    private static String getRootURL() {
+        return DisplayURLProvider.get().getRoot();
+    }
+
+    private static String getRunURL(@NonNull Run<?, ?> build) {
         JenkinsLocationConfiguration cfg = JenkinsLocationConfiguration.get();
 
         if (cfg == null || cfg.getUrl() == null) {
-            throw new IllegalStateException("Could not determine Jenkins URL.");
+            throw new IllegalStateException("Could not determine job URL.");
         }
 
         return DisplayURLProvider.get().getRunURL(build);
@@ -110,9 +114,11 @@ private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener
             return;
         }
 
-        String url;
+        String rootUrl, url;
         try {
-            url = getRootURL(build);
+            rootUrl = getRootURL();
+
+            url = getRunURL(build);
             checkURL(url, bitbucket);
         } catch (IllegalStateException e) {
             listener.getLogger().println("Can not determine Jenkins root URL " +
@@ -123,10 +129,16 @@ private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener
             return;
         }
 
+        BitbucketSCMSource source = (BitbucketSCMSource) s;
+        BitbucketSCMSourceContext sourceContext = new BitbucketSCMSourceContext(null, SCMHeadObserver.none())
+                .withTraits(source.getTraits());
+
         String name = build.getFullDisplayName(); // use the build number as the display name of the status
         BitbucketBuildStatus status;
         Result result = build.getResult();
         String buildDescription = build.getDescription();
+        String statusNamePrefix = "";
+        String statusDescriptionSuffix = "";
         String statusDescription;
         String state;
         if (Result.SUCCESS.equals(result)) {
@@ -135,9 +147,6 @@ private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener
         } else if (Result.UNSTABLE.equals(result)) {
             statusDescription = StringUtils.defaultIfBlank(buildDescription, "This commit has test failures.");
 
-            BitbucketSCMSource source = (BitbucketSCMSource) s;
-            BitbucketSCMSourceContext sourceContext = new BitbucketSCMSourceContext(null, SCMHeadObserver.none())
-                    .withTraits(source.getTraits());
             if (sourceContext.sendSuccessNotificationForUnstableBuild()) {
                 state = SUCCESSFUL_STATE;
             } else {
@@ -157,7 +166,14 @@ private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener
             statusDescription = StringUtils.defaultIfBlank(buildDescription, "The build is in progress...");
             state = INPROGRESS_STATE;
         }
-        status = new BitbucketBuildStatus(hash, statusDescription, state, url, key, name);
+        if (sourceContext.buildStatusIncludeJenkinsURL()) {
+            statusNamePrefix = rootUrl + " ยป ";
+            statusDescriptionSuffix = " @ " + rootUrl;
+        }
+        status = new BitbucketBuildStatus(hash,
+                statusDescription + statusDescriptionSuffix,
+                state, url, key,
+                statusNamePrefix + name);
         new BitbucketChangesetCommentNotifier(bitbucket).buildStatus(status);
         if (result != null) {
             listener.getLogger().println("[Bitbucket] Build result notified");
@@ -171,6 +187,8 @@ private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener
 
     private static void sendNotifications(BitbucketSCMSource source, Run<?, ?> build, TaskListener listener)
             throws IOException, InterruptedException {
+        String rootUrl = getRootURL();
+
         BitbucketSCMSourceContext sourceContext = new BitbucketSCMSourceContext(null,
             SCMHeadObserver.none()).withTraits(source.getTraits());
         if (sourceContext.notificationsDisabled()) {
@@ -193,11 +211,13 @@ private static void sendNotifications(BitbucketSCMSource source, Run<?, ?> build
         if (r instanceof PullRequestSCMRevision) {
             listener.getLogger().println("[Bitbucket] Notifying pull request build result");
             PullRequestSCMHead head = (PullRequestSCMHead) r.getHead();
-            key = getBuildKey(build, head.getOriginName(), shareBuildKeyBetweenBranchAndPR);
+            key = getBuildKey(build, rootUrl, head.getOriginName(),
+                    shareBuildKeyBetweenBranchAndPR, sourceContext.buildStatusIncludeJenkinsURL());
             bitbucket = source.buildBitbucketClient(head);
         } else {
             listener.getLogger().println("[Bitbucket] Notifying commit build result");
-            key = getBuildKey(build, r.getHead().getName(), shareBuildKeyBetweenBranchAndPR);
+            key = getBuildKey(build, rootUrl, r.getHead().getName(),
+                    shareBuildKeyBetweenBranchAndPR, sourceContext.buildStatusIncludeJenkinsURL());
             bitbucket = source.buildBitbucketClient();
         }
         createStatus(build, listener, bitbucket, key, hash);
@@ -215,8 +235,8 @@ private static String getHash(@CheckForNull SCMRevision revision) {
         return null;
     }
 
-    private static String getBuildKey(@NonNull Run<?, ?> build, String branch,
-        boolean shareBuildKeyBetweenBranchAndPR) {
+    private static String getBuildKey(@NonNull Run<?, ?> build, String rootUrl, String branch,
+        boolean shareBuildKeyBetweenBranchAndPR, boolean includeJenkinsURL) {
 
         // When the ExcludeOriginPRBranchesSCMHeadFilter filter is active, we want the
         // build status key to be the same between the branch project and the PR project.
@@ -231,6 +251,10 @@ private static String getBuildKey(@NonNull Run<?, ?> build, String branch,
             key = build.getParent().getFullName(); // use the job full name as the key for the status
         }
 
+        if (includeJenkinsURL) {
+            key = rootUrl + "/" + key;
+        }
+
         return key;
     }
 
diff --git a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait.java b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait.java
index 3d3a122eb..8470de06b 100644
--- a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait.java
+++ b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait.java
@@ -45,6 +45,11 @@ public class BitbucketBuildStatusNotificationsTrait extends SCMSourceTrait {
      */
     private boolean sendSuccessNotificationForUnstableBuild;
 
+    /**
+     * Include Jenkins URL as a status key/name
+     */
+    private boolean includeJenkinsURL;
+
     /**
      * Constructor.
      *
@@ -68,12 +73,26 @@ public boolean getSendSuccessNotificationForUnstableBuild() {
         return this.sendSuccessNotificationForUnstableBuild;
     }
 
+    @DataBoundSetter
+    public void setIncludeJenkinsURL(boolean isIncludeJenkinsURL) {
+        includeJenkinsURL = isIncludeJenkinsURL;
+    }
+
+    /**
+     * @return {@code true} if commit status should include Jenkins URL
+     */
+    public boolean getIncludeJenkinsURL() {
+        return this.includeJenkinsURL;
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
     protected void decorateContext(SCMSourceContext<?, ?> context) {
-        ((BitbucketSCMSourceContext) context).withSendSuccessNotificationForUnstableBuild(getSendSuccessNotificationForUnstableBuild());
+        ((BitbucketSCMSourceContext) context)
+                .withSendSuccessNotificationForUnstableBuild(getSendSuccessNotificationForUnstableBuild())
+                .withBuildStatusIncludeJenkinsURL(getIncludeJenkinsURL());
     }
 
     /**
diff --git a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSourceContext.java b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSourceContext.java
index c0985d26a..d237fe1a3 100644
--- a/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSourceContext.java
+++ b/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSourceContext.java
@@ -91,6 +91,11 @@ public class BitbucketSCMSourceContext extends SCMSourceContext<BitbucketSCMSour
      */
     private boolean sendSuccessNotificationForUnstableBuild;
 
+    /**
+     * {@code true} if need to include Jenkins URL to the build status name and key.
+     */
+    private boolean buildStatusIncludeJenkinsURL;
+
     /**
      * Constructor.
      *
@@ -215,6 +220,15 @@ public final boolean sendSuccessNotificationForUnstableBuild() {
         return sendSuccessNotificationForUnstableBuild;
     }
 
+    /**
+     * Returns {@code true} if should include Jenkins URL to a build status name and key.
+     *
+     * @return {@code false} if should NOT include Jenkins URL to a build status name and key.
+     */
+    public final boolean buildStatusIncludeJenkinsURL() {
+        return buildStatusIncludeJenkinsURL;
+    }
+
     /**
      * Adds a requirement for branch details to any {@link BitbucketSCMSourceRequest} for this context.
      *
@@ -352,6 +366,18 @@ public final BitbucketSCMSourceContext withSendSuccessNotificationForUnstableBui
         return this;
     }
 
+    /**
+     * Defines behaviour of build status name and key.
+     *
+     * @param buildStatusIncludeJenkinsURL {@code true} to inluce Jenkins URL to the build status key/name.
+     * @return {@code this} for method chaining.
+     */
+    @NonNull
+    public final BitbucketSCMSourceContext withBuildStatusIncludeJenkinsURL(boolean buildStatusIncludeJenkinsURL) {
+        this.buildStatusIncludeJenkinsURL = buildStatusIncludeJenkinsURL;
+        return this;
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/src/main/resources/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait/config.jelly b/src/main/resources/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait/config.jelly
index 4b2283124..39230445f 100644
--- a/src/main/resources/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait/config.jelly
+++ b/src/main/resources/com/cloudbees/jenkins/plugins/bitbucket/BitbucketBuildStatusNotificationsTrait/config.jelly
@@ -3,4 +3,7 @@
   <f:entry title="${%Communicate Unstable builds to Bitbucket as Successful}" field="sendSuccessNotificationForUnstableBuild">
     <f:checkbox/>
   </f:entry>
+  <f:entry title="${%Include Jenkins URL}" field="includeJenkinsURL">
+    <f:checkbox/>
+  </f:entry>
 </j:jelly>
\ No newline at end of file