Guides · Bitbucket
Get a Mac notification for Bitbucket pushes, pull requests and builds
A Bitbucket Cloud repository webhook names every event in its X-Event-Key header. The Bitbucket preset turns that into the type and checks the signature, so pushes, opened and merged pull requests and build results each get their own switch and count.
Needs: the free EventBar app on your Mac, an EventBar account, and a Bitbucket account with permission to add webhooks. About five minutes. Bitbucket preset, signature verified.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Bitbucket, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into Bitbucket. In the repository: Repository settings, then Webhooks, then Add webhook. Give it a title, URL your hook URL, and type or generate a Secret; paste the same secret into the hook card in EventBar. Under Triggers choose Choose from a full list of triggers and tick only what you want: Push, Pull request Created and Merged, Build status Updated.
- Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
This preset is on Plus and Pro. Free can do the same with a Generic JSON hook and a type field of type, without the signature check.
What you'll see
| Type | Title | Body template |
|---|---|---|
repo.push | Push | {actor.display_name} pushed to {push.changes.0.new.name} of {repository.full_name} |
pullrequest.created | Pull request | {pullrequest.title} by {pullrequest.author.display_name} |
pullrequest.fulfilled | Pull request merged | {pullrequest.title} into {pullrequest.destination.branch.name} |
pullrequest.approved | Approval | {actor.display_name} approved {pullrequest.title} |
repo.commit_status_updated | Build | {commit_status.name}: {commit_status.state} on {repository.name} |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- The type is the
X-Event-Keyheader with:turned into., sopullrequest:fulfilledbecomespullrequest.fulfilled. Bitbucket calls a merge fulfilled and a decline rejected. - The signature is
X-Hub-Signature: sha256=…, an HMAC-SHA256 of the body with your secret. A webhook saved without a secret still works on the Bitbucket preset, just unverified. Duplicates are dropped byX-Request-UUID. - Build results come from Pipelines or any CI that reports commit statuses.
repo.commit_status_updatedfires on every state, includingINPROGRESS;repo.commit_status_createdis the start. Mute the one you don't care about from the menu bar. - Links:
{pullrequest.links.html.href}opens the pull request,{commit_status.url}the build. A push can carry several branches; the template shows the first. - This covers Bitbucket Cloud. Bitbucket Data Center uses different payloads and headers: use a Generic JSON hook there with type field
eventKey.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about Bitbucket's payload changed? Tell us and we'll fix the guide.