Webhooks
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
Section titled “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
Section titled “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
Section titled “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.