Responding to Data Subject Requests with Coveo
Depending on the applicable privacy laws, data controllers are generally obligated to respond to a Data Subject Request (DSR) without undue delay.
A DSR is common under privacy laws. For example, the General Data Protection Regulation (“GDPR”) and the California Consumer Privacy Act (“CCPA”) both grant rights to individuals regarding their personal data, albeit to varying degrees.
Coveo and DSR
Coveo is built in order to allow its customers to answer DSR. In some cases, Coveo will reasonably assist its customers to respond to a DSR.
Usage Analytics and DSR
The following section presents the Coveo Usage Analytics (Coveo UA) features that can help Coveo customers fulfill some of their obligations as controllers. These features allow customers to identify, anonymize, export, and delete information about a specific user, as well as disable collection of usage analytics altogether.
The table below describes the general requests which may be related to Coveo UA. The Coveo client typically uses APIs or the Coveo Administration Console to fulfill end-user requests. Only Coveo users using API keys with distinct privileges may communicate with Coveo UA to handle DSR. To enable full access to all Coveo UA features, the privileges to administrate UA data, export UA data, and delete user data are required. Coveo customers will then directly interact with Coveo, which fulfills the request without human intervention from Coveo.
User request related to GDPR concepts | Coveo UA solution |
---|---|
Can I Know Who the Users Are? | API endpoint |
Can I Anonymize a User? | Anonymous flag in API requests |
Can I Export All Data About a User? | Coveo UA export with user filters |
Can I Delete All Data About a User? | API endpoint |
Can I Disable Coveo UA in a Search Interface? | JavaScript Search Framework |
Can I Know Who the Users Are?
Users that perform an action resulting in a usage analytics event are automatically attributed a usage analytics user ID such as alice.smith@example.com-google
. For an anonymous user, the user ID defaults to a visitor ID such as 29fb0d0a-b5eb-4c20-aff0-9d282df11569
.
The Usage Analytics Read API, under User Statistics API - Version 15 and up, exposes the GET /v15/users/{userId}/overview
endpoint. This enables returning all usage analytics data related to a given user identified by their userId
for a given organization.
GET https://analytics.cloud.coveo.com/rest/ua/v15/users/{userId}/overview?org={organizationId} HTTP/1.1
Accept application/json
Authorization Bearer {accessToken}
Where you replace:
-
{userId}
with a unique identifier corresponding to an end user whose personal data you want to consult. -
{organizationId}
with the unique identifier of the target Coveo organization.The
org
parameter is only required when authenticating the call using an OAuth2 token. -
accessToken
by an API key or OAuth2 token granting the Administrate privilege in the target Coveo organization, if not already done.
Can I Anonymize a User?
Customers and partners choosing to not track their users must ensure that users are anonymous when the usage analytics data is sent to Coveo. It’s possible to anonymize users during their interactions with your sites.
To anonymize your users, depending on your search page:
-
When using Coveo JavaScript Search Framework, set the
anonymous
option of theAnalytics
component totrue
.<div id="search" class="CoveoSearchInterface"> <div class="CoveoAnalytics" data-anonymous="true"></div> </div>
-
When using the Usage Analytics Write API directly, set the
anonymous
property totrue
whenever logging search, click, custom, or view events (see Log Usage Analytics Events).
Coveo doesn’t keep IP addresses in Coveo UA (see Customer Data).
Can I Export All Data About a User?
When your Coveo account or an API key grants the Data Exports privilege, you may interact with Coveo UA to export user data. The Coveo Administration Console then permits full data export of user data if filters are used to tailor the export to a given userId
in a given organization (see Usage Analytics Export Filters).
Can I Delete All Data About a User?
When your Coveo account or an API key grants the Delete user data privilege, you may interact with Coveo UA to delete user data. The Usage Analytics Read API, under User Statistics API - Version 15 and up, exposes the DELETE /v15/users/{userId}/alldata
endpoint. This enables deleting all usage analytics data related to a given user identified by their userId
for a given organization.1
DELETE https://analytics.cloud.coveo.com/rest/ua/v15/users/{userId}/alldata?org={organizationId} HTTP/1.1
Accept application/json
Authorization Bearer {accessToken}
Where you replace:
-
{userId}
with a unique identifier corresponding to an end-user whose personal data you want to delete. -
{organizationId}
with the unique identifier of the target Coveo organization.The
org
parameter is only required when authenticating the call using an OAuth2 token. -
accessToken
by an API key or OAuth2 token granting the Delete user data privilege in the target Coveo organization, if not already done.
-
Usage of the
DELETE /v15/users/{userId}/alldata
endpoint results in irreversible data loss which may affect some dashboards and reports generated in the Coveo Administration Console. Be mindful of the implications of such an operation, even if its completion is imperative. -
Usage statistics such as the queries per month (QPM) won’t be re-calculated or modified after deletion of user data.
1: When a request is made, all the data related to the specified user is deleted within 28 days of the request.
Can I Disable Coveo Usage Analytics in a Search Interface?
A successful call to any of the following API endpoints (e.g., POST https://analytics.cloud.coveo.com/rest/ua/v15/analytics/searches
) will record a usage analytics event:
Method | Scheme | Host | Base path | Path | |
---|---|---|---|---|---|
GET |
https:// |
platform.cloud.coveo.com |
/rest/ua |
/v15/analytics |
/click |
/custom |
|||||
platformhipaa.cloud.coveo.com |
/search |
||||
POST |
/searches |
||||
usageanalytics.coveo.com |
/rest |
/view |
If you want to stop recording usage analytics in a search interface, you must ensure that no such calls are being made from that location.
In a search interface that relies on the JavaScript Search Framework, the simplest and most efficient way to disable usage analytics is to not initialize an Analytics
component at all.
Coveo JavaScript Search Framework 2.7219 (October 2019)
The JavaScript Search Framework now exposes top-level functions allowing you to clear session information stored for usage analytics purposes (visitor ID cookie, actions history, etc.), and to disable or re-enable an initialized Analytics
component.
See: