stmpr Knowledge base

Webhooks and delivery log

Forward events, with signatures and retries.

Webhooks send signed HTTPS requests when loyalty activity happens, such as customer enrollment, stamps, reward readiness, or redemption.

Use webhooks when another system should react immediately. The delivery log shows attempts and response codes so you can find and correct failed endpoints.

Your receiver must verify the signature and process each event idempotently because a network retry can deliver the same event more than once.

https://stmpr.io/dashboard/developers · Webhooks
Webhook setup modal with wallet scope and event selection
Webhook setup modal with wallet scope and event selection
Workflow
  1. 1stmpr loyalty event
  2. 2Signed HTTPS webhook
  3. 3Your automation or backend

Step by step

  1. Open Developers, then API & Webhooks.
  2. Add an HTTPS endpoint and optionally limit it to one loyalty card.
  3. Select only the events the receiver actually needs.
  4. Store the signing secret securely and verify every payload before processing it.
  5. Return a 2xx response quickly, then perform slower work asynchronously.
  6. Use the event ID to prevent duplicates and review the delivery log when an endpoint fails.

What a webhook request contains

  • Request body: the event name, the created_at timestamp and the data object.
  • data.wallet: the loyalty card's id and name.
  • data.customer: the guest's id, four digit code, stamp count, stamps required, whether the reward is ready, and the enrollment and last activity timestamps.
  • customer.created: a guest joined, with no extra field.
  • stamp.added: the above plus the source of the stamp (manual, api, auto, survey_reward, kiosk).
  • stamp.removed: the same as adding, with the source of the removal.
  • reward.ready: the guest reached the stamps the reward needs, with no extra field.
  • reward.redeemed: the type of redemption (staff, manual, auto, api).
  • pass.updated: which passes were refreshed on the phone (apple, google).
  • Headers: X-Stmpr-Event carries the event name, X-Stmpr-Delivery the delivery id, and X-Stmpr-Signature is t=timestamp,v1=HMAC-SHA256 signed with your signing secret.
  • Response: we expect a 2xx within 10 seconds. Without one we retry five times in total, waiting 10 seconds, 1 minute, 5 minutes and 15 minutes.

Example request per event

customer.created
{
    "event": "customer.created",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 0,
            "stamps_required": 10,
            "ready_to_redeem": false,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        }
    }
}
stamp.added
{
    "event": "stamp.added",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 7,
            "stamps_required": 10,
            "ready_to_redeem": false,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        },
        "source": "manual"
    }
}
stamp.removed
{
    "event": "stamp.removed",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 6,
            "stamps_required": 10,
            "ready_to_redeem": false,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        },
        "source": "manual"
    }
}
reward.ready
{
    "event": "reward.ready",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 10,
            "stamps_required": 10,
            "ready_to_redeem": true,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        }
    }
}
reward.redeemed
{
    "event": "reward.redeemed",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 0,
            "stamps_required": 10,
            "ready_to_redeem": false,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        },
        "type": "staff"
    }
}
pass.updated
{
    "event": "pass.updated",
    "created_at": "2026-09-01T14:12:03+00:00",
    "data": {
        "wallet": {
            "id": "w_8Kd2Qm",
            "name": "Kávé hűségkártya"
        },
        "customer": {
            "id": "c_9YbVt3xQ",
            "display_code": "4693",
            "stamps_count": 7,
            "stamps_required": 10,
            "ready_to_redeem": false,
            "created_at": "2026-07-14T09:20:11+00:00",
            "last_activity_at": "2026-09-01T14:12:03+00:00"
        },
        "passes": [
            "apple",
            "google"
        ]
    }
}
Free plan available

Launch your first
digital loyalty card.

Create your first Apple and Google Wallet-based loyalty card and try stmpr free.

Try it free
No credit card required Free plan for small businesses For small businesses and multi-location companies