Skip to main content
cURL
Cost: Free.
Needs the webhooks:write scope. Events start reaching the endpoint about 30 seconds after you create it.
The answer carries the endpoint’s signing secret (whsec_...) once. Store it: you need it to verify deliveries, and no other call shows it again.

Choose events and shops

Give up to 20 entries. Alura doesn’t keep a list of Etsy’s types, so a type Etsy adds later reaches every entry that matches it. Order events reveal that an order exists, so *, order.* and any order. type need the orders:read scope as well. Without it, the call answers 403 insufficient_scope. shop_ids limits the endpoint to up to 100 of your connected shops. Leave it out, or set it to null, for every connected shop, including shops connected later. A shop that isn’t connected to the workspace answers 404.

The URL

It must be HTTPS on a public host: not localhost or a private, loopback, link-local or metadata address. No credentials or fragment in it, and at most 2,048 characters once percent-encoded.
Alura stores a workspace’s events only from its first endpoint on. Nothing from before exists, in deliveries or in List events.
A workspace has at most 10 endpoints. Creating an 11th answers 409 conflict.Send an Idempotency-Key to retry safely: a retry with the same key and request answers the first result, with the same secret. See Idempotency.
Next, send a test event and check it arrives. How deliveries and retries work is on Webhooks and events.

Authorizations

Authorization
string
header
required

An API key: Authorization: Bearer alura_sk_....

Headers

Idempotency-Key
string

Makes a retry safe: the same key with the same request within 24 hours returns the first result (with Idempotent-Replayed: true) instead of writing again. The same key with a different request is a 409 conflict; while the first request still runs, 409 idempotency_processing.

Required string length: 1 - 255

Body

application/json
url
string
required

The HTTPS URL Alura sends events to: a public host.

Maximum string length: 2048
event_types
string[]
required

Event types to receive: * for every type, an exact type such as order.paid, or a prefix such as order.*. Order events need the orders:read scope too.

Required array length: 1 - 20 elements
Maximum string length: 200
Pattern: ^(\*|[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*(\.\*)?)$
shop_ids
string[] | null

Only events of these connected shops (Etsy shop IDs). Leave out or null for every connected shop, including shops connected later. A shop that isn't connected to the workspace is 404.

Required array length: 1 - 100 elements
Pattern: ^[1-9]\d{0,18}$
description
string | null

A note for yourself, up to 500 characters.

Maximum string length: 500

Response

OK

object
string
required
Allowed value: "webhook_endpoint"
id
string
required

we_...

url
string
required

Where events are sent: an HTTPS URL.

description
string | null
required

Your note for this endpoint; null when none was set.

event_types
string[]
required

Etsy's event types this endpoint receives: * for every type, an exact type such as order.paid, or a prefix such as order.*.

shop_ids
string[] | null
required

Only events of these connected shops; null for every connected shop of the workspace, including shops connected later.

status
enum<string>
required

enabled receives events; disabled receives none until enabled again.

Available options:
enabled,
disabled
disabled_reason
enum<string> | null
required

Why a disabled endpoint is disabled: manual (PATCH) or failing (deliveries kept failing). Null while enabled.

Available options:
manual,
failing
created_at
string
required

When the endpoint was created (ISO 8601, UTC).

secret
string
required

The signing secret (whsec_...). Shown once, in this answer; store it to verify deliveries.