Skip to main content
Notra loads the Rybbit script on every live page and allows your Rybbit host in the CSP. It passes every option you set in blog.json to the tracker as a data-* attribute, so you can skip or mask paths, tag events and tune session replay on Rybbit Cloud or your own Rybbit instance without writing a custom script. With the c15t cookie banner on, Rybbit loads through c15t instead, only after a visitor allows the measurement category, and keeps every option below.
1

Copy your Site ID

In Rybbit, open your site’s settings and find its tracking code. The Site ID is the siteId value in the script URL, like 123 in https://app.rybbit.io/api/script.js?siteId=123. It’s a public ID, so you don’t need an API key.
2

Add it to Notra

Open Studio → Sites, select your site, open Integrations and click Add Rybbit. Paste the ID into Site ID, and if you host Rybbit yourself, enter your instance’s script URL under Script URL as well. When you click Save, Notra opens a pull request with the change. To configure it in your repository instead, add it to blog.json:
blog.json
3

Merge and verify

After you merge the change and the production deployment finishes, visit your live site and check the realtime view in Rybbit.

Options

The dashboard covers the Site ID and script URL. You set every other option in blog.json, and editing the integration in the dashboard keeps those options as they are. Notra adds the origin of scriptUrl to script-src and connect-src in the Content-Security-Policy, because Rybbit loads its settings from that host and sends events and replays back to it. Error tracking, web vitals, outbound links, button clicks, copy and form tracking, query strings and URL fragments aren’t script options. Turn them on or off in your site’s settings in Rybbit, and the script picks them up on the next page load.

Path patterns

skipPatterns and maskPatterns take globs that start with / or regular expressions that start with re:: Both lists apply only to events and session replay still records skipped and masked pages, so hide sensitive content in recordings with the replay options instead.

Session replay

Turn on session replay in your site’s settings in Rybbit. Rybbit then loads its recorder from the same host as the tracker and masks every form input by default, and the options under replay change what the recorder captures.
blog.json
The class options take a single class name without the dot, and CSS selectors can be up to 500 characters long.

Masked input types

replay.maskInputOptions maps input types to true or false: color, date, datetime-local, email, month, number, password, range, search, select, tel, text, textarea, time, url and week. It replaces Rybbit’s default as a whole, so list password and email again if you add other types:

Sampling

replay.sampling replaces Rybbit’s default sampling as a whole, so set every key you care about.

Slim DOM options

replay.slimDomOptions maps parts of the page to true to leave them out of recordings: script, comment, headFavicon, headWhitespace, headMetaDescKeywords, headMetaSocial, headMetaRobots, headMetaHttpEquiv, headMetaAuthorship, headMetaVerification and headTitleMutations. Rybbit leaves out everything except script and headTitleMutations by default, and your object replaces that default as a whole.

Custom events

To track clicks in your own components and MDX, add data-rybbit-event to an element. Rybbit then sends a custom event with that name when a visitor clicks it and uses the element’s data-rybbit-prop-* attributes as properties:
From a custom script, call window.rybbit.event("pricing_clicked", { placement: "changelog-footer" }), or use your namespace if you set one, as Rybbit’s event docs describe.

Privacy

Rybbit sets no cookies, but it keeps an anonymous visitor ID in local storage. To stop tracking your own visits, run localStorage.setItem("disable-rybbit", "true") in the browser console on your live site, or use disable-<namespace> if you set a namespace.
Last modified on November 8, 2026