Webhooks are available on paid plans. Contact support@appstle.com to enable webhook access on your account.
Setting up an endpoint
1
Open webhook settings
In your Appstle Loyalty admin, go to Settings → Webhooks.
2
Add an endpoint
Click Add Endpoint and enter your publicly accessible HTTPS URL. Your endpoint must be reachable from the internet — localhost URLs will not work.
3
Choose events
Select the event types you want to subscribe to, or subscribe to all events.
4
Save
Click Save. Your endpoint will start receiving events immediately.
How delivery works
Each webhook is an HTTP POST request with a JSON body. Svix handles delivery with:- Automatic retries with exponential backoff (5 attempts over 3 days on failure)
- Unique message IDs for idempotency
- Signed request headers for verification
- Delivery logs and manual replay from Settings → Webhooks → Message Logs
Event types
Payload structure
All events follow the same envelope:Common payload fields
Every event’sdata object includes these fields:
customerLoyaltyDetails fields
Webhook payloads include additional fields (such as
storeCreditBalance, vipTierExpiredAt, rewardedForSharingOnFacebook, and rewardedForSharingOnX) that are not available in the Shopify Flow GraphQL schema. Flow receives a subset of these fields.rewards array contains:
Example payloads
loyalty.sign-up — Customer joined the program
loyalty.sign-up — Customer joined the program
loyalty.earned — Customer earned points
loyalty.earned — Customer earned points
loyalty.redeemed — Customer redeemed points for a reward
loyalty.redeemed — Customer redeemed points for a reward
loyalty.vip-tier-achieved — Customer reached a new tier
loyalty.vip-tier-achieved — Customer reached a new tier
Signature verification
Every webhook request is signed by Svix. Always verify the signature before processing. Svix includes three headers on every request:
Find your webhook signing secret in your Appstle dashboard under Settings → Webhooks → [your endpoint].
Idempotency
Webhooks may be delivered more than once due to network conditions or retries. Use thesvix-id header as an idempotency key to safely deduplicate events in your handler.
Retry schedule
If your endpoint returns a non-2xx response or times out, Svix retries with exponential backoff across 5 attempts over 3 days. View delivery attempts and replay individual events from Settings → Webhooks → Message Logs.