Skip to main content

Outgoing webhooks in Release Management

Outgoing Webhooks are automated messages sent from Bitrise to a specified URL when a particular event occurs. For Release Management, these webhooks allow you to integrate Bitrise with external services and tools, enabling seamless communication and automation across your development pipeline.

Standard plan only

You can add outgoing Webhooks to a Workspace, but connecting them in a Release Management project is only possible for projects with standard license.

Adding an outgoing webhook to a releaseClick to copy link

You can add outgoing webhooks to a release in two ways:

  • Add the webhook to an individual release.
  • Add the webhook to a release preset template. All releases using that template will use the configured webhook.
  1. Make sure your external service is ready to receive and process the webhook requests. This typically involves:

    • Creating a publicly accessible URL to receive the HTTP POST requests from Bitrise.
    • Handling the JSON payload: parse the JSON data and extract the relevant information.
    • Defining the actions your service should take based on the received event.
  2. Create an outgoing webhook on Bitrise.

  3. Open Release Management.

  4. Select your app.

  5. Select a release that hasn't finished.

    2025-10-29-releases.png

  6. Go to Configuration.

  7. Find the Outgoing webhooks card and click Show details.

    2025-10-29-outgoing-webhooks-rm.png

  8. Click Add webhook.

  9. Select a webhook from the Webhook configuration menu.

    2025-10-29-rm-add-outgoing-webhook.png

  10. Select the events that will trigger the webhook.

    See the full list of events and their payload information: Webhook events.

Removing an outgoing webhook from a releaseClick to copy link

You can remove an outgoing webhook from an individual release or from a release preset template.

  1. Open Release Management.

  2. Select your app.

  3. Select a release that hasn't finished.

    2025-10-29-releases.png

  4. Go to Configuration.

  5. Find the Outgoing webhooks card and click Show details.

  6. Click the remove configuration icon.

    2025-10-29-remove-webhooks-rm.png

Webhook eventsClick to copy link

Multiple release automation events can trigger a webhook. All webhooks contain the following fields:

Field nameFormat
app_id
project_id
release_candidate_artifact_id
release_id
sent_atNanosecond precision UNIX timestamp
store_app_id
triggered_atNanosecond precision UNIX timestamp
triggered_byEither a user slug or one of: Automation, Apple App Store, Google Play Store
trigger_event
webhook_config_id
webhook_connection_id
webhook_event_unique_idWEBHOOK_ID@TRIGGER_TIMESTAMP_NANO
workspace_id

The following webhook events are available. The Fields column contains the additional fields that the triggering event adds to the webhook payload.

