Skip to main content
Plan requirement: This feature requires an On-call Standard or higher subscription. Learn more
Use EAS webhooks to sync Expo EAS builds and submissions to Flashduty On-call. Each build and each submission becomes one Flashduty change, recorded once when it ends. EAS sends a webhook only when a build or submission ends and has no start event, so a change has no Processing state and is recorded directly with its end state: Done, Failed, or Canceled. A change here is an app build or a store submission, not a deployment of a running service.

In Flashduty On-call


  1. In the Flashduty console, go to Integration Center → Change Events
  2. Select Expo EAS and enter an integration name
  3. To assign changes to specific channels, add rules under the integration’s Routes that match labels such as project, platform, or kind
  4. Click Save and copy the generated Push URL

Configure Expo EAS


1

Create a webhook for builds

In the project directory (EAS CLI installed and logged in), run:
The command asks for a signing secret of at least 16 characters. Flashduty authenticates with the integration key in the push URL and does not verify expo-signature, so any value of that length works.The push URL carries the key in its path (.../event/push/change/expo-eas/<integration_key>), not in a ?integration_key= query string, because EAS drops the query string of a webhook URL when it delivers. Paste the push URL exactly as Flashduty shows it.
2

Create a webhook for submissions

To sync EAS Submit results as well, run the command again with the SUBMIT event:
Both events use the same push URL; Flashduty tells builds and submissions apart from the payload.
3

Verify

Webhooks are configured per project: create them in each project you want to sync, and list them with eas webhook:list. EAS has no test delivery: run eas build or eas submit, and the change appears in the Flashduty change list when it ends.

What one change is


Status mapping


The EAS documentation lists only these three end states. Any other value makes the delivery return InvalidParameter and records no change.

Change content


Labels for routing and filtering the change list:

FAQ


EAS webhooks fire only when a build or submission ends and do not report queued or running states. The change appears with its final status when it ends.
No. EAS retries with exponential back-off after a response outside 200–399, with the same content, and Flashduty deduplicates on the end time, so the change is recorded once.
No. Flashduty authenticates with the integration key in the push URL path and does not verify expo-signature. EAS requires a secret of at least 16 characters when you create the webhook; any value works.
  • id is missing: the payload is incomplete; make sure it comes from an EAS webhook
  • unknown status: a status value that is not mapped yet; contact us to add it
  • delivery is neither a build nor a submission: the payload has neither a build page URL (buildDetailsPageUrl) nor a submission page URL (submissionDetailsPageUrl)
  • invalid completedAt or invalid updatedAt: a timestamp field is malformed