# Add Privatus Analytics to Gatsby

> Add cookieless analytics to a Gatsby site with setHeadComponents in gatsby-ssr.js, so the tracker is in every page's head in production builds.

Create or edit `gatsby-ssr.js` in the root of your project:

```jsx
import React from 'react'

export const onRenderBody = ({ setHeadComponents }) => {
  if (process.env.NODE_ENV !== 'production') return

  setHeadComponents([
    <script
      key="privatus-analytics"
      defer
      src="https://privatusstats.com/js/pa.js"
      data-site="pa_YOURSITEID"
      data-modules="engage,auto,vitals,clicks,ask"
    />,
  ])
}
```

`onRenderBody` runs when Gatsby renders the HTML, and `setHeadComponents`
adds the elements to the head of every page. `gatsby develop` is not a
production build, so local work is not counted. Run `gatsby build` to check.

Gatsby is a single-page app after the first load. The tracker follows its
`history.pushState` navigations automatically. See
[single-page apps](/docs/tracker/spa).

Gatsby's `Head` export is per page, so it is the wrong place for a
site-wide tracker. Use `gatsby-ssr.js`.
