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

# View and replay incoming Stripe billing webhook events

> Review the 50 most recent Stripe events ShopWrk has processed, understand event statuses, and replay failed events after resolving the underlying cause.

ShopWrk receives webhook events from Stripe whenever something happens with your billing — a payment succeeds, an invoice is created, or your subscription status changes. The webhook log at **Settings → Webhooks** shows the 50 most recent events so you can see what has been processed and investigate anything that did not succeed.

<Note>
  This page shows Stripe events received by ShopWrk. It does not show events you send to other services. If no events appear yet, the first will arrive when a customer pays an invoice or your Stripe account updates.
</Note>

## Reading the event log

Each row in the event log represents one Stripe event. The columns are:

| Column        | Description                                                                                           |
| ------------- | ----------------------------------------------------------------------------------------------------- |
| **Event**     | The Stripe event ID (for example, `evt_1ABC...`). This ID matches the event in your Stripe dashboard. |
| **Type**      | The Stripe event type, such as `payment_intent.succeeded` or `invoice.payment_failed`.                |
| **Status**    | Whether the event succeeded, is pending, or failed.                                                   |
| **Attempts**  | How many times ShopWrk has tried to process the event.                                                |
| **Received**  | How long ago ShopWrk received the event from Stripe.                                                  |
| **Succeeded** | When the event was successfully processed, or `—` if it has not.                                      |

## Event statuses

<CardGroup cols={3}>
  <Card title="Succeeded" icon="check-circle" href="/settings/webhooks">
    The event was received and processed without errors. No action is needed.
  </Card>

  <Card title="Pending" icon="clock" href="/settings/webhooks">
    The event has been received but processing has not completed. This is normal briefly after an event arrives.
  </Card>

  <Card title="Failed" icon="x-circle" href="/settings/webhooks">
    Processing encountered an error. The error message is shown below the status badge. The event persists in the log so it can be replayed after the cause is fixed.
  </Card>
</CardGroup>

## Replaying a failed event

If an event fails — for example, because of a temporary network issue or a misconfigured integration — you can replay it once you have resolved the underlying cause.

<Warning>
  Replaying an event re-fetches it from Stripe and re-runs the handler. For payment-related events this has real-world side effects. Only replay an event after you have confirmed the original failure is fixed.
</Warning>

<Steps>
  <Step title="Find the failed event">
    Look for any row with a **Failed** status badge. The error message below the badge describes what went wrong.
  </Step>

  <Step title="Resolve the cause">
    Fix whatever caused the failure before replaying. For example, if the failure was due to a past-due payment, update the payment method first.
  </Step>

  <Step title="Click Replay">
    Click the **Replay** button on the failed event row. A confirmation dialog appears describing the event and warning about side effects.
  </Step>

  <Step title="Confirm the replay">
    Click **Replay event** in the confirmation dialog. ShopWrk re-fetches the event from Stripe and runs the handler again. A success or error message appears when the replay completes.
  </Step>
</Steps>

<Note>
  The **Replay** button is only available to users with the **Owner** role. Admins see an "Owner only" indicator instead.
</Note>

## When to use replay

Replay is useful when:

* A payment event failed due to a temporary error and the payment itself actually succeeded in Stripe
* A subscription update did not apply because of a processing error
* You updated a misconfigured integration and need the event to re-run

If the same event fails repeatedly after replaying, contact ShopWrk support with the event ID so the issue can be investigated.
