Customers
Customer data and management
Cursor for pagination (before) - Firestore document ID
Cursor for pagination (after) - Firestore document ID
Number of customers per page
20
Search by customer email address
Filter by customer type
Filter by customer tier ID
Filter customers updated after this date
Filter customers updated before this date
Filter customers created before this date
Sort order for results
createdAt_desc
Possible values: Include total count in response (may increase response time)
false
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Paginated list of customers
GET /rest_api/v2/customers HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Accept: */*
Paginated list of customers
{
"success": true,
"data": [
{
"id": "b1wvKrxdDZ11U8tUlyyx",
"shopifyCustomerId": 7801029525739,
"email": "[email protected]",
"name": "John Doe",
"type": "member",
"point": 100,
"tierPoint": 100,
"pendingPoint": 0,
"totalSpent": 0,
"totalEarnedPoints": 100,
"hasPoint": true,
"hasJoinedProgram": true,
"state": "enabled",
"latestActivity": "2025-04-29T10:23:05.990Z",
"notifications": {},
"acceptsMarketing": false,
"birthday": "05/15",
"dateOfBirth": "1990-05-15",
"tierName": "Bronze",
"tierUpdatedAt": "2025-06-16T10:20:58.636Z",
"phone": null,
"pointsRemain": 4900,
"isCustomerB2B": false,
"earnSignUp": true,
"referralCode": "2kxRoqlDQMp",
"hasTier": false,
"totalSpentCurrencyCode": "VND",
"createdAt": "2025-04-29T10:23:05.991Z",
"updatedAt": "2025-06-16T10:20:58.663Z"
}
],
"meta": {
"pagination": {
"hasNext": true,
"hasPre": true,
"total": 1,
"totalPage": 1
}
},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Internal customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Customer details
Customer not found
GET /rest_api/v2/customers/{customerId} HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Accept: */*
{
"success": true,
"data": {
"id": "b1wvKrxdDZ11U8tUlyyx",
"shopifyCustomerId": 7801029525739,
"email": "[email protected]",
"name": "John Doe",
"type": "member",
"point": 100,
"tierPoint": 100,
"pendingPoint": 0,
"totalSpent": 0,
"totalEarnedPoints": 100,
"hasPoint": true,
"hasJoinedProgram": true,
"state": "enabled",
"latestActivity": "2025-04-29T10:23:05.990Z",
"notifications": {},
"acceptsMarketing": false,
"birthday": "05/15",
"dateOfBirth": "1990-05-15",
"tierName": "Bronze",
"tierUpdatedAt": "2025-06-16T10:20:58.636Z",
"phone": null,
"pointsRemain": 4900,
"isCustomerB2B": false,
"earnSignUp": true,
"referralCode": "2kxRoqlDQMp",
"hasTier": false,
"totalSpentCurrencyCode": "VND",
"createdAt": "2025-04-29T10:23:05.991Z",
"updatedAt": "2025-06-16T10:20:58.663Z"
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Retrieve total points earned by a customer across all programs
Internal customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Customer earned points summary
GET /rest_api/v2/customers/{customerId}/points/earned HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Accept: */*
Customer earned points summary
{
"success": true,
"data": {
"totalEarnedPoints": 1
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Update customer information (supports birthday fields)
Internal customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Date of birth in ISO 8601 format (YYYY-MM-DD)
Birthday in MM/DD format
Customer updated successfully
Invalid request data
Customer not found
PUT /rest_api/v2/customers/{customerId} HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"dateOfBirth": "2025-09-08",
"birthday": "text"
}
{
"success": true,
"data": {
"id": "text",
"shopifyCustomerId": "text"
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Update customer's VIP tier with comprehensive tier processing
Internal customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Target tier ID
Whether to trigger tier rewards
true
Admin note for the tier change activity
Customer tier updated successfully
Invalid request data
Customer or tier not found
PUT /rest_api/v2/customers/{customerId}/tier HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Content-Type: application/json
Accept: */*
Content-Length: 57
{
"tierId": "text",
"triggerReward": true,
"adminNote": "text"
}
{
"success": true,
"data": {
"id": "text",
"shopifyCustomerId": "text",
"tierId": "text",
"tierName": "text",
"tierPoint": 1,
"tierUpdatedAt": "2025-09-08T17:05:06.615Z"
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Update customer information using Shopify customer ID
Shopify customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Date of birth in ISO 8601 format (YYYY-MM-DD)
Birthday in MM/DD format
Customer updated successfully
PUT /rest_api/v2/customers/external/{shopifyCustomerId} HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"dateOfBirth": "2025-09-08",
"birthday": "text"
}
Customer updated successfully
{
"success": true,
"data": {
"id": "text",
"shopifyCustomerId": "text"
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Update customer's VIP tier using Shopify customer ID
Shopify customer ID
App ID of your shop which retrieved from the Settings page
{{appKey}}
Secret Key of your shop which retrieved from the Settings page
{{secretKey}}
Target tier ID
Whether to trigger tier rewards
true
Admin note for the tier change activity
Customer tier updated successfully
PUT /rest_api/v2/customers/external/{shopifyCustomerId}/tier HTTP/1.1
Host: dev-api.joy.so
X-Joy-Loyalty-App-Key: text
X-Joy-Loyalty-Secret-Key: text
Content-Type: application/json
Accept: */*
Content-Length: 57
{
"tierId": "text",
"triggerReward": true,
"adminNote": "text"
}
Customer tier updated successfully
{
"success": true,
"data": {
"id": "text",
"shopifyCustomerId": "text",
"tierId": "text",
"tierName": "text",
"tierPoint": 1,
"tierUpdatedAt": "2025-09-08T17:05:06.615Z"
},
"meta": {},
"message": "Operation completed successfully",
"timestamp": "2023-07-28T07:27:54.123Z"
}
Last updated