Configuring a Bitbucket Webhook for Release Event Reporting

Last updated: November 4, 2026

Overview

Bitbucket Pipelines can notify Noibu every time you deploy by sending one HTTP POST to Noibu's release webhook at the end of your deployment step. Noibu has dedicated guides for GitHub Actions, GitLab and Jenkins; Bitbucket uses the same generic release webhook, called from bitbucket-pipelines.yml.

Bitbucket's built-in webhooks send Bitbucket's own event payloads, not the six-field body Noibu expects. Calling the webhook from a pipeline step lets you control every field.

Once the webhook is live, each deployment appears in the Release report and Calendar in Noibu, marked as a success or a failure. Noibu uses these releases to link deployments to new issues and to compare performance before and after a release.

Setup takes about 10 minutes and has three steps: add your Noibu domain ID as a Bitbucket variable, add the notification to your deployment step, then run a deployment and confirm the release shows up.

Prerequisites

You need three things before you start.

  1. Your Noibu domain ID. Log in to the Noibu console, confirm the correct company and domain are selected, and open the Dashboard. The domain ID is the segment of the browser URL between noibu.com and dashboard. Copy it without the slashes. See Retrieving a Domain ID.

  2. Bitbucket access. Bitbucket Pipelines must be enabled on the repository, and you need admin access to add repository variables and permission to edit bitbucket-pipelines.yml.

  3. The step that counts as a release. Decide which pipeline and which step is the final step of your deployment (for example, the step marked deployment: production). The notification goes in that step only, so builds, tests and staging deploys aren't reported as releases.

The pipeline's build image also needs curl and outbound HTTPS access to webhook.noibu.com. Bitbucket's default image, atlassian/default-image, lists curl in version 5, so pin your pipeline to image: atlassian/default-image:5; the unpinned default may resolve to an older version. Custom images may not include curl.

Step 1: Add your domain ID as a Bitbucket variable

Storing the domain ID as a variable keeps it out of your pipeline file and makes it easy to change later.

  1. In Bitbucket, open the repository and select Repository settings.

  2. Under Pipelines, select Repository variables.

  3. Add a variable named NOIBU_DOMAIN_ID and paste your domain ID as the value.

  4. Select Add.

Secured is optional. Secured values are masked in build logs and can't be edited afterward, only replaced or deleted.

If staging and production report to different Noibu domains, add NOIBU_DOMAIN_ID as a deployment variable instead (Repository settings > Pipelines > Deployments, then pick the environment) and give each environment its own domain ID. A deployment variable overrides a repository variable with the same name for steps that use that deployment: environment.

Step 2: Add the release notification to your pipeline

Add an after-script to your final deployment step in bitbucket-pipelines.yml. Bitbucket runs after-script whether the step passes or fails, and sets BITBUCKET_EXIT_CODE there, so one block can report both a successful and a failed deployment.

pipelines:
  branches:
    main:
      - step:
          name: Deploy to production
          deployment: production
          script:
            - ./deploy.sh   # your existing deployment commands
          after-script:
            - |
              if [ "$BITBUCKET_EXIT_CODE" -eq 0 ]; then
                NOIBU_STATUS="success"
              else
                NOIBU_STATUS="failed"
              fi
              curl --silent --show-error --fail -X POST \
                "https://webhook.noibu.com/release_webhook/${NOIBU_DOMAIN_ID}" \
                -H "Content-Type: application/json" \
                -d "{
                  \"component\": \"frontend\",
                  \"title\": \"Deploy ${BITBUCKET_REPO_SLUG} build #${BITBUCKET_BUILD_NUMBER}\",
                  \"description\": \"Deployed from ${BITBUCKET_BRANCH}\",
                  \"status\": \"${NOIBU_STATUS}\",
                  \"version\": \"${BITBUCKET_COMMIT}\",
                  \"release_time\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
                }"

Replace ./deploy.sh with your real deployment commands, and change component to the part of your site this pipeline releases. The webhook accepts six fields, all strings:

Field

Value in the example

Notes

component

frontend

The part of the site released, such as frontend, backend, checkout or marketing. Free text.

title

Repo name and build number

A short summary of the release.

description

Branch name

Release details. Can be null.

status

success or failed

Set from BITBUCKET_EXIT_CODE. Only these two values are accepted.

version

Commit hash

A version number, commit hash or ticket ID. Free text.

release_time

Current UTC time

When the release went live, in RFC 3339 format, for example 2026-11-03T15:04:05Z.

The request needs no authentication header. The domain ID in the URL identifies your domain.

BITBUCKET_BRANCH is only set for branch builds, so description reads "Deployed from " on tag builds; adjust it if you deploy from tags. If a command in after-script fails, Bitbucket skips the rest of that after-script and leaves the step's pass or fail status unchanged, so a failed notification never fails your deployment.

Step 3: Run a deployment and verify the release

  1. Commit the updated bitbucket-pipelines.yml to the branch that triggers your deployment, or start the pipeline manually from Pipelines > Run pipeline.

  2. Open the pipeline run in Bitbucket and expand the deployment step. The curl call appears under the After script section of the log. A successful call prints no errors.

  3. In the Noibu console, select the same domain you used to find the domain ID and open the Release report. The new release should appear with your title, component, version and status. It also shows on the Release Calendar.

If you sent a test release, you can edit or delete it from the Release report page.

Troubleshooting

Noibu's generic webhook doesn't document response codes, so the curl output in the After script log is the best place to start.

Symptom

Likely cause

Fix

curl: command not found

The build image doesn't include curl.

Pin the build image to atlassian/default-image:5, which lists it, or install it at the start of the after-script.

The request URL ends in /release_webhook/ with no ID

NOIBU_DOMAIN_ID isn't defined, or is a deployment variable for a different environment.

Check the variable name and scope under Repository settings.

The request returns an error

The JSON is malformed, or a field has an invalid value.

Confirm status is exactly success or failed, and release_time is RFC 3339 in UTC.

Every release shows as success

The notification is in script instead of after-script, so BITBUCKET_EXIT_CODE is empty.

Move the block into after-script.

The call succeeds but no release appears

The wrong domain ID, or the wrong domain selected in the console.

Re-copy the ID from the Dashboard URL of the domain you're viewing.

Releases appear for builds and test steps

The notification is in more than one step.

Keep it only in the final deployment step.

Related articles