Clarity client API

You can quickly get started with Clarity without coding but by interacting with the Clarity client API. This API can help you access advanced features as described in this reference. Access these features by adding the following calls to Clarity APIs to the HTML or JavaScript of your webpage.


Your Clarity ID serves as your API key. No other client API key is necessary, and there is no cost for using Clarity client APIs.

JavaScript APIs

Purpose Syntax Parameters Required?
Cookie consent window.clarity("consent") String Yes
Custom identifiers window.clarity("identify", "custom-id", "custom-session-id", "custom-page-id", "friendly-name") Strings "custom-id": Yes,
"custom-session-id": No,
"custom-page-id": No,
"friendly-name": No
Custom tags window.clarity("set", <key>, <value>) <key>: string, <value>: string or an array of strings Yes

| Events | window.clarity("event", <value>) | <value>: string of the event name | <value>: Yes |


Purpose Syntax Parameters Required?
Mask content data-clarity-mask="true" Boolean Yes
Unmask content data-clarity-unmask="true" Boolean Yes

API Reference

Specify if cookies should be set

If your project is configured to require cookie consent, Clarity uses a unique first-party cookie to track each user with a browser cookie. If cookie consent is required, you must call the consent API to indicate that you have consent from the user to track them using a cookie. Otherwise, Clarity gives each page a unique ID instead of a cookie when cookie consent is required. Clarity automatically sets the first-party cookie by default, and you don't need to call this API.

Syntax Parameters Required?
window.clarity("consent") String Yes


In this example, a consentGranted event is fired when the user accepts cookies:

window.addEventListener("consentGranted", () => window.clarity('consent'));

When the consent argument is passed to clarity, cookies are set.


Learn more about how to manage cookie consent on Clarity.

Customize your identifiers

Custom Identifiers are informational data values about site visitors that your client-side code sends to Clarity over its Identify API. They include custom-id, custom-session-id, and custom-page-id and can help you customize the features on your site that requires it. Learn more on custom identifiers.

Add custom tags

Clarity offers many predefined ways to filter and analyze website data. However, you might want to track elements specific to your site or user experience. With custom tags, you can apply arbitrary tags to your Clarity session.

To use custom tags, pass the set argument along with a key-value pair to define a tag in your JavaScript. When Clarity collects data for that tag, it appears in the Filters options.

Syntax Parameters Required?
window.clarity ("set", "key", "value") "key": string,
"value": string or an array of strings


You can call this API multiple times. There is no limit to the number of custom tags you can have.


window.clarity("set", "experiment", "experiment1") 
window.clarity("set", "flight", ["flight1", "flight2"])

Note: The last call has the same effect as:

window.clarity("set", "flight", "flight1")
window.clarity("set", "flight", "flight2")


Learn more about Clarity's filtering options and custom tags.

Add custom events

Clarity offers no-code smart events, which automatically surface key user actions. Refer to Smart events to learn how to view, create, and customize new smart events completely code free.

If you prefer to instrument these user actions manually via Clarity APIs, call the event API with the action you'd like to track. When Clarity collects data for this event, it appears with your other Smart events in the Filters, Dashboard, Settings, and Recordings vertical.


You can call this API multiple times per page. Each event is logged individually and can be filtered, viewed in all the verticals.


window.clarity("event", "newsletterSignup")

Mask your site content

By default, your users' sensitive content is masked. We classify all input box content, numbers, and email addresses as sensitive content. Masked content isn't uploaded to Clarity.

If you want more control over which content on your site is masked, you can mask content using the Clarity website or add the data-clarity-mask property to HTML elements on your site.


Setting data-clarity-mask to false has no effect. To unmask content, use data-clarity-unmask.

Syntax Parameters Required?
data-clarity-mask="true" Boolean Yes


<form action="" method="get" data-clarity-mask="true">
    <label for="GET-name">User Name:</label>
    <input id="GET-name" type="text" name="name">
    <input type="submit" value="Submit">

Unmask your site content

Suppose you want to ensure that specific data items are sent to Clarity. In that case, you can unmask them by using data-clarity-unmask.


Setting data-clarity-unmask to false has no effect. To mask content, use data-clarity-mask.

Syntax Parameters Required?
data-clarity-unmask="true" Boolean Yes


<article class="Movie Review" data-clarity-unmask="true">
        <h2>Star Wars</h2>
        <p>A classic!</p>

Prioritize specific sessions for recording

Clarity keeps up to 100,000 session recordings per project per day. If your project's total volume of sessions exceeds the maximum daily limit, based on your traffic patterns, Clarity starts sampling the recordings it keeps. For example, if your site gets 200,000 sessions in a day, Clarity keeps every other recording.

You can use the upgrade API to prioritize specific types of sessions for recording. This is useful if you have sessions with specific types of events (such as clicks) that you want to look at or interactions with specific parts of your website (such as a shopping cart).

Syntax Parameters Required?
window.clarity("upgrade", <upgrade reason>) Strings "upgrade": Yes, <upgrade reason>: Yes


window.clarity("upgrade", "button click")

Visit Clarity