Skip to main content
Appstle Loyalty webhooks deliver real-time HTTP POST notifications to your endpoint whenever a loyalty event occurs. The webhook infrastructure is powered by Svix, which provides automatic retries, cryptographic signature verification, and detailed delivery logs.
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.
Your endpoint must return a 2xx status code within the timeout window. Return 200 OK immediately and process the event asynchronously to avoid timeouts under load.

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’s data 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.
Each item in the rewards array contains:

Example payloads

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].
Pass the raw request body to the verification function before JSON parsing. Parsing the body first alters the byte representation and will cause verification to fail.
For Go, Ruby, PHP, Java, and C# examples, see the Svix documentation.

Idempotency

Webhooks may be delivered more than once due to network conditions or retries. Use the svix-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.

Local development

Use a tunneling tool such as ngrok to expose your local server during development:

Troubleshooting