gatsby-plugin-fathom
Version:
Gatsby plugin to add Fathom tracking to your site.
117 lines (87 loc) • 3.27 kB
Markdown
[](https://www.npmjs.com/package/gatsby-plugin-fathom)
Gatsby plugin to add Fathom tracking to your site.
- [Install](
- [Usage](
- [Options](
- [Example](
- [Example using environment variables](
- [Goal Tracking](
- [License](
```
npm install gatsby-plugin-fathom
```
_By default, this plugin only generates output when run in production mode. To test your tracking code, run `gatsby build && gatsby serve`._
| Option | Explanation | Default |
| ----------------- | -------------------------------------------- | ----------------- |
| `trackingUrl` | Your Fathom custom domain (optional) | cdn.usefathom.com |
| `siteId` | Fathom site ID | |
| `honorDnt` | Honor do not track | `false` |
| `ignoreCanonical` | Ignore canonical and use current URL | `false` |
| `includedDomains` | Only include provided domains in tracking | `[]` |
| `excludedDomains` | Track every domain, except the ones provided | `[]` |
For more information on each option check https://usefathom.com/support/tracking-advanced.
### Example
```JavaScript
// gatsby-config.js
module.exports = {
plugins: [
{
resolve: 'gatsby-plugin-fathom',
options: {
// Your custom domain, defaults to `cdn.usefathom.com`
trackingUrl: 'your-fathom-instance.com',
// Unique site id
siteId: 'FATHOM_SITE_ID'
}
}
]
}
```
You may want to use different site ids across different deployments. This is best achieved by defining config in environment variables. The value will be read on build-time, e.g. during CI.
```bash
FATHOM_SITE_ID=ABCDEF
```
```JavaScript
// gatsby-config.js
require('dotenv').config({
path: `.env.${process.env.NODE_ENV}`
})
module.exports = {
plugins: [
{
resolve: 'gatsby-plugin-fathom',
options: {
siteId: process.env.FATHOM_SITE_ID
}
}
]
}
```
For more details, see https://www.gatsbyjs.org/docs/environment-variables/
You can import a hook for tracking goals in any component like so:
```javascript
import { useGoal } from 'gatsby-plugin-fathom'
export default function Foo() {
// can pass true as the 2nd param in order to console log the tracked goal's ID
// useful for debugging in development
const handleGoal = useGoal('GOAL-ID')
return <button onClick={handleGoal}>Click me</button>
}
```
The function returned by `useGoal` also excepts a value to be sent with the id. If not set it defaults to `0`.
```javascript
import { useGoal } from 'gatsby-plugin-fathom'
export default function Foo() {
const handleGoal = useGoal('GOAL-ID')
return <button onClick={() => handleGoal(100)}>Buy</button>
}
```
[](https://github.com/lgraubner/gatsby-plugin-fathom/blob/master/LICENSE) © [Lars Graubner](https://larsgraubner.com)