Skip to content

Commit b6902d8

Browse files
authored
[WEB-2180] Add segment and track page views (#81)
* Add Segment snippet v5.2.1 Example as provided by https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/quickstart/#step-2a-add-the-segment-snippet * Use .track, add properties as seen on old docs page view events The old docs site did not use .page to track page views, unsure why * Add segement write key via env variable * Add SEGMENT_WRITE_KEY to env sample and documentation
1 parent ae05a7e commit b6902d8

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

.env.copy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
ALGOLIA_APP_ID=
22
ALGOLIA_ADMIN_KEY=
33
ALGOLIA_INDEX_NAME=circleci-docs
4+
SEGMENT_WRITE_KEY=
45
SKIP_INDEX_SEARCH=true

TECHNICAL_REFERENCE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ Or through npm scripts defined in `package.json`.
314314
| `ALGOLIA_APP_ID` | Algolia search app ID | - |
315315
| `ALGOLIA_API_KEY` | Algolia search API key | - |
316316
| `ALGOLIA_INDEX_NAME` | Algolia search index name | - |
317+
| `SEGMENT_WRITE_KEY` | Segment write key for analytics | - |
317318
| `NODE_ENV` | Node environment | `development` |
318319

319320
## Build Output

gulp.d/tasks/build-site.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22
const { exec } = require('child_process')
3+
require('@dotenvx/dotenvx').config()
34
const antoraPlaybook = 'antora-playbook.yml'
45

56
const resolvedPath = require.resolve('../../extensions/page-metadata-extension');
@@ -8,7 +9,7 @@ console.log('Resolved path:', resolvedPath);
89

910
module.exports = function buildSite(cb) {
1011
console.log('Starting Antora build...')
11-
exec(`npx antora ${antoraPlaybook} --log-failure-level=warn --extension ${resolvedPath} --extension ${resolvedPathExportExtension}`, (err, stdout, stderr) => {
12+
exec(`npx antora ${antoraPlaybook} --log-failure-level=warn --extension ${resolvedPath} --extension ${resolvedPathExportExtension} --key segment_write=${process.env.SEGMENT_WRITE_KEY || null}`, (err, stdout, stderr) => {
1213
console.log(stdout)
1314
if (stderr) console.error(stderr)
1415
if (err) return cb(err)

ui/src/partials/head-scripts.hbs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,28 @@
33
<script>function gtag(){dataLayer.push(arguments)};window.dataLayer=window.dataLayer||[];gtag('js',new Date());gtag('config','{{this}}')</script>
44
{{/with}}
55
<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js"></script>
6+
{{#with site.keys.segmentWrite }}
7+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js.cookie.min.js"></script>
8+
<script>
9+
!function(){var i="analytics",analytics=window[i]=window[i]||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window[i].initialized)return window[i][e].apply(window[i],arguments);var n=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");n.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.setAttribute("data-global-segment-analytics-key",i);t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r);analytics._loadOptions=n};analytics._writeKey="{{this}}";;analytics.SNIPPET_VERSION="5.2.1";
10+
analytics.load("{{this}}");
11+
const urlSearchParams = new URLSearchParams(window.location.search);
12+
const pathName = window.location.pathname.replace("docs/", "");
13+
analytics.track("dd_docs_page", {
14+
fullPath: pathName,
15+
has2dot0: pathName.includes("2.0/"),
16+
fbclid: urlSearchParams.get("fbclid"),
17+
gclid: urlSearchParams.get("gclid"),
18+
action: "viewed",
19+
orgId: Cookies.get("cci-org-analytics-id") || null,
20+
page: pathName == "/" ? "homepage" : pathName,
21+
hash: window.location.hash ? window.location.hash.replace("#", "") : null,
22+
locale: "en",
23+
desktop: window.innerWidth >= 1200,
24+
})
25+
}}();
26+
</script>
27+
{{/with}}
628
<script defer src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="06cd008c-32ae-46d3-946b-211d1afd443c" data-project-name="CircleCI" data-project-color="#161616" data-project-logo="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTI7jLeuu2k66svJDmHxYKlP7Ysf7FvNbkuvzAhHEPCsvLbhcpVRnoJCm538OSv6o5uzlQ&usqp=CAU"
729
></script>
830
{{!--

0 commit comments

Comments
 (0)