points_redemption/created

Triggered when a customer redeems points for a reward.

Event Type

points_redemption/created

Webhook Payload

{
  "id": 1234567,
  "points_amount": 500,
  "credits_amount": "0.0",
  "reward_id": 789012,
  "applied_at": "2025-04-25T15:08:36.223Z",
  "name": "$5 off coupon",
  "code": "BAL-abc123def456",
  "expires_at": "2025-05-25T15:08:36.223Z",
  "used_at": null,
  "refunded_at": null,
  "source": "points",
  "referred_email": null,
  "reward": {
    "id": 789012,
    "name": "$5 off coupon",
    "enabled": true,
    "points_amount": 500,
    "points_type": "fixed",
    "reward_type": "fixed_amount",
    "source": "points",
    "pretty_display_rewards": "$5 off coupon (500 points required)",
    "icon_url": "https://cdn.example.com/icon.png",
    "pretty_points_amount": "500",
    "purchase_type": "both",
    "recurring_cycle_limit": 3,
    "terms_of_service": {
      "reward_type": "fixed_amount",
      "applies_to": "entire",
      "expiry_months": 1,
      "show_tos": true
    },
    "pretty_terms_of_service": "Expires 1 month(s) after being redeemed."
  },
  "customer": {
    "id": 9876543210987,
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe",
    "dob": null,
    "accepts_marketing": false,
    "orders_count": 0,
    "verified_email": false,
    "total_spent": 0,
    "shopify_tags": [],
    "loyalty_status": "member",
    "points_tally": 27,
    "credits_tally": "0.0",
    "event_type": "points_redemption/created"
  }
}

 

Payload Fields

FieldTypeDescription
idIntegerUnique ID of the redemption event
points_amountIntegerPoints used for this reward
credits_amountFloatCredit value used, if applicable
reward_idIntegerID of the redeemed reward
applied_atISO 8601 stringWhen the reward was redeemed
nameStringName of the reward
codeStringReward code provided to the customer
expires_atISO 8601 stringExpiry date of the reward code
used_atISO 8601 string or nullTimestamp if the reward was used
refunded_atISO 8601 string or nullTimestamp if the reward was refunded
sourceStringSource of the redemption (points or credits)
referred_emailString or nullEmail of referred user, if applicable
rewardObjectSee Reward Object
customerObjectSee Customer Object

Reward Object

FieldTypeDescription
idIntegerReward ID
nameStringReward name
enabledBooleanWhether the reward is currently enabled
points_amountIntegerPoints required to redeem
points_typeStringType of points requirement (e.g. fixed, multiplier)
reward_typeStringType of reward (e.g. fixed_amount, free_product, percentage)
sourceStringSource of redemption (e.g. points)
pretty_display_rewardsStringHuman-readable reward description
icon_urlString (URL)URL of the reward icon (if applicable)
pretty_points_amountStringHuman-readable points amount
purchase_typeStringWhere the reward can be used (one-time, subscription, both)
recurring_cycle_limitInteger or nullNumber of times it can be redeemed in a subscription cycle
product_idString or nullShopify product ID (for free_product rewards)
variant_idsString or nullComma-separated Shopify variant IDs (for free_product rewards)
increment_points_valueInteger or nullStep amount of points (for multiplier-type rewards)
customer_points_getInteger or nullCustomer reward return per increment (for multiplier-type rewards)
min_points_to_redeem_valueInteger or nullMinimum points required to redeem (multiplier-type)
max_points_to_spend_valueInteger or nullMax points that can be used at once (multiplier-type)
terms_of_serviceObjectTerms of use (see Terms of Service)
pretty_terms_of_serviceStringHuman-readable summary of the reward’s terms

Terms of Service (inside reward)

FieldTypeDescription
reward_typeStringType of reward (e.g. fixed_amount, free_product, free_shipping)
applies_toString or nullScope of discount application (e.g. entire, collection)
expiry_monthsInteger or nullNumber of months before the discount expires
product_idString or nullShopify product ID, for product-specific rewards
show_tosBooleanWhether to show terms to the customer

Customer Object

FieldTypeDescription
idIntegerCustomer ID
emailStringCustomer email address
first_nameStringCustomer’s first name
last_nameStringCustomer’s last name
dobDate or nullCustomer’s date of birth, if provided
accepts_marketingBooleanShopify email subscriber status (true if opted in).
orders_countIntegerTotal number of orders placed
verified_emailBooleanWhether the customer’s email address is verified
total_spentFloatTotal amount the customer has spent
shopify_tagsArray of stringsList of Shopify tags associated with the customer
loyalty_statusStringCurrent loyalty program status (e.g. member)
points_tallyIntegerCurrent points balance
credits_tallyFloatCurrent credit balance
event_typeStringAlways points_redemption/created for this webhook