Now that you have successfully integrated a Luzmo dashboard in your application using embed tokens, it is time to make sure all dashboards match your application and even add some great functionalities such as bi-directional communication between the dashboard and your application. Let's dive right into it!

First of all, we recommend making the dashboards seamlessly fit in your application so your user-experienceis consistent throughout your whole application.
To ease your embedding experience, there is the possibility for you to remove the background color of a dashboard when embedding it. You can toggle this on/off under "Embedding options" at the dashboard level.
Check out these articles to learn how to create and save dashboard organization themes, but also how you can assert consistent colors to text values in your dataset and optimize your dashboard for different screen sizes.
You can also use theme overrides to override theme properties dynamically when requesting an authorization token for your dashboard(s). This will allow your users to have a personally styled dashboard, while you only need to maintain one template dashboard for all your users!
Next to that, you can add custom css injection by specifying the CSS code when requesting a temporary authorization token. This enables you to change all kind of things in the dashboard depending on the user looking at it.
You can ensure that the embedded dashboard (editor) and loader use your desired colors by specifying rgb colors (i.e. 'rgb(R, G, B)') for the loaderBackground, loaderFontColor, loaderSpinnerColor, loaderSpinnerBackground, mainColor and accentColor properties in your frontend! The mainColor en accentColor are only relevant in case of the Embedded Dashboard Editor. Changing the mainColor property will influence the color used for the "Add item", "Dashboard" and side menu buttons. Changing the accentColor property will influence the color used for the "Add dataset" button.
Make the dashboard fit with the language and currency of your user!
When dashboards are integrated in your application, they are actually able to interact with each other! Let's give a quick overview of which possibilities you have to add this interactivity:
You can easily make dashboard items point towards a custom url when clicked upon (e.g. going to a page within your application) by making use of their Go-to-URL functionality.
One of the most powerful feature is using Custom Events: when implemented in your dashboard and application, you can easily extend the interactivity and actionability of your insights by doing basically anything you want with the data that the user has selected in a widget. This is frequently used for implementing drill-throughs (i.e. going to a more detailed template dashboard that is filtered to the selected data in the first dashboard) which is neatly explained in this Academy article.
If you have a Spotify account, you should check out cuMusicalio; here you can find embedded Luzmo dashboards that visualize Spotify song properties, including some widgets with Custom Events set up to e.g. save a good song to your Spotify playlist(s) or get more details about it in another dashboard!
It's possible to decide how a filter or chart should initially be filtered, while giving your users the possibility to alter these filters: initialization filters allow you to dynamically initialize a filter or chart data point(s) selection in an embedded dashboard! This could for example be useful if you'd like to pre-filter dashboards based on the user in your application, by initializing e.g. a Slicer filter in the dashboard to specific values relevant to that user.
You can make use of getFilters to dynamically get the active filters in an embedded dashboard: in our Web Component and Vue.js Component this is implemented as a promise, but you can make use of the changedFilters event (in our Web Component) or changed-filters event (in our Vue.js Component) to listen to filter changes in an embedded dashboard. In our React, React Native and Angular libraries, getFilters is implemented as an observable! This could be useful when you have for example elements in your application that should be filtered to how the dashboard is being filtered (e.g. when your user selects something in a chart and the rest of the dashboard filters accordingly) or to load a dashboard with the same filtering active as when they last looked at it.
getData allows you to get the data of a single chart, e.g. in case you would like to do custom actions with the underlying data. This could be useful to e.g. target a specific selection of users based on which elements were selected in the dashboards, an example of this can be seen in our Sample Integration application which contains a button to get the data from the filtered table.
Now if you want to have elements of your application interacting with a dashboard (e.g. filter dashboard based on a selector in your application), you can! How would this work? When your selector changes, you have to generate a new authorization token with the corresponding filter values and then you can use the setAuthorization function to replace the authorization token, after which you will either use refreshData or reloadDashboard to make sure the chart(s) represent the changes to the authorization token.