Get enriched profile for personalization
Getting a contact's full information is core to Engage's power. It allows personalization, giving access to Engage's full customer profiling in a single request. This service has many use cases:
Populating an e-com My Pages or other landing page with customer information
Allowing a POS system to display the complete customer profile, allowing for a more qualitative dialogue with a sales person
Enabling the staff member to act on an incorrect email address
Informing the customer about reward vouchers or individual offers soon to expire
Allowing the e-com to switch content panels depending on which target audience (profile) the current customer belongs to
This is all achieved through the /contactoverview endpoint.
Caution
The data from the /contactoverview endpoint might contain cached contact information. For real-time updates on contacts and their corresponding data (promotions, reward points, etc.) then go directly to each entity endpoint (/contacts/{contactId}/promotions for example).
Caution
The /contactoverview endpoint is not to be used as a contact lookup endpoint nor for ID-fetching. For this, use the other methods described here.
Using /contactoverview with contactId
If you know the contactId, you can fetch a contact's data directly without using any other information. This is because contactId is guaranteed to always be unique for a contact, whereas this is not enforced for the the other personal identifiers.
GET /api/v2/contactoverview?contactId={contactId}
You can send contactType if you want, like this, but it's not mandatory in this case.
GET /api/v2/contactoverview?contactType={contactType}&contactId={contactId}
Using /contactoverview with email
With the email parameter, the contactType must also be sent.
GET /api/v2/contactoverview?contactType=member&email=jane.doe%40gmail.com
Using /contactoverview with mobilePhone
With the mobilePhone parameter, the contactType must also be sent.
GET /api/v2/contactoverview?contactType=member&mobilePhone=%2B46702291216
Using /contactoverview with socialSecurityNumber
This is the Swedish personal identity number, Finnish personal identity code or Swedish samordningsnummer (coordination number).
GET /api/v2/contactoverview?contactType=member&socialSecurityNumber=198506059738
With the socialSecurityNumber parameter, the contactType must also be sent.
Using /contactoverview with customKey
As the customKey value you can send either a contact's memberNumber or externalId, depending on how your tenant is set up. Your Voyado Engage team can help you here.
GET /api/v2/contactoverview?contactType=member&customKey=999888777
With the customKey parameter, the contactType must also be sent.
Using /contactoverview with any
The "any" parameter will accept any of the above values. They are scanned in the following order: email, socialSecurityNumber, mobilePhone and then customKey.
For example:
GET /api/v2/contactoverview?contactType=ecom&any=jane.doe%40gmail.com
GET /api/v2/contactoverview?contactType=contact&any=999888777
With the any parameter, the contactType must also be sent.
Caution
Whenever you call /contactoverview with the contactId, sending contactType is optional. In all other cases, sending the contactType is mandatory.
Response
If the request has been successful, you'll get a HTTP 200 OK response along with the contact's data. Otherwise you'll get one of the following HTTP error codes:
400: InvalidEmailAddress, InvalidPhoneNumber, InvalidSocialSecurityNumber, InvalidContactType, InvalidSearchQuery
404: ContactNotFound
409: MultipleMatches
500: InvalidSystemConfiguration
Response data example
{
"id": "33ee9958-0e09-484f-b4c4-aa3e00e1e24c",
"attributes": {
"firstName": "Example",
"lastName": "Examplesson",
"street": "Examplegatan 12",
"zipCode": "123 45",
"city": "Examplestad",
"email": "example@example.com",
"mobilePhone": "+46739111111",
"countryCode": "SE",
"socialSecurityNumber": "198101010101",
"gender": "Female",
"careOf": null,
"country": "Sverige",
"birthDay": "1981-01-01",
"externalId": null,
"memberNumber": "999888777",
"rfm": 46,
"children": [
"2007-11-28T00:00:00+01:00"
],
"age": 35,
"registrationDate": "2019-02-05T13:21:02+01:00",
"bonusPoints": 2481,
"secrecyMarked": false,
"currentStore": {
"id": "0b7037b4-b7f5-4c9d-97e6-aa3b00ccc140",
"name": "Rotterdam",
"externalId": "SE014"
}
},
"meta": {
"createdOn": "2019-04-29T15:42:25+02:00",
"modifiedOn": "2020-05-31T04:02:27+02:00",
"sourceType": "Import",
"approved": true,
"contactType": "Member",
"recruitedByStore": {
"id": "a9573a5a-c9bb-4593-abee-aa3b00ccc141",
"name": "Nice",
"externalId": "SE019"
}
},
"preferences": {
"acceptsEmail": true,
"acceptsPostal": true,
"acceptsSms": true
},
"memberlevel": {
"expires": null,
"levelName": "Bas",
"remainingToUpgrade": 233,
"basedOnRewardPoints": 767,
"levelId": "bas"
},
"consents": [
{
"id": "consentIntelligentOffers",
"value": true,
"date": "2019-05-06T14:00:51+02:00",
"comment": "",
"source": "ContactForm"
},
{
"id": "consentSegmentation",
"value": true,
"date": "2019-05-06T14:00:51+02:00",
"comment": "",
"source": "ContactForm"
},
{
"id": "consentGeneralTerms",
"value": true,
"date": "2019-05-06T14:00:51+02:00",
"comment": "",
"source": "ContactForm"
}
],
"audiences": [
"Best Customers rolling 24 months",
"My VIP Group",
"Intergamma VIP",
"Superbokare"
],
"warnings": [
"MissingMobileNumber"
],
"bonusChecks": [
{
"expiresOn": "2020-08-31T23:59:59+02:00",
"id": "880adf9c-b70b-47a8-b746-aaf900528332",
"checkNumber": "0000000000161",
"name": "Generate reward vouchers 02/11/2019 08:00",
"value": {
"currency": "EUR",
"amount": 3
},
"localValues": [
{
"currency": "SEK",
"amount": 30
},
{
"currency": "NOK",
"amount": 30
}
],
"bonusPoints": 100,
"redeemed": false,
"redeemedOn": null
}
],
"promotions": [
{
"id": "27c03506-89d6-4023-a158-c0bb0dc09e58",
"externalId": null,
"type": "Multichannel",
"name": "Spring Campaign",
"expiresOn": null,
"heading": "Spring Campaign",
"description": "Dear customer, The spring is here, time for updating your wardrobe! Please enjoy the following spring time promotion. With love",
"redeemed": false,
"redeemedOn": null,
"imageUrl": null,
"link": null,
"redemptionChannels": [
{
"id": "75992b07-b287-4417-8cb8-adba010fdaf8",
"externalId": null,
"type": "Multichannel",
"name": "20% off VIP offer!",
"expiresOn": null,
"heading": null,
"description": null,
"redeemed": false,
"redeemedOn": null,
"imageUrl": null,
"link": null,
"redemptionChannels": [
{
"type": "POS",
"valueType": "PERCENT",
"value": 20,
"instruction": null
},
{
"type": "ECOM",
"valueType": "EXTERNALOFFER",
"value": "VIP20PERCENT",
"instruction": null
}
]
}
]
}