Coveo
Datafly Signal sends Coveo Usage Analytics events server-side: page, product and content views for Content Recommendations, and custom events for reporting.
Coveo recommends its Event Protocol for new Commerce implementations. These presets use the Coveo UA protocol (the Usage Analytics Write API), which Coveo supports for existing implementations and uses for Service, Website and Workplace.
Why route Coveo through Datafly Signal
- Events arrive when the browser cannot send them. Server-side delivery is not stopped by ad blockers, tracking prevention or a page unload.
- One consent decision governs every destination. The integration is gated by the same consent state as the rest of your stack.
Prerequisites
- Your Coveo organisation id and an API key with Push access to the Analytics data domain.
- The search hub (originLevel1) your search interface uses.
- Optionally, Signal capturing the Coveo visitor id (
coveo_visitorId) ascoveo_visitor_id, so views join search events. - For Content Recommendations, pages sending the indexed item’s permanentid as
properties.content_id.
Configuration
| Field | Required | Description |
|---|---|---|
organization_id | Yes | Your Coveo organization ID. It forms the UA Write host: https://{organization_id}.analytics.org.coveo.com. Find it in the Coveo admin console under Organization (top-right org switcher) or in any platform URL. |
api_key | Yes | A Coveo API key with Push access to the Analytics Data domain. Create it in the admin console under Organization > API Keys, enabling the Push option for the Analytics Data domain. Sent as Authorization: Bearer <key>. |
origin_level1 | Yes | Required. Must match the searchHub used in your Coveo Search API queries so analytics events correlate with searches and ML models train correctly. Sent as originLevel1 on every event. |
Configure in Signal
Add the integration
Go to Integrations > Add Integration > Coveo.
Choose a preset
Default (website or knowledge base), Ecommerce / Retail or Media / Publishing.
Enter the configuration
Fill in the fields in the table above.
Select consent categories
Choose the categories that gate search analytics, typically analytics.
Save
Signal delivers the next matching event.
API Endpoint
POST https://ORG_ID.analytics.org.coveo.com/rest/ua/v15/analytics/view
POST https://ORG_ID.analytics.org.coveo.com/rest/ua/v15/analytics/custom
Authorization: Bearer API_KEYView events need location; custom events need eventType, eventValue and language.
Identity Signals
| Signal | Sent as | Notes |
|---|---|---|
| Visitor | clientId | The Coveo visitor id when collected, otherwise the Signal anonymous id. |
| Signed in | anonymous | false when the event has a user id. username is not sent: it needs an impersonation-capable key. |
Event Mapping
Default preset (default)
Coveo Usage Analytics for a website or knowledge base: page views as view events (with contentIdKey permanentid and contentIdValue from properties.content_id when the page sends the indexed item’s permanentid, which Content Recommendations need) and leads and sign-ups as custom events for reporting. clientId is the Coveo visitor id when the site collects it (collected_ids.coveo_visitor_id, the coveo_visitorId value the search UI sends) and otherwise the Signal anonymous id; it must match the clientId of the search requests for Coveo to join searches and views into one visit. language is the ISO 639-1 part of the locale and originLevel1 the configured search hub. username is not sent: the UA Write API accepts it only from an impersonation-capable key, and anonymous says whether the visitor is signed in.
| Signal event | Sent as | Enabled |
|---|---|---|
page | view | Yes |
generate_lead | lead | Yes |
sign_up | signUp | Yes |
Ecommerce / Retail preset (ecommerce)
Coveo UA protocol events for a shop: page views and product detail views as view events (contentIdKey permanentid, contentIdValue the item id, contentType Product), and product clicks, cart changes and orders as custom events with the item ids, value and upper-cased currency in customData. Coveo recommends its Event Protocol for new Commerce implementations and Coveo ML commerce models learn from Event Protocol commerce events; this preset suits an existing UA implementation. clientId is the Coveo visitor id when the site collects it (collected_ids.coveo_visitor_id, the coveo_visitorId value the search UI sends) and otherwise the Signal anonymous id; it must match the clientId of the search requests for Coveo to join searches and views into one visit. language is the ISO 639-1 part of the locale and originLevel1 the configured search hub. username is not sent: the UA Write API accepts it only from an impersonation-capable key, and anonymous says whether the visitor is signed in.
| Signal event | Sent as | Enabled |
|---|---|---|
page | view | Yes |
view_item | view | Yes |
select_item | productClick | Yes |
add_to_cart | addToCart | Yes |
remove_from_cart | removeFromCart | Yes |
purchase | purchase | Yes |
Media / Publishing preset (media)
Content views for Coveo Content Recommendations on a publishing or knowledge-base site: each content_viewed event is a view event with contentIdKey permanentid and contentIdValue properties.content_id (the indexed item’s permanentid), the content type and title. The generic page event is off so a page is not counted twice. clientId is the Coveo visitor id when the site collects it (collected_ids.coveo_visitor_id, the coveo_visitorId value the search UI sends) and otherwise the Signal anonymous id; it must match the clientId of the search requests for Coveo to join searches and views into one visit. language is the ISO 639-1 part of the locale and originLevel1 the configured search hub. username is not sent: the UA Write API accepts it only from an impersonation-capable key, and anonymous says whether the visitor is signed in.
| Signal event | Sent as | Enabled |
|---|---|---|
page | view | Off by default |
content_viewed | view | Yes |
sign_up | signUp | Yes |
To customise, edit the integration’s Field Mappings in the Management UI.
Example: a product view
What Signal sends (rendered from the preset):
POST https://acmeorg.analytics.org.coveo.com/rest/ua/v15/analytics/view{
"anonymous": false,
"clientId": "df_anon_p1_0001",
"contentIdKey": "permanentid",
"contentIdValue": "SKU-1",
"contentType": "Product",
"eventType": "view",
"language": "en",
"location": "https://www.example.co.uk/shop/jackets?utm_source=google",
"originLevel1": "MainSearch",
"referrer": "https://www.google.com/",
"title": "Parka Jacket",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"
}Testing
Send a test event
Trigger the event on your site, or replay one from Signal’s event debugger.
Check the response
Confirm a 2xx response, then find the event in Coveo’s Visit Browser.
Troubleshooting
| Problem | Solution |
|---|---|
| 400 on custom events | eventValue comes from item ids, the transaction id or the lead type: check the event carries them. |
| Views not used by Content Recommendations | Send the item’s permanentid as properties.content_id. |
Limitations
- Commerce ML models learn from Event Protocol commerce events, which Signal cannot send yet (#1545).
- View events also carry an
eventTypefield, kept for installed integrations; whether Coveo ignores it needs a live check.