• Overview
  • Features
  • Pricing
  • Blog
  • Support
  • API
  • View a Demo
  • Get the app

Glow Logo

Introduction

Verification
Handling Requests
Responding

Events

New Member
Member Order Placed
Member Awarded Birthday Points
Member Awarded Anniversary Points
Member Referred
Member Redeemed Reward
Member Redeemed Automatic Reward
Member Points Expired
Member Points Reminder
Member Discount Code Reminder
Member Manual Points Adjustment
Member Manual Points Adjustment API
Member Custom Reward Submission State

Coders Illustration

Glow Loyalty Webhooks

Glow Loyalty webhooks allow you to receive real-time notifications about events related to your loyalty program. Use webhooks to keep your internal systems synced, trigger downstream processes, or build custom integrations. Please take a moment to check out our API documentation as well.



Introduction

Once you've configured a webhook URL and secret in your Glow Loyalty account, Glow will send POST requests to your endpoint whenever one of the subscribed events occurs.

Verification

Each webhook request includes a header X-Glow-Hmac-Sha256 which contains a base64-encoded HMAC signature of the request body signed with your webhook secret. You should compute the HMAC on your end and compare it with the one provided by Glow to confirm authenticity.

Handling Webhook Requests

The following is a simple Node.js (Express) example that:

  • Reads the incoming JSON payload
  • Verifies the HMAC signature using the webhook secret
  • Logs the event and payload data
Node.js/Express Example:

const express = require('express');
const crypto = require('crypto');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json({ type: '*/*' }));

// Your Glow Webhook Secret
const WEBHOOK_SECRET = 'YOUR_WEBHOOK_SECRET_HERE';

app.post('/my-webhook-endpoint', (req, res) => {
    const signature = req.get('X-Glow-Hmac-Sha256');
    const rawBody = JSON.stringify(req.body);

    // Compute HMAC
    const computedHmac = crypto
        .createHmac('sha256', WEBHOOK_SECRET)
        .update(rawBody, 'utf8')
        .digest('base64');

    if (computedHmac !== signature) {
        console.error('Invalid signature! Potential spoofed request.');
        return res.status(401).send('Unauthorized');
    }

    // Signature is valid, proceed.
    console.log('Received webhook event:', req.body.event);
    console.log('Payload:', req.body.data);

    res.status(200).send('OK');
});

app.listen(3000, () => console.log('Webhook listener running on port 3000'));
        

Responding

Your server must respond to a webhook request within 5 seconds, with the 200 response code. If it fails to do so, the webhook will be retried 9 more times over the next 24 hours. After the 10th attempt, webhooks will be disabled in your store. When the issue is resolved, you'll need to re-enable them manually in Settings.

A common best practice to prevent timeouts and other failures is storing webhooks in a message queue for later processing by a background worker. We recommend utilizing the Send Test Webhook event functionality to ensure everything is set up correctly.




Events

New Member

Triggered when a new member joins the loyalty program.

{
    "event": "MEMBER_NEW",
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 50,
            "lifetimePoints": 50,
            "birthday": null,
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-08-23T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "signup",
            "points": 200,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-01-01T12:00:00Z",
            "updatedAt": "2024-01-01T12:00:00Z"
        }
    }
}

Member Order Placed

Triggered when a member places an order.

{
    "event": "MEMBER_ORDER_PLACED",
    "uuid": "550e8400-e29b-41d4-a716-446655440123",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 4110,
            "lifetimePoints": 11630,
            "birthday": null,
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-08-23T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "order",
            "points": 200,
            "orderId": 1234,
            "orderTotal": 19.99,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-01-01T12:00:00Z",
            "updatedAt": "2024-01-01T12:00:00Z"
        }
    }
}

Member Awarded Birthday Points

Triggered when a member earns points for a birthday.

{
    "event": "MEMBER_AWARDED_BIRTHDAY_POINTS",
    "uuid": "550e8400-e29b-41d4-a716-446655440222",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 4110,
            "lifetimePoints": 11630,
            "birthday": "07-21",
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-08-23T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "birthday",
            "points": 200,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-07-21T12:00:00Z",
            "updatedAt": "2024-07-21T12:00:00Z"
        }
    }
}

Member Awarded Anniversary Points

Triggered when a member earns points for their anniversary.

{
    "event": "MEMBER_AWARDED_ANNIVERSARY_POINTS",
    "uuid": "550e8400-e29b-41d4-a716-446655440222",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 4110,
            "lifetimePoints": 11630,
            "birthday": "07-21",
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-07-21T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "anniversary",
            "points": 200,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-07-21T12:00:00Z",
            "updatedAt": "2024-07-21T12:00:00Z"
        }
    }
}

Member Referred

Triggered when a member refers another member.

{
    "event": "MEMBER_REFERRED",
    "uuid": "550e8400-e29b-41d4-a716-446655440333",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customerBeingReferred": {
            "id": 124,
            "shopifyId": 7040200267,
            "email": "[email protected]",
            "firstName": "New",
            "lastName": "Member",
            "pointBalance": 0,
            "lifetimePoints": 0,
            "birthday": null,
            "referralCode": "123abc",
            "referredBy": "599cc8a",
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2024-01-01T12:00:00Z",
            "updatedAt": "2024-01-01T12:00:00Z"
        },
        "customerThatIsReferring": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 4110,
            "lifetimePoints": 11630,
            "birthday": null,
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-08-23T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        }
    }
}

