Embed
Embed your Boarbs feedback board inside your application via iframe.
Embed
Embed your feedback board inside your app as an iframe. Users can vote, comment, and submit requests without leaving your product.
How It Works
- Your backend creates an embed session via API (with the user's identity)
- The API returns an embed URL with a session token
- Your frontend renders that URL in an
<iframe>
1. Create an API Key
Go to Settings → API Keys, create a read-write key, and add it to your backend environment:
BOARBS_API_KEY=sk_...
BOARBS_BOARD_ID=your_board_id2. Create an Embed Session (Backend)
// Your backend — e.g. Express, Next.js API route, etc.
const response = await fetch('https://app.boarbs.com/api/embed/sessions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.BOARBS_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
boardId: process.env.BOARBS_BOARD_ID,
userId: user.id, // Your user's ID
email: user.email,
firstName: user.firstName, // optional
lastName: user.lastName, // optional
avatarUrl: user.avatarUrl, // optional
plan: user.plan, // optional — hides branding on paid plans
expiresInSeconds: 604800, // optional — default 30 days
}),
});
const { embedUrl } = await response.json();Session Fields
| Field | Required | Description |
|---|---|---|
boardId | Yes | Board to embed |
userId | Yes | Your user's unique ID |
email | Yes | User's email |
firstName | No | Display name |
lastName | No | Display name |
avatarUrl | No | Avatar image URL |
plan | No | User's plan — hides "Powered by Boarbs" on paid plans |
metadata | No | Arbitrary key-value data for segmentation |
expiresInSeconds | No | Session TTL (default: 30 days) |
3. Render the Iframe (Frontend)
<iframe
src="EMBED_URL_FROM_BACKEND"
width="100%"
height="700"
frameborder="0"
title="Feedback"
/>React Example
'use client';
import { useEffect, useState } from 'react';
export function FeedbackEmbed() {
const [url, setUrl] = useState<string | null>(null);
useEffect(() => {
fetch('/api/feedback-embed-url')
.then(r => r.json())
.then(d => setUrl(d.embedUrl));
}, []);
if (!url) return <div>Loading...</div>;
return (
<iframe src={url} width="100%" height="700" frameBorder="0" title="Feedback" />
);
}URL Parameters
Filter the embedded board with query parameters on the embed URL:
| Parameter | Example | Description |
|---|---|---|
status | planned | Filter by status |
sortBy | mostVoted | Sort order |
search | dark mode | Search query |
tags | bug,feature | Comma-separated tags |
https://yourorg.boarbs.com/embed?token=TOKEN&status=planned&sortBy=mostVotedSecurity
- Never expose your API key in client-side code — always create sessions from your backend
- Treat session tokens like credentials — transmit only over HTTPS
- Set appropriate
expiresInSecondsfor your use case
Next Steps
- Embed Session API Reference — Full request/response schema
- API Reference — All available endpoints
- Portal Guide — Alternative: standalone public portal (no code required)