Upsert – Create or update - Heyloyalty/api GitHub Wiki
If you wish to create and/or update members on your list in a single action, you can do so using our upsert function.
The function takes a POST event To use the function, you need to call /lists/[listId]/members/upsert The full URL would look like this https://api.heyloyalty.com/loyalty/v1/lists/[listId]/members/upsert
The function takes a standard json object, with a "unique_field" as the key for locating a possible existing member. Besides the unique_field, the functions needs a "member" object as the data for the member.
Example
Below is a POST call made to a specific list
{
"unique_field": "mobile",
"member": {
"firstname": "James",
"lastname": "Heyloyalty",
"mobile": "121314151313",
"email": "[email protected]",
"birthdate": "1982-05-01",
"address": "Jens Baggesens vej 47",
"postalcode": "8200",
"city": "Århus N",
"shop": "1464",
"sex": "1",
"country": "53",
"single_choice_fieldtest": "31995",
"Yes_no": "1",
"mulitple_choice_fieldtest": ["44738","44739"]
}
}
In the above example, the email will be used as the unique identifier to update the member with [email protected] as his email. If no such member exist, it will be created. The POST should be sent as raw JSON.
Response on create
{
"type": "create",
"member_id": "[memberId]"
}
Response on update
{
"type": "update",
"member_id": "[memberId]"
}
When using opt-in
If your list is using opt-in (meaning members need to accept the sign-up to the list), you can add a key-value pair, that will search through temporary members as well and update those if no active member is found.
add the key-value "search_temporary": true, to the existence json, before the member-key
{
"unique_field": "mobile",
"search_temporary": true,
"member": {
"firstname": "James",
"lastname": "Heyloyalty",
"mobile": "121314151313",
"email": "[email protected]",
"birthdate": "1982-05-01",
"address": "Jens Baggesens vej 47",
"postalcode": "8200",
"city": "Århus N",
"shop": "1464",
"sex": "1",
"country": "53",
"single_choice_fieldtest": "31995",
"Yes_no": "1",
"mulitple_choice_fieldtest": ["44738","44739"]
}
}
Only the fields sent using the upsert, will be created or updated on the member. If more fields are available on the list, these will be untouched.
NOTES
-
You can use any one of the fields on your the list as the identifier. If the unique_field isn’t unique, you will receive an error status and no members will be updated.
-
If you send an object with both mobile and email and a member exists with data matching your current object, but the unique_field does not match the member, you will receive a status 400 and a message saying “member_exists”.
-
The maximum request size when using this function is 5mb.