SDK Configuration
Complete reference for configuring the Claymore JavaScript SDK. Control privacy, performance, and behavior to match your needs.
Basic Installation
Add the Claymore SDK to your page with a single script tag:
<script
src="https://sdk.claymore.one/loader.js"
data-src="https://sdk.claymore.one/claymore.js"
data-project-id="YOUR_PROJECT_ID"
async
></script>Configuration Options
Configure the SDK using data-* attributes on the script tag:
data-project-id (required)
Your unique project identifier from the Claymore dashboard.
data-project-id="proj_abc123xyz"data-privacy-level
Control how aggressively the SDK masks sensitive content. Options:
light— Mask passwords and credit card fields onlystandard— Mask all input fields (default)strict— Mask all text content, including static text
data-privacy-level="standard"data-capture-console
Enable or disable console log capture. Set to false to disable.
data-capture-console="true" // default
data-capture-console="false" // disable console capturedata-capture-network
Capture XHR/Fetch network requests (timing, status, URLs).
data-capture-network="true" // default
data-capture-network="false" // disable network capturedata-flush-interval
How often (in milliseconds) to send recorded data to Claymore servers. Lower values = more real-time, higher values = better batching.
data-flush-interval="5000" // default: 5 seconds
data-flush-interval="1000" // 1 second (more real-time)
data-flush-interval="10000" // 10 seconds (more batching)data-sample-rate
Percentage of sessions to record (0-100). Use for high-traffic sites where you don't need 100% of sessions.
data-sample-rate="100" // default: record all sessions
data-sample-rate="50" // record 50% of sessions
data-sample-rate="10" // record 10% of sessionsFull Example
Here's a script tag with multiple configuration options:
<script
src="https://sdk.claymore.one/loader.js"
data-src="https://sdk.claymore.one/claymore.js"
data-project-id="proj_abc123xyz"
data-privacy-level="standard"
data-capture-console="true"
data-capture-network="true"
data-flush-interval="5000"
data-sample-rate="100"
async
></script>JavaScript API
The SDK exposes a global Claymore object for programmatic interaction.
Identify Users
Connect sessions to a user ID from your system:
// Safe to call before SDK loads
window.Claymore = window.Claymore || {
push: function(m, a) { (this.q = this.q || []).push([m, a]) }
};
// After user logs in
Claymore.push('identify', ['user_123']);
// With additional properties (optional)
Claymore.push('identify', ['user_123', {
email: 'user@example.com', // masked by default
plan: 'premium'
}]);Track Events
Record custom events for analytics and searchability:
// Simple event
Claymore.push('event', ['button_click']);
// Event with properties
Claymore.push('event', ['purchase', {
amount: 99.99,
currency: 'USD',
productId: 'prod_123'
}]);
// Conversion event
Claymore.push('event', ['signup_completed', {
source: 'landing_page',
plan: 'growth'
}]);Exclude Elements
Prevent specific elements from being recorded:
<!-- Add data-claymore-ignore to exclude an element -->
<div data-claymore-ignore>
This content will not appear in replays
</div>
<!-- Mask specific input fields -->
<input type="text" data-claymore-mask />
<!-- Exclude entire sections -->
<section data-claymore-ignore>
<form>
Sensitive form content here
</form>
</section>Pause/Resume Recording
Temporarily pause recording (useful for sensitive workflows):
// Pause recording
Claymore.push('pause', []);
// Resume recording
Claymore.push('resume', []);
// Example: Pause during sensitive modal
function showSensitiveModal() {
Claymore.push('pause', []);
openModal();
}
function closeSensitiveModal() {
closeModal();
Claymore.push('resume', []);
}Framework Integration
React / Next.js
Add the script in your layout or _document file:
// Next.js (app/layout.tsx)
export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Script
src="https://sdk.claymore.one/loader.js"
data-src="https://sdk.claymore.one/claymore.js"
data-project-id="YOUR_PROJECT_ID"
strategy="lazyOnload"
/>
</body>
</html>
)
}Vue.js / Nuxt
// nuxt.config.js
export default {
head: {
script: [
{
src: 'https://sdk.claymore.one/loader.js',
'data-src': 'https://sdk.claymore.one/claymore.js',
'data-project-id': 'YOUR_PROJECT_ID',
async: true
}
]
}
}Troubleshooting
Sessions not appearing
Check the browser console for errors. Common issues:
- Invalid project ID
- Ad blocker blocking the SDK
- Content Security Policy blocking scripts
SDK not loading
Add the SDK domain to your CSP if you have one:
Content-Security-Policy: script-src 'self' https://sdk.claymore.one;