Boards
Custom dashboards for data visualization
Boards
Entrolytics Boards are customizable dashboards that let you create personalized views of your analytics data.
Overview
Boards allow you to:
- Create custom layouts with drag-and-drop widgets
- Combine multiple data sources in one view
- Share dashboards with team members
- Focus on key metrics that matter to your business
Creating Boards
Via Dashboard
- Navigate to Boards in the sidebar
- Click Create Board
- Enter a name and description
- Click Create
- Add widgets to your board
Via API
import { getClient } from '@entro314labs/entro-api'
const client = getClient({
hostUrl: 'https://cloud.entrolytics.click',
websiteId: 'your-website-id',
})
const board = await client.boards.create({
name: 'Marketing Dashboard',
description: 'Key marketing metrics and campaign performance',
})Widget Types
Metric Card
Display a single metric with optional comparison.
await client.boards.createWidget(boardId, {
type: 'metric',
title: 'Total Page Views',
config: {
metric: 'pageviews',
comparison: 'previous_period',
},
})Line Chart
Time-series data visualization.
await client.boards.createWidget(boardId, {
type: 'line',
title: 'Traffic Over Time',
config: {
metrics: ['pageviews', 'visitors'],
period: '30d',
granularity: 'day',
},
})Bar Chart
Categorical comparisons.
await client.boards.createWidget(boardId, {
type: 'bar',
title: 'Top Pages',
config: {
dimension: 'url',
metric: 'pageviews',
limit: 10,
},
})Pie Chart
Distribution visualization.
await client.boards.createWidget(boardId, {
type: 'pie',
title: 'Device Distribution',
config: {
dimension: 'device',
metric: 'visitors',
},
})Table
Tabular data display.
await client.boards.createWidget(boardId, {
type: 'table',
title: 'Top Referrers',
config: {
dimensions: ['referrer'],
metrics: ['visitors', 'pageviews', 'bounce_rate'],
limit: 20,
},
})Map
Geographic data visualization.
await client.boards.createWidget(boardId, {
type: 'map',
title: 'Visitors by Country',
config: {
metric: 'visitors',
level: 'country', // or 'region', 'city'
},
})Funnel
Conversion funnel visualization.
await client.boards.createWidget(boardId, {
type: 'funnel',
title: 'Checkout Funnel',
config: {
steps: [
{ name: 'Product View', event: 'view_product' },
{ name: 'Add to Cart', event: 'add_to_cart' },
{ name: 'Checkout', event: 'begin_checkout' },
{ name: 'Purchase', event: 'purchase' },
],
},
})Real-time
Live visitor counter.
await client.boards.createWidget(boardId, {
type: 'realtime',
title: 'Active Visitors',
config: {
refreshInterval: 5000, // ms
},
})Widget Configuration
Common Options
All widgets support these options:
{
type: string, // Widget type
title: string, // Display title
description?: string, // Optional description
width?: 1 | 2 | 3 | 4, // Grid width (1-4 columns)
height?: 1 | 2, // Grid height (1-2 rows)
websiteId?: string, // Override default website
config: {
// Type-specific configuration
},
}Filtering
Add filters to any widget:
{
config: {
filters: [
{ field: 'country', operator: 'eq', value: 'US' },
{ field: 'device', operator: 'in', value: ['desktop', 'tablet'] },
{ field: 'url', operator: 'contains', value: '/blog' },
],
},
}Date Ranges
Configure time periods:
{
config: {
period: '30d', // Preset: 7d, 30d, 90d, 12m, all
// Or custom range:
startDate: '2024-01-01',
endDate: '2024-12-31',
},
}Comparison
Enable period comparison:
{
config: {
comparison: 'previous_period', // or 'previous_year'
},
}Board Layout
Grid System
Boards use a 4-column grid:
┌─────────┬─────────┬─────────┬─────────┐
│ Widget │ Widget │ Widget (2 cols) │
│ (1 col) │ (1 col) │ │
├─────────┴─────────┴───────────────────┤
│ Widget (4 cols, full width) │
├─────────┬─────────────────────────────┤
│ Widget │ Widget (3 cols) │
│ (1 col) │ │
└─────────┴─────────────────────────────┘Drag and Drop
In the dashboard:
- Click Edit Board
- Drag widgets to reorder
- Resize widgets by dragging corners
- Click Save when done
Programmatic Layout
await client.boards.update(boardId, {
layout: [
{ widgetId: 'w1', x: 0, y: 0, width: 1, height: 1 },
{ widgetId: 'w2', x: 1, y: 0, width: 2, height: 1 },
{ widgetId: 'w3', x: 3, y: 0, width: 1, height: 2 },
{ widgetId: 'w4', x: 0, y: 1, width: 3, height: 1 },
],
})Sharing Boards
Team Sharing
Share with organization members:
await client.boards.update(boardId, {
visibility: 'org', // 'private' | 'org' | 'public'
})Public Sharing
Create a public share link:
const shareUrl = await client.boards.createShareLink(boardId)
// Returns: https://cloud.entrolytics.click/share/board/abc123Embedding
Embed boards in external pages:
<iframe
src="https://cloud.entrolytics.click/embed/board/abc123"
width="100%"
height="600"
frameborder="0"
></iframe>API Reference
Create Board
const board = await client.boards.create({
name: string,
description?: string,
visibility?: 'private' | 'org' | 'public',
})Get Board
const board = await client.boards.get(boardId)Update Board
const board = await client.boards.update(boardId, {
name?: string,
description?: string,
visibility?: string,
layout?: LayoutConfig[],
})Delete Board
await client.boards.delete(boardId)List Boards
const boards = await client.boards.list()Widget Operations
// Create widget
const widget = await client.boards.createWidget(boardId, widgetConfig)
// Get widget
const widget = await client.boards.getWidget(boardId, widgetId)
// Update widget
await client.boards.updateWidget(boardId, widgetId, updates)
// Delete widget
await client.boards.deleteWidget(boardId, widgetId)
// List widgets
const widgets = await client.boards.getWidgets(boardId)Template Boards
Marketing Dashboard
const board = await client.boards.createFromTemplate('marketing', {
name: 'Marketing Overview',
})Includes:
- Traffic overview metrics
- Top channels chart
- Campaign performance table
- Conversion funnel
- Geographic distribution
E-commerce Dashboard
const board = await client.boards.createFromTemplate('ecommerce', {
name: 'E-commerce Analytics',
})Includes:
- Revenue metrics
- Conversion funnel
- Top products table
- Average order value trend
- Cart abandonment rate
Content Dashboard
const board = await client.boards.createFromTemplate('content', {
name: 'Content Performance',
})Includes:
- Page views over time
- Top pages table
- Engagement metrics
- Read time distribution
- Social shares
Best Practices
Dashboard Design
- Lead with key metrics - Put most important data at the top
- Group related widgets - Keep similar data together
- Limit to 6-8 widgets - Avoid information overload
- Use consistent time ranges - Makes comparisons easier
- Add descriptions - Help viewers understand the data
Performance
- Limit table rows - Use pagination or limits
- Choose appropriate granularity - Daily for long periods, hourly for recent
- Cache expensive queries - Use reports for complex analysis
Sharing
- Set appropriate visibility - Private for sensitive data
- Use descriptive names - Help others find relevant boards
- Document data sources - Add descriptions explaining the data