Member Redeemed Reward

Triggered when a member redeems a reward.

{
    "event": "MEMBER_REDEEMED_REWARD",
    "uuid": "45d8c2cc-5b02-4c1f-a135-cf97e26a5188",
    "timestamp": "2024-12-18T02:28:57+00:00",
    "data": {
        "customer": {
            "id": 82,
            "shopifyId": 2344343965,
            "email": "[email protected]",
            "firstName": "Tom",
            "lastName": "Soyer",
            "pointBalance": 826,
            "lifetimePoints": 28669,
            "birthday": null,
            "referralCode": "673f845406397",
            "referredBy": null,
            "multiplier": 1,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": "2024-11-21T19:04:52+00:00",
            "lastDiscountsReminder": null,
            "createdAt": "2024-11-21T19:04:52+00:00",
            "updatedAt": "2024-12-18T02:28:55+00:00"
        },
        "discountCode": {
            "id": 138,
            "customerId": 82,
            "shopifyId": 1598895259949,
            "code": "xJru4kr",
            "numUses": 0,
            "usageLimit": 1,
            "status": "unused",
            "rewardId": 50,
            "orderTotal": 0,
            "orderSource": null,
            "createdAt": "2024-12-18T02:28:55+00:00",
            "updatedAt": "2024-12-18T02:28:55+00:00"
        },
        "reward": {
            "id": 50,
            "name": "$10 Off Coupon",
            "points": 1,
            "type": "fixed",
            "minimum": 0,
            "value": 10,
            "applyTo": "all_orders",
            "prefix": null,
            "collectionId": null,
            "productId": null,
            "variantId": null,
            "vipTier": 0,
            "usageType": "unlimited",
            "numUsesPerCustomer": 1,
            "purchaseType": "both",
            "combinesWithOrder": false,
            "combinesWithProduct": false,
            "combinesWithShipping": false,
            "createdAt": "2024-11-20T16:21:00+00:00",
            "updatedAt": "2024-12-18T02:21:53+00:00"
        }
    }
}

Member Redeemed Automatic Reward

Triggered when a member redeems an automatic/product reward.

{
    "event": "MEMBER_REDEEMED_AUTOMATIC_REWARD",
    "uuid": "cdfeb3de-ffa5-42dd-aad2-d14042d3830f",
    "timestamp": "2024-12-18T02:30:11+00:00",
    "data": {
        "customer": {
            "id": 82,
            "shopifyId": 34342424965,
            "email": "[email protected]",
            "firstName": "Tom",
            "lastName": "Soyer",
            "pointBalance": 825,
            "lifetimePoints": 28669,
            "birthday": null,
            "referralCode": "673f845406397",
            "referredBy": null,
            "multiplier": 1,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": "2024-11-21T19:04:52+00:00",
            "lastDiscountsReminder": null,
            "createdAt": "2024-11-21T19:04:52+00:00",
            "updatedAt": "2024-12-18T02:30:09+00:00"
        },
        "reward": {
            "id": 53,
            "name": "automatic",
            "points": 1,
            "type": "product",
            "minimum": 0,
            "value": 0,
            "applyTo": "all_orders",
            "prefix": null,
            "collectionId": null,
            "productId": 9732966252845,
            "variantId": null,
            "vipTier": 0,
            "usageType": "unlimited",
            "numUsesPerCustomer": 1,
            "purchaseType": "both",
            "combinesWithOrder": false,
            "combinesWithProduct": false,
            "combinesWithShipping": false,
            "createdAt": "2024-12-18T02:29:49+00:00",
            "updatedAt": "2024-12-18T02:29:49+00:00"
        }
    }
}

Member Points Expired

Triggered when a member has their points expired.

{
    "event": "MEMBER_POINTS_EXPIRED",
    "uuid": "550e8400-e29b-41d4-a716-446655440013",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 0,
            "lifetimePoints": 11630,
            "birthday": "07-21",
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-07-21T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "manual",
            "points": -11630,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": "Expiration",
            "emailSent": true,
            "createdAt": "2024-07-21T12:00:00Z",
            "updatedAt": "2024-07-21T12:00:00Z"
        }
    }
}

Member Points Reminder

Triggered when a member is sent a points reminder notification.

{
    "event": "MEMBER_POINTS_REMINDER",
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 50,
            "lifetimePoints": 50,
            "birthday": null,
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": "2018-04-06T01:35:35Z",
            "lastDiscountsReminder": null,
            "createdAt": "2017-08-23T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
    }
}

Member Discount Code Reminder

Triggered when a member is sent a reminder for their unused discount codes.

