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

# Set Up a Webhook Endpoint in Edplay

> Configure your endpoint URL, subscribe to events, copy your signing secret, and confirm the connection with a test delivery.

You configure webhooks once per workspace. Before you begin, make sure you have the workspace admin role and a publicly reachable HTTPS endpoint. See [Before you start](/webhooks/overview#before-you-start).

## Create the endpoint

<Steps>
  <Step title="Open the webhook settings">
    Go to **Workspace Settings** > **Integrations** > **Webhooks**.

    If nothing is configured yet, you see **No webhook configured yet**.
  </Step>

  <Step title="Enter your endpoint URL">
    Type your URL into **Endpoint URL**. It must start with `https://`, for example:

    ```
    https://example.com/webhooks/edplay
    ```

    Edplay rejects plain `http://` URLs when you save.
  </Step>

  <Step title="Choose your events">
    Under **Events**, select at least one event. See [Events and payloads](/webhooks/events) for what each one means.
  </Step>

  <Step title="Leave deliveries turned on">
    Keep **Deliveries active** enabled. Turning it off pauses sending without losing your configuration.
  </Step>

  <Step title="Save">
    Click **Save**. Your **Signing secret** is generated on this first save and appears below the form.
  </Step>

  <Step title="Store the signing secret">
    Copy the secret into your application configuration and treat it like any other credential. Your receiver needs it to [verify signatures](/webhooks/verify-signature).
  </Step>

  <Step title="Send a test event">
    Click **Send test event**, then check the delivery log. A row with the status **Delivered** confirms your endpoint is reachable and responding correctly.
  </Step>
</Steps>

<Tip>
  You can change the endpoint URL or the event selection at any time. The signing secret stays the same unless you rotate it deliberately.
</Tip>

## Test your endpoint

**Send test event** delivers a sample payload so you can confirm your endpoint is reachable and your signature check passes before real learner activity depends on it.

Two things to expect:

* The test is queued rather than sent inline, so its row appears in the delivery log a moment after you click the button. Click **Refresh** if it is not there yet.
* The test payload has a different shape from a real event. See [The test payload](/webhooks/events#the-test-payload).

<Note>
  **Send test event** is only available once you have saved an endpoint. Until then you see **Save an endpoint before sending a test event.**
</Note>

## Rotate the signing secret

**Rotate secret** issues a new signing secret and invalidates the old one **immediately**. There is no overlap period, so any receiver still verifying with the old secret rejects deliveries until you update it.

To rotate without dropping events:

<Steps>
  <Step title="Pause deliveries">
    Turn **Deliveries active** off and click **Save**. Events stop being sent.
  </Step>

  <Step title="Rotate the secret">
    Click **Rotate secret** and confirm in the dialog.
  </Step>

  <Step title="Update your application">
    Copy the new secret into your configuration and deploy the change.
  </Step>

  <Step title="Resume deliveries">
    Turn **Deliveries active** back on and click **Save**.
  </Step>

  <Step title="Confirm">
    Click **Send test event** and check that the new secret verifies.
  </Step>
</Steps>

<Warning>
  Events that occur while deliveries are paused are **not** queued for later. Keep the pause window as short as you can, and backfill through the API if you miss anything.
</Warning>

## Pause deliveries

Turning **Deliveries active** off keeps your URL and event selection intact but stops all sending. Use it for planned maintenance on your side rather than deleting the configuration.

Next: [Events and payloads](/webhooks/events)
