Transactions
event_points_expired
The Points Expired event occurs whenever loyalty points in a customer's loyalty account balance expire.
This event is triggered as soon as the status of the points is marked as expired.
Request
We send events to your webhook's URL with POST and a JSON body. Events are batched: a request can carry several events of this type. See Receiving Webhooks for batch sizes and retries, and Webhook Event Signatures to verify the request.
Headers
| Header | Description |
|---|---|
x-zinrelo-signature | The HMAC-SHA512 hex digest of <request body>:<nonce>, computed with the webhook's secret key. See Webhook Event Signatures. |
nonce | The Unix time, in milliseconds, at which the request was signed. It's part of the signed message. |
Payload
| Field | Type | Description |
|---|---|---|
request_id | string | A unique identifier of this webhook request. |
total_count | integer | The number of events in the batch (events). |
created_date | string | When the webhook request was created, as MM/DD/YYYY HH:MM:SS. |
events | array of object | The events in this batch. |
events[].id | string | The unique identifier of the event. Use it to detect events you already processed. |
events[].event_type | string | The type of event. One of event_points_expired. |
events[].data | object | The event's data. |
events[].data.member_info (optional) | object | The member_info object of the event's data. Which fields are present depends on the event. |
events[].data.member_info.id (optional) | string | The internal ID generated by TrueLoyal. |
events[].data.member_info.first_name (optional) | string | The first name of the member. |
events[].data.member_info.last_name (optional) | string | The last name of the member. |
events[].data.member_info.email_address (optional) | string | The email address of the member. |
events[].data.member_info.address (optional) | object | |
events[].data.member_info.address.city (optional) | string | Member's city. |
events[].data.member_info.address.country (optional) | string | Member's country. |
events[].data.member_info.address.line2 (optional) | string | The member address. |
events[].data.member_info.address.line1 (optional) | string | The member address. |
events[].data.member_info.address.state (optional) | string | Member's state. |
events[].data.member_info.address.postal_code (optional) | string | Member's postal code. |
events[].data.member_info.phone_number (optional) | string | The phone number of the member. |
events[].data.member_info.member_id (optional) | string | The unique identifier of the member defined by an Admin. |
events[].data.member_info.member_status (optional) | string | The current status of the member- ‘active’ , ‘blocked’, ‘opted_out’. ‘active’ member is the one accumulating loyalty points and has access to rewards and earning opportunities. ‘blocked’ member is prohibited from participating in the program. ‘opted_out’ member is the one who has chosen to opt out of the loyalty program. |
events[].data.member_info.member_tags (optional) | array or string | The tags assocaited with a member. |
events[].data.member_info.number_of_purchases (optional) | integer | The number of purchases made by a member. |
events[].data.member_info.number_of_redemptions (optional) | integer | The number of redemptions made by a member. |
events[].data.member_info.birthdate (optional) | string | Birthdate of the loyalty member. Expected date format: MM/DD/YYYY or MM/DD Irrespective of the year passed, 1904 will be set as a default value. |
events[].data.member_info.churn_status (optional) | string | |
events[].data.member_info.enrollment_date (optional) | string | The date on which the member joined the loyalty program. |
events[].data.member_info.last_modified_date (optional) | string | The most recent date on which a member's profile was updated. |
events[].data.member_info.first_purchase_date (optional) | string | The first purchase date of the member. |
events[].data.member_info.instagram_handle (optional) | string | The instagram handle of the member. |
events[].data.member_info.last_purchase_date (optional) | string | The last purchase made by a member. |
events[].data.member_info.anniversary_date (optional) | string | The anniversary date of the member. Expected date format: MM/DD/YYYY or MM/DD In case, where a year has not been passed the default year will be set as 1904. |
events[].data.member_info.twitter_handle (optional) | string | The twitter handle of the member. |
events[].data.member_info.preferred_language (optional) | string | The preferred language of the member. |
events[].data.member_info.deprecated_fields (optional) | object | |
events[].data.member_info.deprecated_fields.user_id (optional) | string | |
events[].data.member_info.tier_info (optional) | object | |
events[].data.member_info.tier_info.tier_qualification_units (optional) | integer | |
events[].data.member_info.tier_info.current_period_start (optional) | string | The start date of the current tier cycle. |
events[].data.member_info.tier_info.loyalty_tier_name (optional) | string | The name of the current tier. |
events[].data.member_info.tier_info.qualified_points (optional) | integer | The qualified points for tier calculation. |
events[].data.member_info.tier_info.loyalty_tier_id (optional) | string | The unique tier ID stored in TrueLoyal. |
events[].data.member_info.tier_info.current_period_end (optional) | string or null | The end date of current tier cycle. |
events[].data.member_info.tier_info.qualifid_points (optional) | integer | |
events[].data.member_info.lifetime_points_earned (optional) | integer | The total points earned in a member's account since he joined the program. |
events[].data.member_info.lifetime_points_expired (optional) | integer | The total points expired from a member's account since he joined the program. |
events[].data.member_info.available_points (optional) | integer | The avaliable points of the member. |
events[].data.member_info.points_onhold (optional) | integer | |
events[].data.member_info.lifetime_points_deducted (optional) | integer | The total points deducted from a member's account since he joined the program. |
events[].data.member_info.lifetime_points_redeemed (optional) | integer | The total points redeemed from a member's account since he joined the program. |
events[].data.member_info.number_of_referral_purchase (optional) | integer | |
events[].data.member_info.number_of_referral_share (optional) | integer | |
events[].data.member_info.referral_URL (optional) | string | The unique referral url of the member. |
events[].data.member_info.custom_attributes (optional) | object | |
events[].data.member_info.custom_attributes.Nationality (optional) | string | |
events[].data.member_info.custom_attributes.City_Name (optional) | string | |
events[].data.member_info.custom_attributes.Marital_Status (optional) | string | |
events[].data.member_info.custom_attributes.Income_Source (optional) | string | |
events[].data.member_info.custom_attributes.Age_In_Years (optional) | string | |
events[].data.member_info.custom_attributes.Gender_Identity (optional) | string | |
events[].data.member_info.custom_attributes.Graduation_Date (optional) | string | |
events[].data.member_info.custom_attributes.Number of purchases (optional) | integer | |
events[].data.member_info.custom_attributes.Favourite Destination (optional) | string | |
events[].data.member_info.custom_attributes.Last traveled (optional) | string | |
events[].data.member_info.custom_attributes.Gender (optional) | string | |
events[].data.member_info.custom_attributes.List of favourite place (optional) | array of string | |
events[].data.member_info.custom_attributes.Review date (optional) | string | |
events[].data.member_info.custom_attributes.traveled destination (optional) | string | |
events[].data.member_info.custom_attributes.Preferences (optional) | string | |
events[].data.member_info.custom_attributes.Subscription Plan (optional) | string | |
events[].data.member_info.custom_attributes.Active Camera (optional) | integer | |
events[].data.member_info.revenue (optional) | integer | |
events[].data.member_info.aov (optional) | number or null | |
events[].data.member_info.deleted_date (optional) | null | |
events[].data.member_info.referral_code (optional) | string | The unique referral code of the member. |
events[].data.transaction_info (optional) | object | The transaction_info object of the event's data. Which fields are present depends on the event. |
events[].data.transaction_info.id (optional) | string | The unique internal ID generated by TrueLoyal. |
events[].data.transaction_info.transaction_type (optional) | string | The type of transaction- award, redeem or deduct. |
events[].data.transaction_info.member_id (optional) | string | The unique identifier of the member defined by an Admin. |
events[].data.transaction_info.transaction_attributes (optional) | object | |
events[].data.transaction_info.transaction_attributes.order_id (optional) | string | The unique ID associated with the placed order. This is system defined transaction attribute for "made_a_purchase" activity. |
events[].data.transaction_info.transaction_attributes.coupon_code (optional) | string | The coupon code used for the purchase of the product. This is system defined transaction attribute for "made_a_purchase" activity. |
events[].data.transaction_info.transaction_attributes.reason (optional) | string | The reason for making transaction. |
events[].data.transaction_info.transaction_attributes.tags (optional) | array or string | |
events[].data.transaction_info.transaction_attributes.products (optional) | array of object | |
events[].data.transaction_info.transaction_attributes.products[].product_id (optional) | string | |
events[].data.transaction_info.transaction_attributes.products[].product_price (optional) | string | |
events[].data.transaction_info.transaction_attributes.products[].product_title (optional) | string | |
events[].data.transaction_info.transaction_attributes.products[].product_category (optional) | string | |
events[].data.transaction_info.transaction_attributes.products[].product_quantity (optional) | string | |
events[].data.transaction_info.transaction_attributes.products[].product_url (optional) | string or null | |
events[].data.transaction_info.transaction_attributes.products[].is_excluded (optional) | boolean | |
events[].data.transaction_info.transaction_attributes.products[].bonus_multiplier (optional) | integer | |
events[].data.transaction_info.transaction_attributes.products[].product_points_per_quantity (optional) | integer | |
events[].data.transaction_info.transaction_attributes.products[].product_image_url (optional) | string | |
events[].data.transaction_info.transaction_attributes.source_of_redemption (optional) | string | |
events[].data.transaction_info.transaction_attributes.pow_01 (optional) | null | |
events[].data.transaction_info.transaction_attributes.order_subtotal (optional) | integer | |
events[].data.transaction_info.transaction_attributes.order_total (optional) | integer | |
events[].data.transaction_info.transaction_attributes.coupons (optional) | string | |
events[].data.transaction_info.transaction_attributes.currency (optional) | string | |
events[].data.transaction_info.approver_details (optional) | object | |
events[].data.transaction_info.approver_details.approver_id (optional) | null | |
events[].data.transaction_info.approver_details.approver_name (optional) | string | |
events[].data.transaction_info.approved_date (optional) | string | The date and time on which the transaction will be approved. |
events[].data.transaction_info.last_modified_date (optional) | string | The most recent date on which a transaction was updated. |
events[].data.transaction_info.created_date (optional) | string | The date and time on which the transaction was created. |
events[].data.transaction_info.award_info (optional) | object | These data are system-defined for award transactions. |
events[].data.transaction_info.award_info.activity_id (optional) | string | The unique ID of the activity assigned by TrueLoyal. |
events[].data.transaction_info.award_info.activity_name (optional) | string | The activity name stored with TrueLoyal. |
events[].data.transaction_info.award_info.points_status (optional) | string | The status of the points- 'pending', 'approved', 'rejected', 'auto_approved', 'auto_rejected', 'expired' or 'exhausted.' |
events[].data.transaction_info.award_info.points (optional) | integer | The number of points awarded for performing the activity. |
events[].data.transaction_info.points_expiration_date (optional) | string | The date and time when points expire. |
events[].data.transaction_info.auto_approval_date (optional) | string | The date and time on which the transaction will be auto-approved. It can be configured through the Admin Console > Activities > Settings > Approval Type. This is a system-defined field for award transactions. |
events[].data.transaction_info.reward_info (optional) | object | These data are system-defined for reward transactions. |
events[].data.transaction_info.reward_info.reward_id (optional) | string | The unique reward ID assigned by TrueLoyal. |
events[].data.transaction_info.reward_info.reward_name (optional) | string | The name of the reward stored in TrueLoyal. |
events[].data.transaction_info.reward_info.points_status (optional) | string | The status of the points- 'redeemed,' redemption_pending' or 'redemption_cancelled.' |
events[].data.transaction_info.reward_info.points (optional) | integer | The number of points redeemed by the member. |
events[].data.transaction_info.reward_info.coupon_code (optional) | string | The coupon code used for redemption. |
events[].data.transaction_info.reward_info.reward_link (optional) | null | The link to flexi reward. Instead of asking members to choose from a fixed set of rewards, loyalty points can be used as a currency and members can redeem any number of points they have from their account for a corresponding discount on their transactions. |
events[].data.transaction_info.deduct_info (optional) | object | These data are system-defined for deduct transactions. |
events[].data.transaction_info.deduct_info.points_status (optional) | string | The status of the points- 'redeemed,' redemption_pending' or 'redemption_cancelled.' |
events[].data.transaction_info.deduct_info.points (optional) | integer | The number of points redeemed by the member. |
events[].data.transaction_info.expiry_info (optional) | object | |
events[].data.transaction_info.expiry_info.points_status (optional) | string | The status of the points- 'redeemed,' redemption_pending' or 'redemption_cancelled.' |
events[].data.transaction_info.expiry_info.points (optional) | integer | The number of points redeemed by the member. |
Example
{
"request_id": "63341215563aef00174f73a7",
"total_count": 1,
"events": [
{
"id": "6334121b4f113d58b2ed3ef5",
"event_type": "event_points_expired",
"data": {
"member_info": {
"id": "6329aeaddee54a000cbce5ec",
"first_name": "John",
"last_name": "Doe",
"email_address": "johndoe@gmail.com",
"address": {
"city": "Palo Alto",
"country": "US",
"line2": "530 Lytton Ave",
"line1": "Suite #200",
"state": "CA",
"postal_code": "94301"
},
"phone_number": "+1-6507017759",
"member_id": "john_doe",
"member_status": "active",
"member_tags": [
"member1",
"member2"
],
"number_of_purchases": 10,
"number_of_redemptions": 0,
"birthdate": "09/21/1900 00:00:00",
"enrollment_date": "09/20/2022 00:00:00",
"last_modified_date": "09/28/2022 00:00:00",
"first_purchase_date": "09/20/2022 00:00:00",
"instagram_handle": "www.instagram.com/john",
"last_purchase_date": "09/21/2022 00:00:00",
"anniversary_date": "09/21/1900 00:00:00",
"twitter_handle": "www.twitter.com/john",
"preferred_language": "English",
"deprecated_fields": {
"user_id": "abgjdyo2"
},
"tier_info": {
"tier_qualification_units": 100,
"current_period_start": "09/01/2022 00:00:00",
"loyalty_tier_name": "Silver",
"qualified_points": 10390,
"loyalty_tier_id": "zrl_silver",
"current_period_end": "09/30/2022 23:59:59"
},
"lifetime_points_earned": 11034,
"lifetime_points_expired": 11034,
"available_points": 0,
"points_onhold": 10,
"lifetime_points_deducted": 0,
"lifetime_points_redeemed": 0,
"number_of_referral_purchase": 0,
"number_of_referral_share": 0,
"referral_URL": "https://zinrelo.com/ref/JOH7EI9V",
"custom_attributes": {
"Gender": "Male",
"Number of purchases": 1,
"List of favourite place": [
"London",
"Paris"
],
"Review date": "12/10/2022 00:00:00"
},
"revenue": 1000,
"aov": 10,
"deleted_date": null
},
"transaction_info": {
"id": "632acf6cdee54a000b092934",
"transaction_type": "award",
"member_id": "john_doe",
"expiry_info": {
"points_status": "expired",
"points": 1000
},
"approved_date": "09/21/2022 08:46:36",
"approver_details": {
"approver_id": null,
"approver_name": "System"
},
"last_modified_date": "09/28/2022 09:10:17",
"created_date": "09/21/2022 08:46:35"
}
}
}
],
"created_date": "09/28/2022 09:21:24"
}Responses
| Status | Description |
|---|---|
200 | Acknowledges receipt of the events. Return 200 as soon as you receive the request and process the events afterwards, so the request doesn't time out. |
| Other | Any status code other than 200 is a failure: the request is sent again every 5 minutes until your endpoint returns 200 or the maximum number of attempts (5 by default) is reached. Your Customer Success Manager can change these settings. |