{
"id": "evt_su_aB3xK9d2Qe",
"type": "card.claimed",
"created_at": "2026-10-21T15:00:00.000Z",
"company_id": "cpy_7Ym2p0Lx3Q",
"data": {
"card_type": "gift_card",
"participant_id": "pcpt_R4k1LmQ8vB",
"participant_email": "ada@example.com",
"program_id": "prg_Z8q3NnW2xK",
"amount": 25,
"currency": "usd",
"claimed_at": "2026-10-21T15:00:00.000Z",
"card_type_specific": {
"provider": null,
"external_id": null
}
}
}Webhooks
card.claimed
The card.claimed webhook: its payload, the X-Hoppier-Signature header and how Hoppier retries.
WEBHOOK
card.claimed
{
"id": "evt_su_aB3xK9d2Qe",
"type": "card.claimed",
"created_at": "2026-10-21T15:00:00.000Z",
"company_id": "cpy_7Ym2p0Lx3Q",
"data": {
"card_type": "gift_card",
"participant_id": "pcpt_R4k1LmQ8vB",
"participant_email": "ada@example.com",
"program_id": "prg_Z8q3NnW2xK",
"amount": 25,
"currency": "usd",
"claimed_at": "2026-10-21T15:00:00.000Z",
"card_type_specific": {
"provider": null,
"external_id": null
}
}
}card.claimed means Hoppier has set a reward aside for a participant. It does not mean they spent anything, opened an email or chose a gift card.Headers
t=<unix seconds>,v1=<signature>, where the signature is the hex HMAC-SHA256 of <t>.<raw request body> with your signing secret. While a secret is being rotated you get two v1= values; accept the request if either matches.
Body
application/json
The event's id. It stays the same on every retry, so use it to ignore duplicates.
Example:
"evt_su_aB3xK9d2Qe"
Allowed value:
"card.claimed"Your company's id. Starts with cpy_.
Example:
"cpy_7Ym2p0Lx3Q"
Show child attributes
Show child attributes
Response
Answer with any 2xx status within 10 seconds to confirm delivery.