Supported Platforms
Curator supports the following analytics platforms. You can enable one or more simultaneously:Configuration
Navigate to Portal Settings > Analytics in the Curator backend. All fields are optional. Fill in only the fields for the platform(s) you use.Google Analytics (Universal Analytics)
Google Analytics Tracking ID (Universal Analytics) — Your Universal Analytics tracking ID (e.g.,UA-XXXXXXXX-X). Enables the analytics.js tracker, which sends an automatic page view on each
page load.
Universal Analytics was sunset by Google in July 2024. If you are setting up analytics tracking for the first
time, use Google Analytics 4 or Google Tag Manager instead.
Google Analytics 4 (GA4)
Google Analytics Tracking ID (Google Analytics 4) — Your GA4 measurement ID (e.g.,G-XXXXXXXXXX). Enables the gtag.js tracker with automatic page views. If a user is logged in,
their non-PII analytics_id UUID is sent as the user_id property. See
Correlating an analytics_id Back to a Curator User for how
to look up the Curator user behind a UUID.
Google Tag Manager (GTM)
Google Analytics Tag Manager Container ID — Your GTM container ID (e.g.,GTM-XXXX). Loads the GTM
container script on every page. If a user is logged in, their non-PII analytics_id UUID is pushed to the
dataLayer as user_id before the container loads.
When using Google Tag Manager, you manage your analytics tags (including GA4) within GTM itself. You do not
need to also fill in the GA4 field unless you want a separate, direct GA4 integration outside of GTM.
Matomo
- Matomo Server URL — The URL of your Matomo instance (e.g.,
//matomo.example.com/). Must include a trailing slash. - Matomo Site ID — The numeric site ID configured in your Matomo instance (e.g.,
1). - Enable Matomo Heartbeat — When enabled (default: on), Matomo tracks actual time spent on the page by monitoring whether the browser tab is active and in focus.
analytics_id UUID is sent via setUserId. Matomo link tracking and download
tracking are enabled automatically.
Tracked Events
When analytics is configured, Curator automatically tracks user interactions as events. All events are sent to every enabled analytics platform. Events use the category Dashboard and include the following actions:Site Search Tracking
Curator also tracks site searches when a user uses the search feature:- Google Analytics 4: Tracked using the built-in
searchevent with asearch_termparameter. - Matomo: Tracked using the
trackSiteSearchAPI with the search term, category, and result count. - Google Analytics (Universal Analytics): Tracked as a page view to
/search?q={searchTerm}. This only applies when Beta Search is enabled, since the/searchroute does not exist under the standard search.
Custom Dimensions
Events include custom dimensions that provide additional context. These dimensions are sent when available:For Matomo, custom dimensions must be configured in your Matomo instance with matching dimension IDs for the
data to be recorded correctly.
User Identification with analytics_id
Curator sends a stable, non-PII UUID called analytics_id to GA4, GTM, and Matomo instead of the Curator
username. Usernames are often email addresses or real names, which Google Analytics’ Terms of Service
prohibit sending as user_id. The analytics_id UUID avoids that restriction while still letting
administrators correlate analytics activity to a specific Curator user.
Key points:
- Every Curator frontend user has exactly one
analytics_id, generated automatically when the user is created. - The value is stable: it never changes for the life of the user record, so dashboards and audiences in GA4/Matomo remain consistent across sessions.
- Existing users were backfilled with an
analytics_idduring the upgrade migration, so no manual setup is required.
Correlating an analytics_id Back to a Curator User
When you see a UUID in GA4, GTM, or Matomo and need to identify the underlying Curator user, query the
Curator User API. The analytics_id is included in the response of:
fetchUser— current logged-in usergetUser— user by token oruser_idlistUsers— paginated user list (use this to map UUIDs in bulk)/user/info— mobile auth response
analytics_id values:
frontend_user_id, name, full_name, email, and
analytics_id. Match the UUID you saw in GA4/Matomo to the analytics_id field to find the user.
For one-off lookups directly against the database, you can also query the interworks_usermgmt_front_users
table:
Internal Logging
In addition to sending events to external analytics platforms, Curator logs all analytics events internally using its client-side logging utility. These log entries are visible in the browser developer console when client-side logging is enabled, which can be helpful for verifying that events are firing correctly during setup.Limitations
The events listed under Tracked Events are the Dashboard-category interactions Curator sends to your analytics platforms. Aside from those events, clicks on top-level primary nav file-type menu items also send a File / Download event (see Navigation and Menu Clicks below). The vertical side nav is included because it renders through the primary nav template (menu::primarynav); the horizontal side
nav is a separate code path that does not emit this event. Other interactions not in the list above are not
reported as Curator analytics events.
Link Clicks and File Downloads
Curator does not fire its own analytics events for clicks on standard HTML links. File downloads triggered from file-type menu items are a special case: Curator sends a File / Download event for them to some platforms, as described below. How these interactions are captured depends on the platform:- Google Analytics 4 / Google Tag Manager — Curator does not send link-click or file-download events to GA4 or GTM. If your GA4 property has Enhanced Measurement enabled, GA4 may automatically capture outbound link clicks and file downloads. This is a GA4 property-level feature configured in your Google Analytics account, not a Curator feature, and its behavior depends entirely on your GA4 configuration.
- Google Analytics (Universal Analytics) — Curator does not send link-click events, but it does send a
File / Download event (category
File, actionDownload) when a user clicks a top-level primary nav file-type menu item — including the vertical side nav, which renders through the primary nav template (menu::primarynav), but not the horizontal side nav — as long as the Universal Analytics tracker (ga) is loaded. File-type items nested inside dropdown menus do not fire this event. - Matomo — Curator enables Matomo’s automatic link tracking and download tracking. Outbound link clicks are
recorded by Matomo, and downloads — including clicks on top-level primary nav file-type menu items (and the
vertical side nav, which renders through the primary nav template
menu::primarynav, but not the horizontal side nav) — are tracked for elements Curator tags with thetracking_downloadCSS class. File-type items nested inside dropdown menus are not tagged and are not tracked.
Navigation and Menu Clicks
Clicks on standard navigation and menu links are not sent as analytics events. Page views are recorded automatically on each page load, so movement between pages is still reflected in your analytics, but the click on the menu item itself is not reported as a separate event. The exception is top-level primary nav file-type menu items: these are tagged with thetracking_download
CSS class, so a click fires a File / Download event (category File, action Download) to Matomo and to
Universal Analytics. Google Analytics 4 and Google Tag Manager do not receive this event. The vertical side nav
is included because it renders through the primary nav template (menu::primarynav); the horizontal side nav is
a separate code path (sidenav.htm) that builds menu items without a url key, so its file-type test never
resolves and no File / Download event fires for it at any depth.
File-type items nested as children under a primary nav parent are rendered through the dropdown template and do
not receive the tracking_download class, so no File / Download event fires for them.
Custom Tracking Scripts (e.g., HotJar, FullStory)
Curator does not have built-in settings for session-recording or heatmap tools such as HotJar or FullStory. You can still add these tools using either of the two mechanisms below.Through Google Tag Manager (recommended)
If you have configured a Google Analytics Tag Manager Container ID in Portal Settings > Analytics, add the third-party script as a tag inside your GTM container. This keeps every custom script managed in one place.- Confirm a Google Analytics Tag Manager Container ID is set in Portal Settings > Analytics.
- In your GTM container, create a new Custom HTML tag and paste in the tool’s tracking snippet.
- Set the tag’s trigger to All Pages.
- Submit and publish the GTM container.
Through the theme Head Insert
If you are not using Google Tag Manager, you can paste a tracking snippet directly into the Head Insert field found under the theme’s custom styles settings in the Curator backend. The contents of this field are rendered inside the<head> of every page. This is a good fit when you only need to add a single script and do not want
to set up a GTM container.
- On the theme’s Global tab, turn on Enable Custom Styles (CSS / HTML inserts). This toggle is off by default. While it is off, the Head Insert field’s label gains a (Disabled) suffix and a warning comment is shown beneath it; content pasted there is still not applied to the page until the toggle is on.
- Open the Custom Styles tab (it is always visible) and paste the tool’s tracking snippet into the Head Insert field.
- Save the theme.
The Head Insert field is parsed as Twig before it is emitted into the page, so any
{{, {%, or {#
sequences in a pasted vendor snippet are interpreted as Twig rather than passed through as literal text. If your
snippet contains those sequences (for example, a templating library’s own placeholder syntax), it will not render
verbatim and may fail silently. Add the script through Google Tag Manager instead, or escape the Twig delimiters
using {% verbatim %}...{% endverbatim %}.Both approaches inject the tool’s own script into the page. As with Curator’s built-in analytics, these scripts
run on the Curator page itself and cannot observe interactions inside embedded Tableau or Power BI iframes.