Event - Update Check-in
This event is generated when points are updated because receipt details are updated in the Punchh system. This includes user update check-in events triggered as they happen in the Punchh system based on configuration.
Triggering Conditions
The update_checkin webhook is triggered only for check-ins that enter the pending refresh flow. This flow occurs when the receipt is received within the allowed time window defined by the receipt update delay setting. If a receipt is already outside this window when received, the system treats it as final and skips the webhook. The webhook will not be triggered, regardless of configuration.
Contact your Punchh representative to update this Punchh platform configuration.
For example, if the receipt update delay for the pending refresh window is set to 10 minutes for a business and a user has two check-ins:
- Check-in A - If the receipt age is 9 min 19 sec (within the 10-minute window), the check-in is marked as pending, and the
update_checkinwebhook is triggered. - Check-in B - If the receipt age is 10 min 37 sec (beyond the 10-minute window), the check-in is treated as final, and the
update_checkinwebhook is not triggered.
{
"content_id": "CONTENT_ID_GOES_HERE",
"timestamp": 1619693178,
"business_id": 6,
"business_uuid": "BUSINESS_UUID_GOES_HERE",
"business_slug": "slugname",
"event_name": "_notifications",
"event_type": "update_checkin",
"action": "create",
"payload": {
"after_update_amount": 20,
"approved": true,
"bar_code": "BAR_CODE_GOES_HERE",
"before_update_amount": 20,
"channel": "POS",
"checkin_id": 26029,
"checkin_type": "PosCheckin",
"created_at": "2023-04-29T07:00:33Z",
"earnable_amount": 20,
"errors": "",
"expired_at": null,
"expiring_on": "2023-05-04",
"external_uid": "EXTERNAL_UID_GOES_HERE",
"first_punchh_at_business": false,
"first_punchh_at_location": false,
"location_id": 106,
"location_name": "Punchh Location - 001",
"manual": null,
"pending_refresh": false,
"points_earned": 20,
"points_spent": 0,
"punchh_key": "PUNCHH_KEY_GOES_HERE",
"qr_decoded": null,
"receipt_amount": 20,
"receipt_date": "2023-04-29T10:15:00Z",
"refreshed_at": "2023-04-29T10:46:18Z",
"reviewer_id": null,
"status": "loyalty",
"store_number": "3478",
"transaction_no": "TRANSACTION_NUMBER_GOES_HERE",
"unverified_receipt_amount": null,
"updated_at": "2023-04-29T10:46:18Z",
"user": {
"account_balance": {
"banked_currency": null,
"current_membership_level_name": "Silver Level",
"last_visit": "2023-04-29T11:05:39Z",
"loyalty_points": 93,
"net_balance": 95,
"net_debits": 0,
"pending_points": 20,
"total_credits": 95,
"total_debits": "0.0",
"total_lifetime_points": 95,
"total_point_credits": 95,
"total_redeemable_visits": null,
"total_visits": 4,
"unbanked_points": null,
"unredeemed_cards": null,
"user_id": 111111111
},
"anniversary": "2000-01-01",
"avatar_remote_url": null,
"birthday": "1964-01-01",
"email": "test@example.com",
"first_name": "FIRST_NAME_GOES_HERE",
"gender": "male",
"guest_type": "Loyalty",
"last_activity_at": "2023-04-29T11:05:52Z",
"last_name": "LAST_NAME_GOES_HERE",
"marketing_email_subscription": true,
"marketing_pn_subscription": true,
"phone": "1111111111",
"preferred_locale": "en",
"secondary_email": "test1@example.com",
"signup_channel": "MobileEmail",
"sms_subscription": false,
"unsubscribe_reason": null,
"unsubscribed": false,
"user_id": 111111111,
"user_status": "active",
"apple_loyalty_pass_url": "APPLE_LOYALTY_PASS_URL_GOES_HERE",
"android_loyalty_pass_url": "ANDROID_LOYALTY_PASS_URL_GOES_HERE"
},
"user_id": 111111111,
"verifications_count": null,
"verified_at": null
}
}
Meta Fields
Meta Fields are common attributes such as content_id, timestamp, etc. that are returned in event responses, providing additional information about events. Click here to view the descriptions of the attributes.
Response Parameters - Payload
| Name | Type | Description |
|---|---|---|
| after_update_amount | Integer | Check-in updated amount after refresh |
| approved | Boolean | Check-in approved status |
| bar_code | String | Barcode generated for the order |
| before_update_amount | Integer | Check-in updated amount before the refresh |
| channel | String | Channel from where the check-in happened (i.e., POS, OnlineOrder, Web, Mobile) |
| checkin_id | Integer | Unique check-in ID generated by Punchh |
| checkin_type | String | Type of the check-in (i.e., OnlineCheckin, PosCheckin, ReceiptImageCheckin, BarcodeCheckin, QrcodeCheckin, POSConsoleCheckin) |
| created_at | Date_time | Timestamp when the check-in gets created in Punchh |
| earnable_amount | Integer | Earnable amount based on the earning qualifier for the order |
| errors | String | Error message |
| expired_at | Date | Date on which the check-in expired |
| expiring_on | Date | Date on which the check-in will expire |
| external_uid | String | External UID generated for the transaction |
| first_punchh_at_business | Boolean | Denotes if it is a first check-in for the business |
| first_punchh_at_location | Boolean | Denotes if it is a first check-in for the location |
| location_id | Integer | Location ID generated in Punchh |
| location_name | String | Location name of the check-in |
| manual | Boolean | Whether the check-in is manual or not |
| pending_refresh | Boolean | Enabled as per the pending points configuration |
| points_earned | Float | Points earned on the order |
| points_spent | Float | Points redeemed on the order |
| punchh_key | String | Unique Punchh key generated for the order |
| qr_decoded | String | QR code value generated for the order |
| receipt_amount | Float | Order amount before taxes, calculated as the sum of all item amounts minus any discounts. This is the amount used to calculate loyalty points/visits. The value of this parameter should match subtotal_amount. For example, if the order amount is $10, both receipt_amount and subtotal_amount will be 10. If a $2 discount is applied, both will be 8. |
| receipt_date | Date_time | Receipt date/time for the order |
| refreshed_at | Date_time | Check-in refresh timestamp |
| reviewer_id | Integer | Admin ID of the reviewer who is verifying a check-in (applicable for receipt image verification-based check-in) |
| status | String | Status of the check-in (i.e., gift or loyalty) |
| store_number | String | Store number of the location |
| transaction_no | String | Transaction number of the order |
| unverified_receipt_amount | Float | Receipt_amount populated in case of manual check-in (i.e., receipt image verification based) |
| updated_at | Date_time | TImestamp when the check-in gets updated in Punchh |
| User | Object | See the user object in Event - Rewards Expiry Reminder |
| user.account_balance | Object | See the account_balance object in Event - Guest |
| user_id | Integer | User ID of the user-generated in Punchh |
| verifications_count | Integer | Approvers count for check-in. This count increases if multiple reviewers or admins have approved a check-in (applicable for receipt image verification-based check-in) |
| verified_at | Date_time | Check-in approved timestamp (applicable for receipt image verification-based check-in) |