If your system can't receive webhooks, fetch events from the feed instead. The feed is also how you backfill: when you first connect, or after a webhook was deactivated.
GET /integrations/events| Query param | |
|---|---|
type |
Required. customer.enrolled, stamp.added, reward.earned, reward.redeemed or card.voided. Anything else, including card.unvoided, returns 400 |
limit |
1–100, default 25 |
since |
ISO-8601 timestamp. Only events with occurred_at after it (not equal to it). Without a timezone, it's read as UTC |
template_slug |
Only events for this template |
curl "https://app.getponch.com/api/integrations/events?type=stamp.added&since=2026-08-11T13:27:59.253264%2B00:00" \
-H "Authorization: Bearer $PONCH_API_KEY"
Encode the + in a timezone offset as %2B, or use the Z form
(2026-08-11T13:27:59.253264Z).
The response is a JSON array, newest first, of events in the
same shape a webhook delivers. On the feed, event_id equals id.
| Error | When |
|---|---|
400 |
Unknown type, or a since that isn't a valid timestamp |
Poll each event type you care about separately:
since to get the most recent events.occurred_at.since.id, as you would for webhooks.Poll at most once a minute per connection.
A full page means you may have missed events. The feed returns the newest
limit events after since, and you can't page back further. If more events
than limit happened between two polls, the older ones aren't returned, and
moving since forward skips them. If a poll returns exactly limit items,
treat the gap as possible: poll more often, use limit=100, or switch to
webhooks for a busy store. Several rewards earned by one bulk stamp share the
same occurred_at, which is another reason not to set limit low.
Feed items are built from Ponch's current records each time you ask, so they
show the card as it is now, not as it was when the event happened. For
example, a customer.enrolled item for a card that was later deactivated shows
card.status: "voided".
A webhook payload is a snapshot taken when the event happened and never changes. Use webhooks to learn what happened at the time; use the feed to learn what's true now.
commit 5e140ef5493db7e98830f4b7ef4d620de5419518 Author: Peter Sanchez <peter@netlandish.com> Date: 2026-10-20T06:45:49-06:00 add proper title and descriptions to each page