Documentation Index
Fetch the complete documentation index at: https://mintlify.com/metabase/metabase/llms.txt
Use this file to discover all available pages before exploring further.
Full app embedding requires a Pro or Enterprise plan.
When to use full app embedding
Full app embedding is ideal when you want to:- Embed all of Metabase’s functionality
- Provide a complete analytics workspace
- Give users access to the full Metabase experience
- Minimize setup time (less granular control needed)
- Custom layouts for specific components
- Fine-grained control over UI elements
- Modern React-based integration
- Advanced theming and plugins
Full app embedding demo
Check out our Full app embedding demo to see it in action. To see the query builder in action, click on Reports > + New > Question.Prerequisites
License token
Get a license token for a Pro or Enterprise plan.
Organize users into groups
Create groups in Metabase for different user types or customers.
Set up permissions
Configure permissions for each group to control data access.
For multi-tenant applications, see our guide on configuring permissions for different customer schemas.
Quick start
Check out the Full app embedding quick start guide for a hands-on tutorial.Enable full app embedding in Metabase
Set up embedding on your website
Basic iframe setup
Create an iframe pointing to your Metabase URL:- Direct URL
- Authentication endpoint
Point directly to the Metabase page you want to embed:
Pointing to a Metabase URL
To embed a specific page, use the Entity ID URL format:Get the Entity ID
- Visit the dashboard, question, or collection in Metabase
- Click the info button (ⓘ)
- In the Overview tab, copy the Entity ID
Build the URL
Use the format:
/[item-type]/entity/[Entity-ID]Examples:- Dashboard:
https://metabase.yourcompany.com/dashboard/entity/Dc_7X8N7zf4iDK9Ps1M3b - Question:
https://metabase.yourcompany.com/question/entity/q1A2b3C4d5E6f7G8h9 - Collection:
https://metabase.yourcompany.com/collection/entity/c1A2b3C4d5E6 - Model:
https://metabase.yourcompany.com/model/entity/m1A2b3C4d5E6
Use Entity IDs instead of sequential IDs. Entity IDs are stable across different environments (staging, production), making them ideal for serialization.
Linking to a specific dashboard tab
If your dashboard has multiple tabs, add the tab ID to the URL:Pointing to an authentication endpoint
To send users directly to your SSO login screen (skipping the Metabase login page):Cross-browser compatibility
The TLD is the last part of a web address (.com, .org, etc.).
Example:
- ✅ Good:
metabase.example.comembedded onapp.example.com - ❌ Problematic:
metabase.example.comembedded onexample.io
Your full app embed must be compatible with Safari to run on any browser in iOS (including Chrome on iOS, which uses Safari’s engine).
Embedding in a different domain
If you must embed Metabase in a different domain, configure the session cookie’s SameSite value:
Alternatively, set the
MB_SESSION_COOKIE_SAMESITE environment variable.
Learn more about SameSite cookies.
Security best practices
Metabase uses HTTP cookies to authenticate people and keep them signed in.Limit session duration
Limit session duration
Clear cookies on browser close
Clear cookies on browser close
Manual logout
Manual logout
Load this URL to log someone out (e.g., in a hidden iframe on your logout page):
JWT expiration
JWT expiration
If using JWT SSO, set the
exp property to a short duration (e.g., 1 minute).Communication with embedded Metabase
UsepostMessage to communicate between your app and the embedded Metabase:
Messages from embedded Metabase
- Location changes
- Frame size (normal mode)
- Frame size (fit mode)
Listen for URL changes (e.g., when filters are applied):Message format:
Messages to embedded Metabase
Change the embedded URL programmatically:Showing or hiding UI components
Control which Metabase UI components are visible using URL parameters. See full app UI components for details.For more granular control over embedded components, use Modular embedding instead.
Group strategies for permissions
For multi-tenant applications where multiple users from a single customer need to collaborate:Customer-specific groups
Create one group per customer account. Users in this group can collaborate on questions and dashboards.
Security group
Create a separate group for row and column security. Apply data permissions via attributes that span all customers.
Reference apps
Build a sample full app embed with these reference implementations:Node.js + Express
With quick start guide
Node.js + React
Complete React implementation
Common use cases
Embed the home page
Embed the home page
Embed a specific dashboard
Embed a specific dashboard
Embed with dashboard filters pre-applied
Embed with dashboard filters pre-applied
Embed a collection
Embed a collection
Embed with SSO redirect
Embed with SSO redirect
Troubleshooting
Cookies not working in Safari
Cookies not working in Safari
Authentication issues
Authentication issues
- Verify JWT configuration in Admin > Settings > Authentication
- Check that JWT tokens have valid
exp(expiration) values - Ensure SSO endpoint returns tokens correctly
- Test with API key first for debugging
CORS errors
CORS errors
- Add your domain to Authorized origins in Admin > Embedding
- Make sure to include the protocol (https://)
- Wildcards are supported:
https://*.example.com
Iframe not displaying
Iframe not displaying
- Check browser console for errors
- Verify the Metabase URL is accessible
- Ensure your license token is valid
- Check that Full app embedding is enabled in Admin settings
Next steps
Quick start guide
Follow the step-by-step tutorial
Authentication
Set up JWT SSO
Permissions
Configure data access
UI components
Control visible UI elements