How to configure basic analytics for your AMP pages
Important: this documentation is not applicable to your currently selected format nation-usa!
Analytics platforms are commonly integrated into websites through inline JavaScript snippets and function calls, which trigger events that are sent back to the analytics system. AMP provides a flexible JSON configuration syntax to replicate this process for several analytics partners.
amp-analytics
. Google Analytics 4 and AMP
For information on how to set up Google Analytics 4 with amp-analytics see amp-analytics dev guide and Tag setup for AMP documentation.
The rest of this document mostly talks about Universal Analytics which is superseded by Google Analytics 4.
For context: Analytics on non-AMP pages
The following is an example of traditional JavaScript-driven Google Analytics tracking. We'll rewrite this into the amp-analytics
JSON format but first, let's look at the traditional approach:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
</script>
This JavaScript is quite simple; it sends a notification to track the pageview event.
Step 1: Include amp-analytics
script
To replicate this functionality in AMP, we must first include the amp-analytics
component library in our document’s <head>
:
<script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>
Step 2: Add configuration code
Then, let's add the amp-analytics
component to the end of the body
of the document:
<amp-analytics type="googleanalytics">
<script type="application/json">
{
"vars": {
"account": "UA-YYYY-Y"
},
"triggers": {
"default pageview": {
"on": "visible",
"request": "pageview",
"vars": {
"title": "Name of the Article"
}
}
}
}
</script>
</amp-analytics>
Just as with the JavaScript example at the top of this page, this amp-analytics
snippet will send a notification to Google Analytics indicating that a page has been viewed.
To specify this, we've set the type
to googleanalytics
and then in the JSON we've created a trigger we've called "default pageview". This trigger will fire when the page is visible (due to the "on": "visible"
) and when it fires we'll send a pageview
analytics request to Google Analytics with the vars
we have specified.
The JSON used to configure amp-analytics
is a very flexible format for describing what analytics data to send and when to send it. The amp-analytics
has complete details on the format.
Step 3: Adding more triggers
Building on the above example, we can add another trigger named "click on #header trigger"
:
<amp-analytics type="googleanalytics">
<script type="application/json">
{
"vars": {
"account": "UA-YYYY-Y"
},
"triggers": {
"default pageview": {
"on": "visible",
"request": "pageview",
"vars": {
"title": "Name of the Article"
}
},
"click on #header trigger": {
"on": "click",
"selector": "#header",
"request": "event",
"vars": {
"eventCategory": "examples",
"eventAction": "clicked-header"
}
}
}
}
</script>
</amp-analytics>
As you can guess from the name of this new trigger it will fire when the element with the ID "header"
is clicked (specified by "on": "click"
and "selector": "#header"
). When this trigger fires, we'll send the event
request to our analytics provider, specifying a couple of variables to include in the request.
If you have a custom tracking platform that you want to integrate with, you can still use amp-analytics
and define your own personalized URL endpoints to send tracking data to. Learn more in the amp-analytics
component reference documentation.
“UA-YYYY-Y”
is an example Google Analytics account; it should be replaced with your own website’s Google Analytics tracking code if you are using this example on your site.
amp-pixel
. If you only need to track pageviews, amp-pixel
it is a lighter-weight solution than amp-analytics
because it only aims to solve the requirements of traditional pixel tracking. Learn more in the Analytics: the basics guide.