Requirements
To follow the steps in this guide, you’ll need:- Organization Admin permissions
- To have the Embed feature enabled in your Omni instance
Setup
1
Generate an embed secret
The first step is to generate an embed secret:
- Navigate to Settings > Embed > Admin in your Omni instance:
- Click the Reset Secret button to generate your random secret key.

2
Optional: Customize session length
In the Embed settings of your Omni instance, you can also customize the length of embed sessions using the Session Length setting. In this field, enter the number of hours you want sessions to be and click Change.
3
Generate an embed URL
Omni embed URLs are composed of a few parts. These parts, used to customize the resulting embed user or session, are concatenated into a string and signed with a unique secret key used only by your organization. The signature is then added to a URL with all the parts specified as query parameters in the URL.When an Omni server receives the request in the URL, it will attempt to generate the same signature. If the passed in signature matches the signature generated in Omni’s servers, the request is honored.There are three ways to generate standard signed embed URLs in Omni:
SDK (Recommended)
SDK (Recommended)
Omni has a supported Typescript SDK and some unsupported examples in other languages.
- Supported - Typescript
- Unsupported - Ruby
API
API
While the Typescript SDK is the preferred method for generating signed URLs, you may not be able to leverage it if your backend isn’t running a JavaScript runtime. For other languages and environments, Omni offers a stateless API as an escape hatch:The
/embed/sso/generate-url endpoint only accepts POST requests. For POST operations, parameters are passed as a JSON object in the request body.This endpoint returns a signed URL for an embedded piece of content. Additionally:- The endpoint does not accept a signature param, as that is what’s being generated
- The endpoint requires a
secretparameter in the request body. The value should be the Embed secret you created in step 1. - The
nonceparam is optional. If not included, one will be automatically generated. - JSON encoded parameter values (
userAttributes,connectionRoles) should be URL encoded. Refer to the Embed parameters reference for a complete list of available parameters.
POST /embed/sso/generate-url
Manual generation
Manual generation
To generate the signature:Refer to the Base64 spec for more information about base64url.
-
Concatenate the required properties, delimited by a newline character in the exact order enumerated below. Note: The properties are in alphabetical order, with the exception of the leading login URL:
-
Concatenate the optional properties in alphabetical order, delimited by a newline character in the exact order enumerated below:
Do not include leading or trailing spaces. Include only a single newline between each part of the signature. The following example includes optional parameters for custom theme, entity, filter search param, prefers dark, link access, theme, and user attributes:Refer to the Embed parameters reference for more information about available parameters.
- Sign the string using your secret key with an HMAC sha256 digest algorithm, encoded as a base64url string:
Node.js example
4
Generate a signed embed URL
To generate the signed URL, take the parts from above, URL encode them as part of a URL query string, and attach the generated signature.The typical URL form:Search params are then URL encoded and appended. The order of parameters is irrelevant when generating the login URL.By now, the URL should look something like the following:
5
Optional: Test the URL with the Embed URL Builder
While primarily intended for internal embedding - such as embedding Omni in Notion - , you can use Omni’s embed URL builder to test the format of your URL parameters.
-
First, you’ll need your content’s unique ID:
Locate dashboard IDs
You can find the dashboard ID by:- Opening the document settings. Navigate to File > Document settings in the dashboard and then click Settings. The Identifier field contains the dashboard ID.
-
Using the dashboard’s URL. The string after
/dashboardsis the dashboard’s ID; for example:
Locate workbook IDs
- If the workbook is attached to a dashboard, its content ID is the same as the dashboard
- If the workbook doesn’t have a dashboard, you can find the ID by navigating to File > Document settings, then clicking Settings. The Identifier field contains the document ID. Note: Embedding a workbook creates a copy of the workbook for that embed user so their changes are not reflected back into the application’s production version of the workbook.
- Navigate to Admin > Embed > URL Builder tab.
-
Fill in the required fields, noted below:
- Content Path
- For dashboards:
/dashboards/<content_id> - For workbooks:
/w/<content_id>
- For dashboards:
- External ID - Any alphanumeric value
- Name - Any alphanumeric value
- Content Path
- Generate your URL and embed!