> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Expo Webhook Setup Guide

> Configure Expo to deliver events to StackOne.

## Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See [Getting Started](/connectors/expo#getting-started) on the Expo connector page.

<section data-guide-section data-guide-scopes="">
  <h2>Register the webhook endpoint with EAS</h2>

  <p>Expo delivers events to the StackOne Native Webhook URL once you register a webhook on your app. Expo does not provide a web UI for this, so you register it with the EAS CLI (or the connector's Create Webhook action). Each webhook covers a single app and a single event type, so repeat the registration for every app and event type you want delivered.</p>

  <Steps>
    <Step title="Retrieve the Native Webhook URL from StackOne">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>The <strong>Native Webhook URL</strong> is generated once an account has been linked. You will paste this into the EAS webhook you create.</p>

        <ul>
          <li>Open the linked account in StackOne.</li>
          <li>Copy the value from <strong>Native Webhook URL</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Create the webhook with the EAS CLI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Run the EAS CLI from your project and follow the prompts, or pass the values as flags.</p>

        <ul>
          <li>Run `eas webhook:create`.</li>
          <li>Choose the event type when prompted, or pass `--event BUILD` or `--event SUBMIT`.</li>
          <li>Provide the Native Webhook URL when prompted, or pass it with `--url`.</li>
          <li>Provide a signing secret of at least 16 characters when prompted, or pass it with `--secret`. Keep this secret — it is used to verify delivery signatures.</li>
          <li>Repeat for each app and for each event type (`BUILD` and `SUBMIT`) you want delivered.</li>
        </ul>
      </div>
    </Step>

    <Step title="Register with the Create Webhook action (alternative)">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Instead of the CLI, you can register the same webhook through the connector's <strong>Create Webhook</strong> action. Call it once per app and event type, passing the app ID, the Native Webhook URL, the event type, and a signing secret.</p>
      </div>
    </Step>

    <Step title="Review existing webhooks">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Use the EAS CLI to review or change webhooks you have already created.</p>

        <ul>
          <li>List webhooks with `eas webhook:list`.</li>
          <li>Update a webhook with `eas webhook:update --id WEBHOOK_ID`.</li>
          <li>Remove a webhook with `eas webhook:delete`.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Add your Expo account name to this connection</h2>

  <p>Inbound events are matched to this account by the account name Expo includes on every delivery. Set it on the connection so events route to the right place.</p>

  <Steps>
    <Step title="Set the Expo account name">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Edit this connection in StackOne and fill the <strong>Expo Account Name</strong> field with your Expo account or organization name (the same value returned by the List Accounts action).</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available webhook events</h2>

  <p>The following Expo events can be delivered. Only the event types you register a webhook for are delivered — Expo sends nothing for event types you have not subscribed to.</p>

  <Steps>
    <Step title="Build and submit events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events fired by the EAS build and store-submission lifecycle.</p>

        <ul>
          <li><strong>Build</strong> (`BUILD`) — Fired when an EAS build finishes, errors, or is canceled</li>
          <li><strong>Submit</strong> (`SUBMIT`) — Fired when an EAS store submission finishes, errors, or is canceled</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Delivery format</h2>

  <p>Details of how Expo signs and retries webhook deliveries.</p>

  <Steps>
    <Step title="Verify the signature">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Expo signs each delivery so you can confirm it came from Expo.</p>

        <ul>
          <li>Each request carries an `expo-signature` header — a hex-encoded HMAC-SHA1 digest of the request body, keyed by the signing secret you set when creating the webhook.</li>
        </ul>
      </div>
    </Step>

    <Step title="Review the retry behavior">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Failed deliveries are retried automatically.</p>

        <ul>
          <li>If your endpoint responds with a status code outside the 200–399 range, Expo retries delivery a few more times with exponential back-off.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.