Adding an Adobe Analytics tracking code to your Turtl Doc(s) will send events, e.g. page views, to Adobe Analytics when the user interacts with your Turtl Doc. Once those events are in Adobe Analytics, they can support various processes such as content performance reporting and feeding engagement data into downstream Adobe Experience Cloud tools.
Note:
The default Adobe Analytics tracking code is available with all Turtl plans.
Custom events setup in Turtl is available with the Scale or Grow plans, with the "Custom behavioural events" module added. Please contact support@turtl.co if you want to upgrade your plan.
Prerequisites:
A property in Adobe Experience Platform Data Collection (Tags), formerly known as Adobe Launch. This is Adobe's tag management system and is used for adding, deploying, and updating your Adobe Analytics tag within your Turtl Docs.
An Adobe Analytics report suite. You will need the Report Suite ID(s) when configuring the Adobe Analytics extension in Tags.
The Adobe Analytics extension installed in your Tags property. The extension acts as the bridge between your Turtl Docs and Adobe Analytics — collecting data and insights about user interactions, behaviour, etc. You'll configure it with your Report Suite ID and tracking server.
How do I get the tracking code?
You can find detailed instructions from Adobe here: https://experienceleague.adobe.com/en/docs/platform-learn/implement-in-websites/configure-tags/add-embed-code
To obtain your tracking code:
Open your Adobe Tags property.
In the Development row, click the Install icon.
Click the Copy icon to copy the embed code to your clipboard.
Click Close.
Paste the copied code into the next step — it should look something like this:
<script src="https://assets.adobedtm.com/xxxxxxx/launch-xxxxxxx.min.js" async></script>
What's the process of getting the tracking code into Turtl?
Once you have the <head> and <body> scripts, please send them to support@turtl.co, and we will set it up as an extension for you, which can be toggled on/off on your Turtl Docs. You can also choose to apply this extension to all Turtl Docs automatically.
What events does the tracking code collect by default?
By default, the Adobe Analytics extension fires a page view beacon (s.t()) when a Turtl Doc loads, capturing the standard page-level dimensions (URL, page name, referrer, etc.).
Where do events appear in Adobe Analytics?
Sign in to Adobe Analytics.
Open Workspace and create or open a project.
Use the Pages dimension to see page views, or build a freeform table with your custom events, eVars, and props to see custom event activity.
You can also use Real-Time reports for quick validation of incoming hits.
Note: It may take up to a few hours for processed data to appear in Workspace, although Real-Time reports update within minutes.
How can we customise the tracking code to send custom performance events to Adobe Analytics?
If you are on Turtl's Unlimited or Professional plan and have purchased the "Custom Behavioural Events" module, our engineering team can customise the previously mentioned <head> and <body> scripts to send through additional events that aren't captured within the standard script.
For these custom events to be seen, they need to be captured by rules in your Tags property (typically via a Direct Call Rule or a Custom Event listener) and mapped to Adobe Analytics variables (custom events, eVars, or props). These rules are configured by the customer.
Custom events table with variables
Below is the suggested list of events and variables Turtl can send to Adobe Analytics. Variables in bold belong to all events; other variables are specific to only some events.
When mapping into Adobe Analytics, we recommend assigning the standard variables to eVars (for persistent reporting) and event-specific variables to eVars or props as appropriate. Each event itself should be mapped to a custom success event (e.g. event1, event2, etc.) in your report suite.
Event name | What it captures | Variables | Notes |
Chapter page turn | Reader moves between Chapter pages — the horizontal navigation across top-level sections of a Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) | Chapter page turn |
Page turn | Reader moves between Content pages within a chapter — the vertical reading flow inside a section | doc_name (string), doc_url (string), workspace (string), page_title (string) | Content page turn |
Read Doc 30 sec | Reader has spent 30 seconds engaging with the Doc — first signal of meaningful attention | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 1 minute | Reader has spent 1 minute engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 2 mins | Reader has spent 2 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 3 mins | Reader has spent 3 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 4 mins | Reader has spent 4 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 5 mins | Reader has spent 5 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) | Common threshold for "high intent" segments |
Read Doc 8 mins | Reader has spent 8 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Read Doc 10 mins | Reader has spent 10 minutes engaging with the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) | Strong indicator of deep engagement / MQL signal |
Enter chapter | Reader enters a Content page within a chapter | doc_name (string), doc_url (string), workspace (string), page_title (string) | Enter Content page(s) |
Leave chapter | Reader leaves a Content page within a chapter | doc_name (string), doc_url (string), workspace (string), page_title (string) | Leave Content page(s) |
Logo click | Reader clicks the brand logo in the Doc toolbar — typically redirects to a customer's home page | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Contents menu click | Reader opens the Doc's contents menu to navigate between sections | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Download the PDF version | Reader downloads the PDF version of the Doc from the Contents menu | doc_name (string), doc_url (string), workspace (string), page_title (string) | PDF download button in the Contents menu |
Open fullscreen | Reader expands the Doc into fullscreen view | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Link click | Reader clicks any internal or external link inside the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), destination (string) | destination captures the target URL; label captures the link text |
Lead capture form submission | Reader submits a lead capture form embedded within the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) | High-intent conversion event |
Personalisation form submission | Reader submits a personalisation form, triggering a personalised version of the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string) |
|
Poll submission | Reader submits a response to a poll embedded in the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string), question (string), response (string) | Use question and response to analyse poll outcomes |
Share button click - email | Reader clicks the email share button | doc_name (string), doc_url (string), workspace (string), page_title (string), share_button_location (string) | share_button_location specifies where the share button was clicked: Toolbar / Content page widget / Back cover |
Share button click - X | Reader clicks the X (Twitter) share button | doc_name (string), doc_url (string), workspace (string), page_title (string), share_button_location (string) | As above |
Share button click - Facebook | Reader clicks the Facebook share button | doc_name (string), doc_url (string), workspace (string), page_title (string), share_button_location (string) | As above |
Share button click - LinkedIn | Reader clicks the LinkedIn share button | doc_name (string), doc_url (string), workspace (string), page_title (string), share_button_location (string) | As above |
Share button click - Xing | Reader clicks the Xing share button | doc_name (string), doc_url (string), workspace (string), page_title (string), share_button_location (string) | As above |
View chart | Reader opens an embedded chart in zoom (lightbox) mode | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) | label and source identify which chart was viewed |
View image | Reader opens an embedded image in zoom (lightbox) mode | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) |
|
View map | Reader opens an embedded map in zoom (lightbox) mode | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) |
|
View PDF | Reader opens an embedded PDF in zoom (lightbox) mode | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) |
|
Watch video | Reader plays an embedded video inside the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) | Strong engagement signal — useful for video performance reporting |
Listen to audio | Reader plays an embedded audio file inside the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) |
|
View Matterport tour | Reader opens a Matterport 3D virtual tour embedded in the Doc | doc_name (string), doc_url (string), workspace (string), page_title (string), label (string), source (string) |
|
Tip: Contact support@turtl.co to share your ideas if you want to track something else.
1. Create a Direct Call Rule (or Custom Event listener) in Tags
When Turtl's custom tracking code fires an event, it pushes data to the page using a standard JavaScript pattern that Adobe Launch can listen for. The most common approach is a Direct Call Rule, triggered by _satellite.track('event_name', {detailObject}).
In your Tags property, navigate to Rules in the left sidebar and click Add Rule.
Name the Rule, e.g. "Watch video". We recommend using the same name for the rule and the Turtl event you want to track.
Under Events, click Add.
Extension: Core.
Event Type: choose Direct Call (if Turtl's script uses
_satellite.track) or Custom Event (if Turtl's script dispatches a nativeCustomEvent). Confirm with support@turtl.co which pattern your script uses.Identifier: copy the relevant event name (e.g. "Watch video") from the table above.
Click Keep Changes.
2. Create Data Elements
Data Elements in Tags are the equivalent of GTM's Data Layer Variables — they let you capture and reuse data sent with each event.
In your Tags property, navigate to Data Elements in the left sidebar and click Add Data Element.
Name the Data Element, e.g. "Page title".
Configure it:
Extension: Core.
Data Element Type: choose JavaScript Variable or Custom Code, depending on how Turtl pushes the data:
If the variable is available on the event detail object: use Custom Code and return
event.detail.page_title(or the relevant key).If it's available as a global JavaScript variable or on a data layer: use JavaScript Variable and enter the path.
Variable name: copy the variable name from the table above.
Please create Data Elements for the variables you find useful for the events you want to fire.
Click Save.
Tip: Data Elements you create here can then be referenced anywhere in Tags using the %data_element_name% syntax.
3. Add Adobe Analytics Actions to each Rule
For each custom event, you'll now configure what the Rule does when it fires — typically, sending a tracking beacon to Adobe Analytics with the relevant variables.
Notes:
You can also reference built-in Tags variables (such as Page URL) where applicable.
The Adobe Analytics extension provides two main action types: Set Variables (assigns values to eVars, props, and events) and Send Beacon (fires the actual tracking call).
Open the Rule you created in Step 1.
Under Actions, click Add.
Configure the Set Variables action:
Extension: Adobe Analytics.
Action Type: Set Variables.
Custom Events: select the event slot you want to use (e.g.
event5) and map it to this Turtl event.eVars / Props: assign the relevant Data Elements (e.g.
eVar10 → %doc_name%, eVar11 → %doc_url%, eVar12 → %workspace%, eVar13 → %page_title%). Repeat for event-specific variables such aslabel, destination, share_button_location, question, response, or source.Click Keep Changes.
Add a second Action: Send Beacon.
Extension: Adobe Analytics.
Action Type: Send Beacon.
Tracking: select
s.tl()for link/interaction events (most Turtl custom events) ors.t()for page view events. As a rule of thumb, only uses.t()for events that genuinely represent a new page view (e.g. Chapter page turn); everything else should bes.tl()to avoid inflating page view counts.Link Type (if using
s.tl()):typically "Other"(o)or "Custom Link" depending on your reporting preferences.Link Name: a friendly identifier for the event (e.g. "Turtl - Watch video").
Click Keep Changes.
Save the Rule.
Tip: Decide upfront whether you want a single, generic Rule that captures all Turtl events using a dynamic Data Element for the event name, or one Rule per event. One-rule-per-event is easier to debug and maintain when you only need a handful of events; a single dynamic rule is more scalable if you're tracking the full event catalogue.
4. Test the custom event
When you receive confirmation that the custom tracking code has been added to your Doc(s), use Tags' Debug mode (the Adobe Experience Platform Debugger Chrome extension) to validate your setup. With Debug mode on, open your Turtl Doc and:
Confirm each Rule fires when the corresponding event happens in the Doc.
Confirm the correct eVars, props, and custom events are populated on the outgoing beacon.
Use the Network tab in your browser dev tools to inspect the
b/ssAnalytics request and check the variable values directly.
You can also validate in Adobe Analytics Real-Time reports for near-immediate confirmation that events are landing in your report suite.
5. Publish your changes
In Tags, add your new Rules and Data Elements to a Library.
Build the Library to your Development environment first, then promote to Staging, then to Production once tested.
It may take a few minutes for the changes to take effect once published to Production.
Where do the custom events appear in Adobe Analytics?
Note: It may take up to a few hours before processed data is fully available in Workspace, although Real-Time reports update within minutes.
Custom events appear alongside default page view events.
Sign in to Adobe Analytics.
Open Workspace and create a project.
Build a freeform table using:
The custom event dimension (e.g.
event5- "Watch video") as a metric.The relevant eVars (e.g.
eVar10- "Doc name",eVar11- "Doc URL") as dimensions.
You can also break down events by any of the other captured variables to see, for example, which Docs drive the most video views, or which share button locations are most clicked.