Getting started
Add the Inboard widget to any page with a single script tag. Replace YOUR_EMBED_KEY with the key from your project settings.
<script
src="https://app.inboard.dev/widget/inboard-widget.js"
data-embed-key="YOUR_EMBED_KEY"
async
></script>The widget renders inside a container with the class .inboard-widget. It auto-detects the user's platform and shows the appropriate install template.
To target a specific install template, add the data-guide-slug attribute:
<script
src="https://app.inboard.dev/widget/inboard-widget.js"
data-embed-key="YOUR_EMBED_KEY"
data-guide-slug="getting-started"
async
></script>Configure
Configure the widget declaratively with data attributes on the script tag, or programmatically via Inboard.init().
Data attributes
| Attribute | Description | Example |
|---|---|---|
| data-embed-key | Your project embed key (required) | abc123 |
| data-guide-slug | Show a specific install template by slug | getting-started |
| data-platform | Pre-select a platform | wordpress |
| data-inboard-locale | Force a locale for translations | es |
| data-inboard-vars | Pass variables as JSON | {"apiKey":"sk-..."} |
| data-api-url | Override the API base URL | https://your-api.com |
Programmatic init
Use Inboard.init() to configure the widget after the script loads:
Inboard.init({
vars: { apiKey: "sk-your-key", projectId: "proj_123" },
platform: "shopify",
locale: "fr",
styles: { primaryColor: "#7c3aed" }
});Configure
Pass dynamic values into install templates — API keys, project IDs, custom domains. Define variables in the dashboard, then pass them when embedding.
Via data attribute
<script
src=".../inboard-widget.js"
data-embed-key="YOUR_KEY"
data-inboard-vars='{"apiKey":"sk-live-abc","domain":"app.example.com"}'
async
></script>Via JavaScript
Inboard.init({
vars: {
apiKey: "sk-live-abc",
domain: "app.example.com"
}
});Required variables that aren't provided will show an error in the widget. Variables with default values in the dashboard will use those as fallbacks.
Customize
The widget inherits your project's theme from the dashboard — colours, radius, layout. For additional customisation, use CSS overrides or the programmatic styles API.
CSS overrides
Target the widget container and its child elements:
.inboard-widget .ib-container {
font-family: "Inter", sans-serif;
--ib-primary: #7c3aed;
}
.inboard-widget .ib-step-content {
font-size: 15px;
line-height: 1.7;
}Programmatic styles
Inboard.init({
styles: {
primaryColor: "#7c3aed",
borderRadius: "12px",
fontFamily: "Inter, sans-serif"
}
});Dashboard settings
Most styling is configured in your project's Widget Configuration panel: theme (light / dark / auto), primary colour, container style (card / flat / bordered), layout (stepper / tabs / sidebar / accordion), and custom CSS.
Reference
The widget uses a public REST API. You can also call it directly for custom integrations.
/api/v1/guides/:embedKeyReturns all published install templates for a project.
curl https://api.inboard.dev/v1/guides/YOUR_EMBED_KEYQuery parameters
| Parameter | Description |
|---|---|
| platform | Filter by platform slug or ID |
| locale | Return translated content for this locale |
| draft | Include draft versions (true / false) |
/api/v1/eventsTrack installation events (views, step completions, verifications).
fetch("/api/v1/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
embedKey: "YOUR_EMBED_KEY",
sessionId: "session_abc",
eventType: "step_complete",
installTemplateId: "tpl_123",
stepId: "step_456",
metadata: {}
})
});/api/v1/verifyRun verification checks for a completed installation step.
Rate limits
Public endpoints are rate-limited per client IP. Exceeded requests return 429 Too Many Requests with a Retry-After header. Authenticated dashboard and admin endpoints have their own per-account limits.
| Endpoint | Limit | Notes |
|---|---|---|
| GET /v1/guides/:embedKey | 60 / min / IP | Widget render lookups and direct integrations |
| POST /v1/events | 30 / min / IP | Installer step / view events |
| POST /v1/verify | 10 / min / IP | Verification checks |
| POST /v1/installs | 5 / min / IP | Create install session |
| POST /v1/intelligence | 10 / min / IP | Site intelligence lookups |
New SaaS accounts publishing snippets are additionally subject to a per-account publish throttle for their first 30 days. Limits are configurable and may change without notice; treat the values above as a current guide, not a contract.
Reference
Inboard enforces domain whitelisting on all API endpoints. Configure allowed domains in your project settings to prevent unauthorised access.
Domain whitelisting
In the dashboard, go to Settings → Domains and add the domains where your widget will be embedded. Only requests from whitelisted origins will receive install template data.
- Wildcards supported:
*.example.com - Localhost is allowed by default in development
- API events and verification endpoints enforce the same whitelist
Embed keys
Embed keys are project-scoped and read-only — they can fetch published install templates but cannot modify data. Rotate keys in the dashboard if needed.
Something missing?
We ship docs alongside features. If an endpoint or option isn't listed here, email us and we'll either clarify it or add it.
Email us