Registering endpoints
Connect Aly to your backend, automation tool, or queue by registering a webhook receiver.
Dashboard, REST, MCP, and CLI flows for creating webhook endpoints; rotating and deleting secrets.
Four ways to register a webhook endpoint. They all produce the same record. Use whichever fits the moment — dashboard for ad-hoc, CLI/REST/MCP for code.
Dashboard
- Go to Settings → Webhooks.
- Click New endpoint.
- Paste the receiving URL.
- Pick events. Save.
- Copy the signing secret — shown once.
REST
curl -X POST https://aly.store/api/storefront/v1/merchant/webhooks \ -H "Authorization: Bearer aly_..." \ -H "Content-Type: application/json" \ -d '{ "url": "https://my-app.example/aly/webhooks", "events": ["order.created", "order.fulfilled", "order.refunded"], "site_slug": "acme", "active": true }'{ "id": "wh_8c...", "url": "https://my-app.example/aly/webhooks", "events": ["order.created", "order.fulfilled", "order.refunded"], "site_slug": "acme", "active": true, "secret": "whsec_8a3d...e2", "created_at": "..."}secret is returned exactly once. Store it server-side; it backs every signature verification.
MCP
From any MCP client (Claude Desktop, Cursor, custom):
{ "method": "tools/call", "params": { "name": "webhooks.endpoints.create", "arguments": { "url": "https://my-app.example/aly/webhooks", "events": ["order.created", "order.fulfilled"], "site_slug": "acme" } }}CLI
aly-store-cli webhooks create \ --site-slug acme \ --url https://my-app.example/aly/webhooks \ --event order.created \ --event order.fulfilledEvent filters
Pass an explicit list, or the wildcard "*" for every event in the catalog. We stronglyrecommend an explicit list — it's self-documenting and keeps you immune to new event types appearing in a release.
Per-site vs workspace
Include site_slug to scope an endpoint to one site. Omit it to receive events for every site in the workspace.
Rotating secrets
# RESTcurl -X POST https://aly.store/api/storefront/v1/merchant/webhooks/wh_8c.../rotate-secret \ -H "Authorization: Bearer aly_..."Returns a new secret. The old one is invalidated immediately — make sure your receiver accepts both during the deploy window if you can't do a synchronous swap.
Disabling and deleting
PATCH with active: false to pause delivery (events are dropped, not queued). DELETE for permanent removal — past deliveries remain visible in the audit log for the retention window.
Was this page helpful?