Webhook nameTrigger eventFields
App version addedapp_version_added- description - preset_template_id
Release description changedrelease_description_changed- description
Auto-upload enabledauto-upload_enabled
Auto-upload disabledauto-upload_disabled
Slack connection changedslack_connection_changed
Microsoft Teams connection changedmicrosoft_teams_connection_changed
Automation addedautomation_added- event_name - pipeline_name - workflow_name
Automation removedautomation_removed- event_name - pipeline_name - workflow_name
Outgoing webhook addedoutgoing_webhook_added- all_events Available values: true/false - events: Listed only if all_events are false. - workspace_webhook_id
Outgoing webhook updatedoutgoing_webhook_updated- all_events true/false - events: Listed only if all_events are false - workspace_webhook_id
Outgoing webhook deletedoutgoing_webhook_deleted- all_events Available values: true/false - events Listed only if all_events are false - workspace_webhook_id
Stopped managing releasestopped_managing_release- reason_for_stopping Available values: abandoned/completed externally
Release candidate source changedrelease_candidate_source_changed- from_source Available values: ci/api/empty string - to_source Available values: ci/api - from_branch: Only if the value of from_source is ci - from_workflow: Only if the value of from_source is ci. - to_branch: Only if the value of to_source is ci. - to_workflow: Only if the value of to_source is ci.
Release candidate auto select latest build disabledrelease_candidate_auto_select_latest_build_disabled
Release candidate auto select latest build enabledrelease_candidate_auto_select_latest_build_enabled
Release candidate build selectedrelease_candidate_build_selected- file_name - version - version_code
TestFlight upload startedtestflight_upload_started- file_name - version - version_code
TestFlight upload failedtestflight_upload_failed- file_name - version - version_code
TestFlight upload completedtestflight_upload_completed- file_name - version - version_code
TestFlight processing failedtestflight_processing_failed- file_name - version - version_code
TestFlight processing completedtestflight_processing_completed- file_name - version - version_code
TestFlight what to test addedtestflight_what_to_test_added- language - what_to_test
TestFlight what to test changedtestflight_what_to_test_changed- language - what_to_test
TestFlight what to test deletedtestflight_what_to_test_deleted- language
TestFlight app review submittedtestflight_app_review_submitted- testflight_beta_build_id
TestFlight app review approvedtestflight_app_review_approved- testflight_beta_build_id
TestFlight app review rejectedtestflight_app_review_rejected- testflight_beta_build_id
TestFlight distribution startedtestflight_distribution_started- group_id - testflight_beta_build_id
TestFlight distribution start failedtestflight_distribution_start_failed- group_id - testflight_beta_build_id
TestFlight distribution stoppedtestflight_distribution_stopped- group_id - testflight_beta_build_id
Google Play upload startedgoogle_play_upload_started- file_name - version - version_code
Google Play upload completedgoogle_play_upload_completed- file_name - version - version_code
Google Play upload failedgoogle_play_upload_failed- file_name - version - version_code
Google Play testing track release completedgoogle_play_testing_track_release_completed- file_name - track_name - version - version_code
Google Play testing track release failedgoogle_play_testing_track_release_failed- file_name - track_name - version - version_code
Approval tasks completedapproval_tasks_completed- approval_task_ids - skipped_with_zero_tasks (boolean)
Approval task addedapproval_task_added- approval_id - assigned_to - created_by - description - due_date - title
Approval task changedapproval_task_changed- approval_id - assigned_to - created_by - description - due_date - title
Approval task completedapproval_task_completed- approval_id - assigned_to - created_by - description - due_date - title
Approval task deletedapproval_task_deleted- approval_id - assigned_to - created_by - description - due_date - title
Approval task reopenedapproval_task_reopened- approval_id - assigned_to - created_by - description - due_date - title
App store version createdapp_store_version_created- version
App store version updatedapp_store_version_updated- version
Metadata localization addedmetadata_localization_added- language - added_values
Metadata localization changedmetadata_localization_changed- language - changed_values
Metadata localization removedmetadata_localization_removed- language
Release settings changedrelease_settings_changed- earliest_release_date - phased_release - release_type - version_string
Phased release enabledphased_release_enabled
Phased release disabledphased_release_disabled
App store review submittedapp_store_review_submitted- file_name - version - version_code
App store review cancelledapp_store_review_cancelled- file_name - version - version_code
App store review rejectedapp_store_review_rejected- file_name - reason - version - version_code
App store review approvedapp_store_review_approved- file_name - version - version_code
App store release cancelledapp_store_release_cancelled- file_name - version - version_code
Phased release pausedphased_release_paused- percentage_of_users
Phased release resumedphased_release_resumed- percentage_of_users
App store release startedapp_store_release_started
App store release completedapp_store_release_completed
Google Play release notes localization addedgoogle_play_release_notes_localization_added- language - release_notes
Google Play release notes localization changedgoogle_play_release_notes_localization_changed- language - release_notes
Google Play release notes localization removedgoogle_play_release_notes_localization_removed- language - release_notes
Google Play release startedgoogle_play_release_started- release_method - staged_release
Google Play rollout percentage changedgoogle_play_rollout_percentage_changed- release_method - rollout_percentage_from - rollout_percentage_to
Google Play automated rollout configuredgoogle_play_automated_rollout_configured- rollout_start_time
Google Play automated rollout pausedgoogle_play_automated_rollout_paused- rollout_percentage
Google Play automated rollout resumedgoogle_play_automated_rollout_resumed- rollout_percentage
Google Play automated rollout cancelledgoogle_play_automated_rollout_cancelled
Google Play release completedgoogle_play_release_completed