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_checkin webhook 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_checkin webhook 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)