# Webhooks

> The webhook Payments via Polar for EDD needs, how Set up in Polar adds it, and how to check it's arriving.

Polar tells your store about payments and refunds through a webhook. It's required: Polar isn't offered at checkout until the mode in use has a webhook secret. Without deliveries, paid orders are completed by the confirmation page or the check 15 minutes later instead, and refunds made in Polar don't reach EDD.

## Set up in Polar

Under each **Webhook secret** in **Downloads › Settings › Payments › Polar**, **Set up in Polar** looks for an endpoint pointing at your store in that Polar organization. It creates one, or switches an existing one on and adds any missing events, then saves its secret. Save the access token first: the button needs the token's `webhooks:write` scope. The result shows as a notice at the top of the settings.

## Adding it by hand

In Polar, go to **Settings › Webhooks** and add an endpoint:

| Setting | Value |
|---|---|
| URL | The address on the **Webhook** line: your site, then `/wp-json/zealden-polar-edd/v1/webhook` |
| Format | Raw |
| Events | `order.paid`, `order.refunded`, `refund.updated` |

Then paste the secret Polar shows into **Webhook secret** and save. Do it in both your live and sandbox organizations.

## Checking it works

The **Webhook** line in the settings shows when Polar last reached your site, or that a delivery was turned away. A turned-away delivery usually means the secret doesn't match: copy it from Polar again.

Every delivery is checked against Polar's signature, using the secret of the organization it came from. An order is completed only by a delivery from the organization it was paid in.

Checked against Payments via Polar for Easy Digital Downloads 1.0.0 on main, 19 October 2026.
