Google Tag Manager
Your institution can connect its own Google Tag Manager (GTM) container. With the integration active, Eduvem loads the container on every screen of the platform and publishes a fixed set of events to the dataLayer - what you do with those events (Google Analytics, media pixels, remarketing) is configured by you, inside your own container.
Activating the integration
Section titled “Activating the integration”On the institution’s configuration tab, right below the Zendesk fields:
- Turn on Use Google Tag Manager.
- Fill in the GTM Container ID field that appears next.
- Save.

The ID is the code GTM shows at the top of your workspace, in the format GTM-XXXXXXX (the letters GTM- followed by 4 to 12 uppercase letters or digits). Paste only the ID, not the full code snippet Google offers to copy - the field rejects anything else and shows the error right below it. If you type it in lowercase, the platform normalizes it to uppercase on save.
Both fields are visible only to the institution administrator and above.
Where the container loads
Section titled “Where the container loads”The container loads on every screen of the platform, including the storefront, before login - which is what lets you measure visitors who are not yet participants.
It does not load in two cases:
- when the content is opened embedded in another system (external launch/embed);
- on Eduvem’s own Control Panel.
Turning the switch off removes the script and the entire dataLayer on the next page load.
The published events
Section titled “The published events”Every event follows the same shape: an event name and a knl object with that event’s properties.
{ event: 'class_enter', knl: { course_class_uuid: '...', course_version_uuid: '...' } }| Event | When it fires | Properties in knl |
|---|---|---|
login |
Someone signs in through the login form (participant or administrator) | method (password or keycloak) |
course_view |
Opens a course’s page or the overview inside the class | course_class_uuid, course_version_uuid |
class_enter |
Enters a class | course_class_uuid, course_version_uuid |
lecture_enter |
Opens a lecture | course_class_uuid, lecture_uuid, lecture_type |
exam_finish |
Finishes an exam | course_class_uuid, approved |
certificate_download |
Downloads a certificate | course_class_uuid, or kind: "trilha" for a track certificate |
purchase |
Completes a purchase | transaction_id, value, currency, items (GA4-recommended format) |
In lecture_enter, lecture_type depends on the class’s content type: content created in the wizard sends the actual lecture type (video, text and so on); SCORM or Coursebox content sends scorm12 or coursebox, which is what the platform is able to report in those cases.
purchase already comes out in the format GA4 recommends, so a standard ecommerce tag works with no transformation.
What is never sent
Section titled “What is never sent”No event carries the participant’s personal data. The platform filters each event’s properties against a fixed list before publishing it, so name, email, CPF, username, person identifier and enrollment identifier never reach your container, even by mistake.
An exam’s score is not published either: exam_finish only reports whether the participant passed (approved), never the score.
Checking that it’s working
Section titled “Checking that it’s working”After saving, open your institution’s storefront in an anonymous tab, press F12 and, in the Console:
document.getElementById('knl-gtm').srcshould show an address withgoogletagmanager.com/gtm.js?id=and your ID;window.dataLayer.map(e => e.event)lists the events published so far.
GTM’s own Preview / Tag Assistant also works normally.
Best practices
Section titled “Best practices”- One container per institution. If you administer several institutions on Eduvem, use separate containers - the events carry nothing that tells them apart from inside GTM.
- Configure cookie consent in your own container. The platform loads whichever container you point it to; what it fires is the responsibility of its own configuration.
- Keep the container ID together with the institution’s other integrations: it does not appear masked on the configuration screen.