{
    "event": "MEMBER_DISCOUNT_CODE_REMINDER",
    "uuid": "987f3a4b-6c24-4d55-9003-efd792c3e456",
    "timestamp": "2024-12-18T03:00:00+00:00",
    "data": {
        "customer": {
            "id": 82,
            "shopifyId": 23245343,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bong",
            "pointBalance": 826,
            "lifetimePoints": 28669,
            "birthday": null,
            "referralCode": "673f845406397",
            "referredBy": null,
            "multiplier": 1,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": "2024-11-21T19:04:52+00:00",
            "lastDiscountsReminder": "2024-11-21T19:04:52+00:00",
            "createdAt": "2024-11-21T19:04:52+00:00",
            "updatedAt": "2024-12-18T02:58:00+00:00"
        },
        "discountCodes": [
            {
                "id": 138,
                "customerId": 82,
                "shopifyId": 1598895259949,
                "code": "xJru4kr",
                "numUses": 0,
                "usageLimit": 1,
                "status": "unused",
                "rewardId": 50,
                "orderTotal": 0,
                "orderSource": null,
                "createdAt": "2024-12-18T02:28:55+00:00",
                "updatedAt": "2024-12-18T02:28:55+00:00"
            },
            {
                "id": 139,
                "customerId": 82,
                "shopifyId": 1598895259950,
                "code": "yMne5ty",
                "numUses": 0,
                "usageLimit": 1,
                "status": "unused",
                "rewardId": 51,
                "orderTotal": 0,
                "orderSource": null,
                "createdAt": "2024-12-18T02:29:55+00:00",
                "updatedAt": "2024-12-18T02:29:55+00:00"
            }
        ]
    }
}

Member Manual Points Adjustment

Triggered when a manual points adjustment is done for a member.

{
    "event": "MEMBER_MANUAL_POINTS_ADJUSTMENT",
    "uuid": "550e8400-e29b-41d4-a716-446655441232",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 0,
            "lifetimePoints": 11630,
            "birthday": "07-21",
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-07-21T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "manual",
            "points": -11630,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-07-21T12:00:00Z",
            "updatedAt": "2024-07-21T12:00:00Z"
        }
    }
}

Member Manual Points Adjustment API

Triggered when a manual points adjustment is done for a member through the API.

{
    "event": "MEMBER_MANUAL_POINTS_ADJUSTMENT_API",
    "uuid": "550e8400-e29b-41d4-a716-446655441232",
    "timestamp": "2024-01-01T12:00:00Z",
    "data": {
        "customer": {
            "id": 123,
            "shopifyId": 7040200266,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 0,
            "lifetimePoints": 11630,
            "birthday": "07-21",
            "referralCode": "599cc8a",
            "referredBy": null,
            "multiplier": 1.00,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": null,
            "lastDiscountsReminder": null,
            "createdAt": "2017-07-21T00:12:58Z",
            "updatedAt": "2018-04-09T01:35:35Z"
        },
        "pointLog": {
            "id": 99,
            "customerId": 123,
            "type": "manual",
            "points": -11630,
            "orderId": null,
            "orderTotal": 0,
            "productRewardId": null,
            "description": null,
            "emailSent": true,
            "createdAt": "2024-07-21T12:00:00Z",
            "updatedAt": "2024-07-21T12:00:00Z"
        }
    }
}

Member Custom Reward Submission State

Triggered when a custom reward submission state updates.

{
    "event": "MEMBER_CUSTOM_REWARD_SUBMISSION_STATE",
    "uuid": "abcd1234-5678-90ef-ghij-klmn543210",
    "timestamp": "2024-12-18T04:00:00+00:00",
    "data": {
        "customer": {
            "id": 82,
            "shopifyId": 343443965,
            "email": "[email protected]",
            "firstName": "James",
            "lastName": "Bond",
            "pointBalance": 826,
            "lifetimePoints": 28669,
            "birthday": null,
            "referralCode": "673f845406397",
            "referredBy": null,
            "multiplier": 1,
            "currentVipTierId": null,
            "currentVipTierName": null,
            "lastPointsReminder": "2024-11-21T19:04:52+00:00",
            "lastDiscountsReminder": null,
            "createdAt": "2024-11-21T19:04:52+00:00",
            "updatedAt": "2024-12-18T03:58:00+00:00"
        },
        "customReward": {
            "id": 15,
            "name": "Exclusive Membership",
            "points": 500,
            "recurring": false,
            "description": "Redeemable for VIP access to events.",
            "createdAt": "2024-11-01T10:00:00+00:00",
            "updatedAt": "2024-12-01T12:00:00+00:00"
        },
        "submittedReward": {
            "id": 25,
            "customerId": 82,
            "customRewardId": 15,
            "approvalStatus": "approved",
            "reason": null
        }
    }
}


Glow Loyalty, Rewards & Referrals
[email protected]

Company

  • About Us
  • Terms of Use
  • Privacy Policy
  • Data protection

Overview

  • Features
  • Pricing
  • Shopify App

Support

  • Help Center
  • Contact Support
  • API Documentation
  • Webhooks Documentation
Copyright © 2025 PayWhirl Inc. All Rights Reserved.     Terms of Use     Privacy Policy
This website uses cookies to improve user experience in accordance with our Cookie Policy