# Customization
Source: https://docs.clayzo.com/customization
Customize the look, feel, and behavior of the feedback widget.
Every aspect of the widget's appearance can be configured via `data-*` attributes on the script tag. No code changes required.
## Full Example
```html theme={null}
```
## Options Reference
### `data-theme`
Controls the widget's color scheme.
| Value | Description |
| ------- | -------------------------------------------------- |
| `auto` | Matches the user's system preference **(default)** |
| `light` | Light background, dark text |
| `dark` | Dark background, light text |
```html theme={null}
```
### `data-accent`
Sets the accent color used for buttons, highlights, and the element selector. Accepts any hex color.
**Default:** `#01adae`
```html theme={null}
```
### `data-position`
Controls which corner the widget appears in.
| Value | Description |
| -------------- | --------------------------------- |
| `bottom-right` | Bottom-right corner **(default)** |
| `bottom-left` | Bottom-left corner |
```html theme={null}
```
### `data-trigger`
Controls the style of the trigger button that opens the feedback panel.
| Value | Description |
| ------ | ----------------------------------------------------- |
| `fab` | Floating action button with an icon **(default)** |
| `text` | Inline text button |
| `tab` | Tab attached to the edge of the screen |
| `none` | No trigger — use your own button with `Clayzo.open()` |
```html theme={null}
```
### `data-trigger-text`
Custom label for the trigger button. Only visible with the `text` and `tab` trigger styles.
**Default:** `Feedback`
```html theme={null}
```
## Custom Trigger (BYO Button)
Set `data-trigger="none"` to hide the default widget button, then call `Clayzo.open()` from anywhere in your UI:
```html theme={null}
```
This works from any element — a footer link, a nav item, a help menu, a floating button you built yourself. The full feedback panel (element selection, screenshots, session replay) still works exactly the same.
## Identifying Users
By default, feedback is submitted anonymously. To attach user identity, use the [programmatic API](/programmatic-api) instead of auto-initialization:
```html theme={null}
```
The user's name and email will appear alongside their feedback in the Clayzo dashboard.
# Dashboard
Source: https://docs.clayzo.com/dashboard
View and manage customer feedback in the Clayzo dashboard.
All feedback submitted through the SDK is available in the **Customer Feedback** tab inside the Review sidebar of your workspace.
## Inbox
The feedback inbox shows all submissions with:
* **Type indicator** — Bug, Idea, or Feedback
* **Status** — Open, Active, Resolved, or Closed
* **User info** — Name and page URL
* **Attachment icons** — Element context, screenshot, session replay, AI fix plan
### Filtering
Use the filter bar to narrow results:
| Filter | Options |
| ---------- | -------------------------------------- |
| **Status** | Open, Active, Resolved, Closed |
| **Type** | Bugs, Ideas, Feedback |
| **Search** | Filter by text, page URL, or user name |
Filters can be combined (e.g. show only open bugs). The default view shows **Open** items.
## Detail Panel
Click any item to open the detail drawer.
### AI Fix Plan
An AI-generated analysis and action plan based on the feedback text, element context, and page URL. Copy the full plan to hand off to your engineering team.
### Session Replay
If session replay is enabled, the full recording loads automatically when the panel opens. Watch exactly what the user experienced leading up to their feedback.
### Element Context
When a user attaches an element, the panel shows:
| Field | Description |
| ------------------- | --------------------------------------- |
| **React component** | Component name and full component stack |
| **Props** | Serialized component props |
| **CSS selector** | Full selector path |
| **Element text** | Visible text content |
| **Layout** | Position and dimensions |
### Screenshot
A screenshot captured at the moment of submission.
### Environment
Browser user agent and viewport dimensions.
## Managing Status
Update the status of any feedback item from the detail panel header.
| Status | Meaning |
| ------------ | ---------------------- |
| **Open** | New, unreviewed |
| **Active** | Being worked on |
| **Resolved** | Fixed or addressed |
| **Closed** | Won't fix or duplicate |
# Customer Feedback SDK
Source: https://docs.clayzo.com/index
Embed a feedback widget in your product to collect bug reports, ideas, and feedback from your users.
Drop a single script tag into your site and start collecting bug reports, feature ideas, and feedback from your users — complete with element selection, screenshots, and session replays.
Get the widget running in under 2 minutes.
Themes, triggers, colors, and positioning.
Control the widget with JavaScript.
Manage feedback in Clayzo.
## How It Works
Go to your workspace's **Settings → Integrations** and generate an SDK API key.
Paste the embed snippet into your site's HTML.
Each submission captures the page URL, a screenshot, element context, and an optional session replay.
All feedback appears under the **Customer Feedback** tab, with AI-generated fix plans and full session replays.
# Programmatic API
Source: https://docs.clayzo.com/programmatic-api
Control the feedback widget with JavaScript for advanced use cases.
For full control over initialization, user identity, and lifecycle, use the JavaScript API instead of (or alongside) `data-*` attributes.
## `Clayzo.init(options)`
Initialize the widget. If a widget is already active, it will be destroyed first.
```html theme={null}
```
### Options
| Option | Type | Default | Description |
| -------------- | ------------------------------------ | ---------------- | ---------------------------------------------------------------------------- |
| `apiKey` | `string` | — | **Required.** Your SDK API key |
| `theme` | `"light" \| "dark" \| "auto"` | `"auto"` | Color scheme |
| `accent` | `string` | `"#01adae"` | Accent color (hex) |
| `position` | `"bottom-right" \| "bottom-left"` | `"bottom-right"` | Widget corner |
| `triggerStyle` | `"fab" \| "text" \| "tab" \| "none"` | `"fab"` | Trigger button style. Use `"none"` to hide and call `Clayzo.open()` yourself |
| `triggerText` | `string` | `"Feedback"` | Trigger button label |
| `user` | `object` | — | End-user identity |
| `user.id` | `string` | — | Your internal user ID |
| `user.name` | `string` | — | Display name |
| `user.email` | `string` | — | Email address |
| `onSubmit` | `function` | — | Callback after successful submission |
## `Clayzo.open()`
Open the feedback panel programmatically. Use this when you've set `triggerStyle: "none"` and want to trigger the panel from your own UI.
```javascript theme={null}
Clayzo.open();
```
For example, from a button in your footer:
```html theme={null}
```
Or from a React component:
```jsx theme={null}
```
## `Clayzo.destroy()`
Remove the widget from the page and stop all recording.
```javascript theme={null}
Clayzo.destroy();
```
If you use `data-key` on the script tag **and** call `Clayzo.init()`, the programmatic call takes precedence.
## Single-Page App Usage
For SPAs (React, Next.js, Vue, etc.), initialize in your app's root component and destroy on unmount:
```jsx theme={null}
import { useEffect } from "react";
function App() {
useEffect(() => {
if (window.Clayzo) {
window.Clayzo.init({
apiKey: "sk_live_...",
user: { id: currentUser.id, name: currentUser.name }
});
}
return () => window.Clayzo?.destroy();
}, []);
return ;
}
```
```vue theme={null}
```
```html theme={null}
```
# Quick Start
Source: https://docs.clayzo.com/quick-start
Get the Clayzo feedback widget running on your site in under 2 minutes.
Go to **Settings → Integrations** in your Clayzo workspace and find the **Customer Feedback SDK** section. Click **Generate API Key**.
Copy the key — it starts with `sk_live_`.
Paste this before the closing `