Webhooks
Zapier Integration

Zapier Integration

Connect Loyalite to 6,000+ apps with Zapier. Loyalite works in both directions:

DirectionWhat it meansHow
TriggerLoyalite fires an event → Zapier runs a ZapOutbound webhooks (this page)
ActionSomething happens elsewhere → Zapier calls LoyaliteWebhooks by Zapier action (this page)

Part 1 — Loyalite as a Trigger

Use this when you want to react to loyalty events — a customer enrolls, earns stamps, or redeems a coupon — and do something in another app.

Examples:

  • Add new loyalty customers to Mailchimp, HubSpot, or Notion
  • Send a Slack message when a customer reaches a stamp milestone
  • Log every stamp earned to a Google Sheet
  • Trigger an email campaign when a coupon is redeemed

Setup guide

Create a new Zap

Go to zapier.com (opens in a new tab)+ CreateZaps.

Add the trigger: Webhooks by Zapier

  1. In the trigger step, search for "Webhooks by Zapier".
  2. Select Catch Hook as the event.
  3. Click Continue.

Copy your Zapier webhook URL

Zapier will show you a unique URL like:

https://hooks.zapier.com/hooks/catch/123456/abcdef/

Copy this URL.

Add the webhook to Loyalite

  1. Open the merchant app.
  2. Go to AccountSettingsIntegrationsWebhooks.
  3. Tap Add Webhook.
  4. Paste the Zapier URL as the Endpoint URL.
  5. Optionally, add a description like "Zapier — new customer alerts".
  6. Select the event types you want to receive (or leave as All Events).
  7. Tap Save.
  8. Copy the signing secret shown — you won't need it in Zapier for basic use, but store it safely if you want to verify signatures later.
⚠️

The signing secret is shown only once at creation. Store it in a secure place (e.g. a password manager or secrets vault). If you lose it, you can rotate it from the endpoint settings, but existing integrations that rely on signature verification must be updated.

Send a test event

In the merchant app webhook screen, tap the endpoint → Test → choose an event type (e.g. customer.enrolled).

Back in Zapier, click Test trigger — Zapier should detect the payload.

If Zapier doesn't detect the test, make sure the Loyalite test delivery succeeded (check the Delivery Log in the merchant app). Zapier only detects payloads sent while it's actively listening.

Build your Zap actions

With the trigger detected, Zapier shows you the payload fields. Use them to build your action steps:

Example: Add to Mailchimp

  • Action: Mailchimp → Add/Update Subscriber
  • Email field: map data__masked_email (note: this is the masked form — full email is never available)
  • Tags: "Loyalite Customer"

Example: Google Sheets row

  • Action: Google Sheets → Create Spreadsheet Row
  • Map data__customer_code, data__stamps_added, data__stamp_balance, occurred_at

Turn on your Zap

Click Publish to activate. Your Zap will now run every time Loyalite fires the selected events.

Filtering by event type in Zapier

To handle multiple event types differently in a single Zap, use Zapier's Filter step after the trigger:

  1. Add a Filter step after the Webhooks trigger.
  2. Set: event(Text) Exactly matchesstamp.earned

Or use Zapier's Paths feature to branch by event type.

Notes on masked email

Loyalite never exposes full customer emails in webhook payloads. The masked_email field (e.g. j***@gmail.com) is suitable for display only — it cannot be used to send emails (e.g. as a Mailchimp subscriber address). If you need to contact customers, use a tool that lets customers opt in independently (e.g. an in-app form in your own system).

⚠️

Do not map data__masked_email to the email address field in Mailchimp or any other email platform. The masked form is not a valid deliverable email address.


Part 2 — Loyalite as an Action

Use this when something happens in another app and you want Loyalite to record a transaction or enroll a customer.

Examples:

  • Shopify order placed → earn points for the customer
  • Typeform / Tally form submitted → enroll the customer in Loyalite
  • WooCommerce order completed → earn stamps
  • Customer fills in a manual redemption form → redeem points via Loyalite

All actions use Webhooks by Zapier (action step) to POST to the Loyalite POS API.

Authentication

You need your Loyalite API key for every action step. Find it in Merchant App → Settings → Integrations.

Every Webhooks by Zapier action step must include this header:

HeaderValue
X-Api-KeyYour Loyalite secret key
Content-Typeapplication/json

Action: Enroll a customer

Trigger example: Customer submits a sign-up form (Typeform, Google Forms, Tally…)

Add a Webhooks by Zapier action step

In your Zap, add an action → search "Webhooks by Zapier" → select POST.

Configure the request

  • URL: https://{your-slug}.loyalite.app/webhook/customer
  • Payload Type: json
  • Data:
    email            → (map from your form trigger)
    consent_terms    → true
    consent_privacy  → true
  • Headers:
    X-Api-Key     → your secret key
    Content-Type  → application/json

Use the response in later steps

Zapier makes the response fields available for mapping. Key fields:

FieldDescription
data__customer_codeThe customer's 6-digit code
data__is_newtrue if just enrolled, false if already existed
data__point_balanceCurrent point balance
data__stamp_countCurrent stamp count

Action: Earn points or stamps

Trigger example: New order in Shopify / WooCommerce

Add a Webhooks by Zapier action step

Action → Webhooks by ZapierPOST.

Configure the request

  • URL: https://{your-slug}.loyalite.app/webhook/pos
  • Payload Type: json
  • Data:
    customer_code → (map from a previous enroll step or your own DB)
    amount        → (map order total from trigger)
    card_type     → point   (or stamp)
    external_id   → (map order ID — ensures idempotency on retries)
  • Headers: X-Api-Key + Content-Type
⚠️

Always map external_id to a unique order or transaction ID. If Zapier retries the step, the duplicate will be detected and ignored automatically — no double points.

Full Shopify → Loyalite example

  1. Trigger: Shopify → New Order
  2. Action 1: Webhooks by Zapier → POST /webhook/customer
    • email → Shopify customer.email
    • consent_termstrue (ensure your Shopify checkout has Loyalite consent)
    • consent_privacytrue
  3. Action 2: Webhooks by Zapier → POST /webhook/pos
    • customer_code → from step 2 response data__customer_code
    • amount → Shopify total_price
    • card_typepoint
    • external_id → Shopify id (order ID)

Action: Redeem points or stamps

Trigger example: Customer submits a redemption request form

Add a Webhooks by Zapier action step

Action → Webhooks by ZapierPOST.

Configure the request

  • URL: https://{your-slug}.loyalite.app/webhook/redeem
  • Payload Type: json
  • Data:
    customer_code → (from lookup or form input)
    value         → (number of points/stamps to deduct)
    card_type     → point   (or stamp)
    external_id   → (unique ID for this redemption)
  • Headers: X-Api-Key + Content-Type

Handle insufficient balance

If the customer doesn't have enough balance, Loyalite returns HTTP 422. In Zapier, add a Filter step before this action to check that the customer's balance (from a prior lookup step) covers the redemption amount.


Action: Look up a customer's balance

Trigger example: Before showing a reward option, check the customer's current balance.

Add a Webhooks by Zapier action step

Action → Webhooks by ZapierGET.

Configure the request

  • URL: https://{your-slug}.loyalite.app/webhook/customer?code=(customer_code) (replace (customer_code) with the Zapier field containing the customer code — e.g. from a previous enroll step)
  • Headers: X-Api-Key

Use the response

The response includes data__stamp_count and data__point_balance. Use these in a Filter step to only proceed if the balance meets a threshold.