When a campaign has a Webhook URL set, Spinlet POSTs this JSON body to it on every spin — whether the visitor won a prize or not.
{
"event": "spin",
"campaignId": "GgWeR0P766UbLI7cYXYI",
"campaignName": "Summer sale",
"email": "visitor@example.com",
"prizeLabel": "10% off",
"prizeCode": "SPIN10",
"pageUrl": "https://yourshop.com/collections/all",
"variant": "a",
"createdAt": "2026-09-29T18:32:07.000Z"
}| Key | Type | Description |
|---|---|---|
| event | string | Always "spin" today — reserved in case other event types are added later. |
| campaignId | string | The Spinlet campaign ID (matches the URL in your dashboard). |
| campaignName | string | The campaign's name, as set in the dashboard. |
| string | The email address the visitor entered before spinning. | |
| prizeLabel | string | The prize’s display label, e.g. "10% off" or "No luck". |
| prizeCode | string | null | The discount/coupon code tied to the prize, or null if that prize has no code. |
| pageUrl | string | null | The URL of the page the widget was shown on, or null if it couldn't be determined. |
| variant | "a" | "b" | Which A/B test variant the visitor saw. Always "a" if A/B testing is off for this campaign. |
| createdAt | string | ISO 8601 timestamp of when the spin was recorded, in UTC. |
POST with Content-Type: application/json.