Skip to main content

Synchronising User Information

This details how to seed and synchronise new users and changes to users between Pepper's CRM and a 3rd party CRM

Seeding User Data​

Before you can start synchronising user data, you need to seed your CRM with data from Pepper, or vice versa.

Downloading existing customer information from Pepper​

Adding a file download method is on our roadmap and will be available in the future

To retrieve customer information, call the GET /users endpoint. This endpoint is paged so you will need to repeat the call until all pages have been returned.

We expect you will need to run this download only once. Avoid making scheduled downloads of all users to avoid hitting rate limits.

Make sure you ONLY include the information you need. Most use cases only need to include credentials.

For example

GET https://api.pepperhq.com/users?include=credentials
Authorization: Token <token-provided-by-pepper>
x-application-id: <merchant-code>
x-api-version: 8
Accept: application/json
Accept-Encoding: gzip, deflate

200 OK
{
"items": [
{
...
}
],
"page": {
...
}
}

See Get Users API reference.

Uploading existing customer information into Pepper​

The Pepper Ops team can organise loading existing customer records for a new merchant into the Pepper platform. This is a paid-for service. Please contact the Pepper Ops team.

Alternatively, you can use the POST /users to add new users into the Pepper platform.

Synchronising User Changes​

Getting User Changes from Pepper​

There are two approaches for retrieving new and changed users from Pepper:

  1. Polling the GET /actions and processing events for user related events [PREFERRED].
  2. Polling the GET /users endpoint with the updatedAfter query parameter to request any changes since the last time you requested.

1. Polling GET /actions​

The GET /actions endpoint should be called on a regular schedule to receive notification of changes since the last call. A suitable schedule is every 5 minutes, or shorter if your responses require multiple pages to retrieve.

You should set query parameters for when.timestamp to a range starting after the last time you requested up to and including the current time. For example: when.timestamp.gt=2021-02-01T10:00:00.000Z & when.timestamp.lte=2021-02-01T10:05:00.000Z will return actions after 10 AM on Feb 1 up to and including 10.05 AM.

You should then process the response for the following events that are relevant for user record changes:

  • USER_CREATED a new user has signed up
  • USER_CHANGED a user record has changed
  • USER_DELETED a user has been removed (GDPR request)
  • USER_ACTIVATED a user has validated their login credential (eg email or phone)
  • CREDENTIAL_VERIFIED (if needed) secondary credentials (eg email) has been verified

Other user related actions such as USER_ACTIVATION_RESENT do not need to be monitored.

You can limit the call to just these action types using the type query parameter.

Example call:

GET https://api.pepperhq.com/actions?when.timestamp.gt=2021-02-01T10:00:00.000Z&when.timestamp.lte=2021-02-01T10:05:00.000Z&type=USER_CREATED,USER_CHANGED,USER_DELETED,USER_ACTIVATED
Authorization: Token <token-provided-by-pepper>
x-application-id: <merchant-code>
x-api-version: 8
Accept: application/json
accept-encoding: gzip, deflate

200 OK
{
"items": [
{
...
}
],
"page": {
...
}
}

See Get Actions API reference.

The bottom of this section includes examples of actions.

2. Polling GET /users​

To see just new and changed user records, you can poll the GET /users endpoint with the updatedAfter parameter set.

You set the updatedAfter query parameter to the last time you requested GET /users.

Make sure you ONLY include the information you need. Most use cases only need to include credentials.

For example

GET https://api.pepperhq.com/users?include=credentials&updatedAfter=2021-02-17T09:06:03.715Z
Authorization: Token <token-provided-by-pepper>
x-application-id: <merchant-code>
x-api-version: 8
Accept: application/json
Accept-Encoding: gzip, deflate

200 OK
{
"items": [
{
...
}
],
"page": {
...
}
}

See the Get Users API reference.

Saving User Changes to Pepper​

You can add, change and remove users via the API.

Add User​

Use the POST /users endpoint. See Create User.

Change User​

Use the PUT /users/:userId endpoint. See Update User.

Remove User​

This should be only used for processing GDPR user removal requests.

Use the DELETE /users/:userId endpoint. See Delete User.

Note: the user information is retained for data analytics, but all user identifying data is redacted in accordance with GDPR.

Action Examples​

USER_CREATED​

Use the context.user and metadata fields for relevant user info

{
"_id" : "xxxx",
"context" : {
"tenant" : {
"_id" : "xxxx",
"title" : "The Grill"
},
"user" : {
"_id" : "xxxx",
"fullName" : "Tom Jones",
"primaryPlatform" : "IOS"
},
"tags" : []
},
"tenantId" : "xxxx",
"type" : "USER_CREATED",
"source" : "API_SERVER",
"version" : "0",
"when" : {
"timezone" : "America/Chicago",
"timestamp" : "2021-03-05T02:32:10.218Z",
"year" : 2021,
"monthofyear" : 2,
"weekofyear" : 10,
"dayofmonth" : 4,
"dayofweek" : 4,
"daypart" : "EVENING"
},
"metadata" : {
"username" : "+12220000000",
"provider" : "MOBILE",
"hasAgreedToShareData" : true,
"hasAgreedToReceiveMarketing" : false
},
"environment" : "PRODUCTION"
}

USER_CHANGED​

As per USER_CREATED, but the metadata field contains changed user records.

{
"type" : "USER_CHANGED",
"metadata" : {
"favouriteLocations" : [
"xxxxx",
"yyyyy"
]
}
}

USER_ACTIVATED​

As per USER_CREATED, but the metadata field contains the activated credential

{
"type" : "USER_ACTIVATED",
"metadata" : {
"username" : "tomjones@emailme.com",
"provider" : "EMAIL"
}
}