Embedded JavaScript events

After you've created an embed — which can be donepublicly,privately, withsigned embedding, or through theAPI — you can interact with those iframes using JavaScript. You can make your page more dynamic based on the status of the embedded item, and you can even make changes to the embedded item from your web page.

Be aware that Looker doesn't control the order in which browsers dispatch events to web applications. This means that the order of events is not guaranteed across browsers or platforms. Be sure to write your JavaScript appropriately to account for the event handling of different browsers.

You can use JavaScript in one of the following ways for Looker embedded content:

Preparation

Before you can interact with the embedded iframe, follow these steps:

Adding an ID to the iframe

Later, when youretrieve data from the iframe, you'll need to validate that the information you're working with has actually come from Looker's iframe. To facilitate this, be sure to add an ID to your iframe, if you haven't done so already. In the following example, you set the ID tolooker by addingid="looker" to the iframe:

<iframeid="looker"src="https://instance_name.looker.com/embed/dashboards/1"></iframe>

Adding the embed domain to the iframesrc attribute

In the iframe'ssrc attribute, include the domain where the iframe is being used. In the following example, you can specifymyownpersonaldomain.com as the domain by adding?embed_domain=https://myownpersonaldomain.com" to the end of the URL in thesrc attribute:

<iframeid="looker"src="https://instance_name.looker.com/embed/dashboards/1?embed_domain=https://myownpersonaldomain.com"></iframe>

If you're usingsigned embedding, make sure you add theembed_domain to theembed URL.

Tip: Don't include a trailing slash (/) in the value that you provide for theembed_domain parameter.

If you're using theEmbed SDK, addsdk=3 to the end of the embed URL. Thesdk=3 parameter indicates that the SDK is present and that Looker can take advantage of additional features that the SDK provides, such as passing JavaScript events between the Looker iframe and your domain. The SDK can't add this parameter itself because it is part of the signed URL. For example:

<iframeid="looker"src="https://instance_name.looker.com/embed/dashboards/1?embed_domain=https://myownpersonaldomain.com&sdk=2"></iframe>

Adding the embed domain to the allowlist

Finally, you'll need to add the domain where the iframe is being used to the allowlist on theEmbed page of Looker'sAdmin panel by following these steps:

  1. In theEmbedded Domain Allowlist field, enter the domain where the iframe is being used, and then press the Tab key so that the domain appears in a box within the field.

    Important: Don't include a trailing slash (/) in the domain URL.
  2. ClickUpdate.

You can use the* wildcard in the allowlist to create a domain pattern. For example,https://*.myownpersonaldomain.com would allow bothhttps://analytics.myownpersonaldomain.com andhttps://data.myownpersonaldomain.com.

If you're usingcookieless embedding with Looker 23.8 or later, the embed domain can be specified when the cookieless session is acquired. This is an alternative to adding the embed domain to the allowlist using theAdmin > Embed panel. Review thesecurity best practices if you decide to take advantage of this feature.

Retrieving data from the iframe

After completing thepreparation steps, you can access the events that are passed between the Looker iframe and your domain by listening forpostMessage events.

Important: Be sure to check that the events have come from the Looker iframe and domain to avoidmalicious messages.

The embedded iframe can create a few event types, as described in theEvent type reference section on this page.

Accessing events in JavaScript

Here is an example of listening for these events in JavaScript, and then logging the events to the console:

window.addEventListener("message",function(event){if(event.source===document.getElementById("looker").contentWindow){if(event.origin==="https://instance_name.looker.com"){console.log(JSON.parse(event.data));}}});

Here is an example of listening for these events in jQuery, then logging them to the console:

$(window).on("message",function(event){if(event.originalEvent.source===$("#looker")[0].contentWindow){if(event.origin==="https://instance_name.looker.com"){console.log(JSON.parse(event.data));}}});

Event type summary table

The following table summarizes event types. Select an event type to see the details about that event.

Event TypeEvent Cause
dashboard:loadedOn dashboards where the tiles are not set to auto-run, a dashboard and its elements have loaded but queries are not yet running.
dashboard:run:startA dashboard has begun loading, and its tiles have started loading and querying for data.
dashboard:run:completeA dashboard has finished running and all tiles have finished loading and querying.
dashboard:downloadA PDF of a dashboard has started downloading.
dashboard:edit:start Added 22.20 A dashboard has been switched to edit mode. Thedashboard:save:complete event will be fired when the dashboard is successfully saved.
dashboard:edit:cancel Added 22.20 A dashboard that is in edit mode has been exited from edit mode without saving.
dashboard:save:completeA dashboard has been edited and saved.
dashboard:delete:completeA dashboard has been deleted.
dashboard:tile:startA tile has started loading or querying for data.
dashboard:tile:completeA tile has finished running the query.
dashboard:tile:downloadA tile's data has started downloading.
dashboard:tile:exploreA user has clicked theExplore From Here option in a dashboard tile.
dashboard:tile:merge Added 25.14 A user has clicked the Edit Merged Query button or menu item.
dashboard:tile:viewA user has clicked theView Original Look option in a dashboard tile.
dashboard:filters:changedA dashboard's filters have been applied or changed.
look:readyA Look has begun to load query data, whether the query will run or not.
look:run:startA Look has begun to load query data and the query has begun to run.
look:run:completeA Look has finished running the query.
look:edit:start Added 25.10 A Look has been switched to edit mode. Thelook:save:complete event will be fired when the look is saved.
look:edit:cancel Added 25.10 A Look that is in edit mode has been exited from edit mode without saving.
look:save:completeA Look has been edited and saved.
look:delete:completeA Look has been moved into theTrash folder.
drillmenu:clickA user has clicked on a drill menu in a dashboard that was created with thelink LookML parameter.
drillmodal:downloadA user has opened a drill dialog from a dashboard tile and clicked theDownload option.
drillmodal:exploreA user has clicked theExplore From Here option in a drill dialog.
explore:readyAn Explore has begun to load query data, whether the query will run or not.
explore:run:startAn Explore has begun to load query data and the query has begun to run.
explore:run:completeAn Explore has finished running the query.
explore:state:changedAn Explore page URL has changed as a result of the user's actions.
page:changedA user has navigated to a new page within the iframe.
page:properties:changedThe height of a dashboard iframe has changed.
session:tokensThe Looker client requires tokens to continue.
session:expired Added 25.10 The user's session has expired.
session:statusSends information about the status of a session.
env:client:dialogA dialog has been opened that may partially be out of view, such as a drill dialog. This event enables the hosting application to scroll the dialog into view.

Event type reference

The embedded iframe can create many different types of events:

dashboard:loaded

On dashboards where the tiles are not set to auto-run, this event is created after a dashboard and its elements have loaded but before queries are run.

type:"dashboard:loaded",status:"complete",dashboard:{id:1,title:"Business Pulse",canEdit:true,dashboard_filters:{"date":"Last 6 Years","state":""},absoluteUrl:"https://self-signed.looker.com:9999/embed/dashboards/1?embed_domain=https%3A%2F%2Fself-signed.looker.com%3A9999&date=Last+6+Years&state=",url:"/embed/dashboards/1?embed_domain=https%3A%2F%2Fself-signed.looker.com%3A9999&date=Last+6+Years&state=",options:{layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}}
AttributeFormatDescription
statusStringIndicates whether the dashboard and its elements have successfully loaded.
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.optionsObjectThedashboard layout,dashboard layout component, anddashboard element properties and values. All properties returned in theoptions object can be given updated values using thedashboard:options:set event.

dashboard:run:start

This event is created when a dashboard has begun loading, when its tiles will start loading and querying for data.

type:"dashboard:run:start",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}

dashboard:run:complete

This event is created when a dashboard has finished running and all tiles have finished loading and querying. This event is created whether or not all tiles load successfully.

type:"dashboard:run:complete",status:"complete",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://my.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}options:{layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}}
AttributeFormatDescription
statusStringIndicates whether the dashboard and its elements have successfully run. If the dashboard and its elements were successfully run,status returns"complete"; otherwise,status returns"error". If the running dashboard was stopped, either from the user interface or with thedashboard:stop action,status will return"stopped".
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
dashboard.optionsObjectThedashboard layout,dashboard layout component, anddashboard element properties and values. All properties returned in theoptions object can be given updated values using thedashboard:options:set action.
dashboard.tileStatusesObject arrayAn array of objects providing tile statuses. Object properties are:

  • tileId — the ID number of tile.
  • status — If the tile query was successfully run,status returns"complete"; otherwise,status returns"error".
  • errors — Populated when thestatus property is"error". An array of objects providing details of the error, including the error message text, a more detailed description of the error, and the tile's SQL query that produced the error.

dashboard:download

This event is created when a PDF of a dashboard has started downloading.

type:"dashboard:download",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}fileFormat:"pdf"
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
fileFormatStringThe format of the downloaded dashboard (only"pdf" at this time).

dashboard:edit:start

Added 22.20 This event is created when a dashboard isswitched into edit mode.

type:"dashboard:edit:start",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}

dashboard:edit:cancel

Added 22.20 This event is created when a dashboard that is inedit mode is exited from edit mode without saving.

type:"dashboard:edit:cancel",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}

dashboard:save:complete

This event is created when a dashboard isedited and then saved.

type:"dashboard:save:complete",dashboard:{id:23,title:"My Dashboard",canEdit:true,dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",url:"/embed/dashboards/...",options:{layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.optionsObjectThedashboard layout,dashboard layout component, anddashboard element properties and values. All properties returned in theoptions object can be given updated values using thedashboard:options:set event.

dashboard:delete:complete

This event is created when adashboard is deleted.

type:"dashboard:delete:complete",dashboard:{id:23,title:"My Dashboard",canEdit:true,dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",url:"/embed/dashboards/...",options:{layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.optionsObjectThedashboard layout,dashboard layout component, anddashboard element properties and values. All properties returned in theoptions object can be given updated values using thedashboard:options:set event.

dashboard:tile:start

This event is created when a tile starts loading or querying for data.

type:"dashboard:tile:start",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}tile:{id:123,title:"Quarterly Sales",listen:{"Date":"order.date","Total Orders":"order.count"}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
tile.idIntegerThe ID number of the event, not the tile.
tile.titleStringThe tile title, as shown at the top of the tile.
tile.listenObjectThe global dashboard filters this tile is listening for. This object has the format:{"Filter Label": "Filter Field", ...}

dashboard:tile:complete

This event is created when a tile has finished running the query.

type:"dashboard:tile:complete",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}status:"complete",truncated:false,tile:{id:123,title:"Quarterly Sales",listen:{"Date":"order.date","Total Orders":"order.count"}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
statusStringWhether the tile query completed successfully. Possible values are"complete" or"error".
truncatedBooleanWhether the tile query results were truncated as a result of the query returning more rows than the query row limit. The row limit could be either a user-specified row limit or the Looker default row limit of 5,000.
tile.idIntegerThe ID number of the event, not the tile.
tile.titleStringThe tile title, as shown at the top of the tile.
tile.listenObjectThe global dashboard filters this tile is listening for. This object has the format:{"Filter Label": "Filter Field", ...}
tile.errorsObject arrayPopulated when thestatus property is"error". An array of objects providing details of the error, including the error message text, a more detailed description of the error, and the tile's SQL query that produced the error.

dashboard:tile:download

This event is created when a tile's data has started downloading.

type:"dashboard:tile:download",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}tile:{id:123,title:"Quarterly Sales"listen:{"Date":"order.date","Total Orders":"order.count"}}fileFormat:"pdf"
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
tile.idIntegerThe ID number of the event, not the tile.
tile.titleStringThe tile title, as shown at the top of the tile.
tile.listenObjectThe global dashboard filters this tile is listening for. This object has the format:{"Filter Label": "Filter Field", ...}
fileFormatStringThe format of the downloaded tile (only"pdf" at this time).

dashboard:tile:explore

This event is created when a user clicks theExplore From Here option in a dashboard tile.

This event is cancellable, meaning that the embedding application can return{cancel: true} and Looker won't proceed with the triggering event.

type:"dashboard:tile:explore",label:'Explore From Here',url:'/embed/explore/model/view...',dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}tile:{id:123,title:"Quarterly Sales",listen:{"Date":"order.date","Total Orders":"order.count"}}
AttributeFormatDescription
labelStringThe button label.
urlStringThe relative URL (just the path) of the Explore to be viewed.
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
tile.idIntegerThe ID number of the event, not the tile.
tile.titleStringThe tile title, as shown at the top of the tile.
tile.listenObjectThe global dashboard filters this tile is listening for. This object has the format:{"Filter Label": "Filter Field", ...}

dashboard:tile:view

This event is created when a user clicks theView Original Look option in a dashboard tile.

This event is cancellable, meaning that the embedding application can return{cancel: true} and Looker won't proceed with the triggering event.

type:"dashboard:tile:view",label:'View Original Look',url:'/embed/look/...',dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}tile:{id:123,title:"Quarterly Sales",listen:{"Date":"order.date","Total Orders":"order.count"}}
AttributeFormatDescription
labelStringThe button label.
urlStringThe relative URL (just the path) of the Look to be viewed.
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
tile.idIntegerThe ID number of the event, not the tile.
tile.titleStringThe tile title, as shown at the top of the tile.
tile.listenObjectThe global dashboard filters this tile is listening for. This object has the format:{"Filter Label": "Filter Field", ...}

dashboard:tile:merge

Added 25.14 This event is generated when the user clicks theEdit Merged Query button or theEdit Merged Query menu item. The default behavior for this button is to open a new top-level window that allows the merge query to be edited.

This event is cancellable, meaning that the embedding application can return{cancel: true} and Looker won't proceed with the triggering event. This event allows the embedding application to open the merge query edit in an iframe rather than a top-level window. The embedding application shouldn't attempt to load the URL in the iframe that triggered the event. Instead, a new iframe should be created.

javascripttype: dashboard:tile:merge,label: 'Edit Merged Query',dashboard_id: '13',dashboard_modified: false,tile_id: '218',tile_title: 'Untitled',url: '/embed/merge/edit?did=218&dbnx=1',absoluteUrl: 'https://.../embed/merge/edit?did=218&dbnx=1',target: '_blank',
AttributeFormatDescription
labelstringThe button label.
dashboard_idstringThe ID of the dashboard to which the merged query tile belongs.
dashboard_modifiedbooleanWhentrue, this attribute indicates that the dashboard has been modified. Updates to the dashboard can be lost if the merge query edit proceeds. The embedding application can either cancel the merge query edit or warn the user that they may have unsaved changes if they proceed.
tile_idstringThe ID of the merged query tile.
tile_titlestringThe title of the tile.
urlstringThe URL of the merged query. This attribute may be used with theembed SDK to create a new iframe for the merged query.
absoluteUrlstringThe full URL of the merged query. This attribute may be used as thesrc of the iframe element. Additional attributes will be required.
targetstringThe ID to be used for the name of the window to be opened.

dashboard:filters:changed

This event is created when a dashboard's filters have been applied or changed.

type:"dashboard:filters:changed",dashboard:{id:23,title:"My Dashboard",canEdit:true,url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/...",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}options:{layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard.
dashboard.titleStringThe title, as shown at the top of the dashboard.
dashboard.canEditBoolean Added 22.20 Whentrue, the user can edit the dashboard.
dashboard.urlStringThe relative dashboard URL (just the path).
dashboard.absoluteUrlStringThe full dashboard URL.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
dashboard.optionsObjectThedashboard layout,dashboard layout component, anddashboard element properties and values. All properties returned in theoptions object can be given updated values using thedashboard:options:set event.

look:ready

This event is created when a Look begins to load query data, whether the query runs or not.

type:"look:ready",look:{url:"/embed/looks/...",absoluteUrl:"https://instance_name.looker.com/embed/looks/...",}
AttributeFormatDescription
look.urlStringThe relative Look URL (just the path)
look.absoluteUrlStringThe full Look URL

look:run:start

This event is created when a Look begins to load query data and the query begins to run.

type:"look:run:start",look:{url:"/embed/looks/...",absoluteUrl:"https://instance_name.looker.com/embed/looks/...",}
AttributeFormatDescription
look.urlStringThe relative Look URL (just the path)
look.absoluteUrlStringThe full Look URL

look:run:complete

This event is created when a Look has finished running the query.

type:look:run:completelook:{url:"/embed/looks/...",absoluteUrl:"https://instance_name.looker.com/embed/looks/...",}
AttributeFormatDescription
look.urlStringThe relative Look URL (just the path)
look.absoluteUrlStringThe full Look URL

look:edit:start

Added 25.10 This event is fired when a Look is switched into edit mode.

type:"look:edit:start",look:{id:46,title:"My Look",url:"/embed/looks/46",absoluteUrl:"https://instance_name.looker.com/embed/looks/46",}
AttributeFormatDescription
look.idStringThe ID of the Look.
look.titleStringThe title of the Look.
urlStringThe relative Look URL (just the path).
absoluteUrlStringThe full Look URL.

look:edit:cancel

Added 25.10 This event is fired when a Look that is in edit mode is exited from edit mode without saving.

type:"look:edit:cancel",look:{id:46,title:"My Look",url:"/embed/looks/46",absoluteUrl:"https://instance_name.looker.com/embed/looks/46",}
AttributeFormatDescription
look.idStringThe ID of the Look.
look.titleStringThe title of the Look.
urlStringThe relative Look URL (just the path).
absoluteUrlStringThe full Look URL.

look:save:complete

This event is created when a Look is edited and saved. This event is created when a user performs one of the following tasks:

This event is not created if the Look is saved with theSave >To existing dashboard orEdit Settings menu option.

type:look:save:completelook:{url:"/embed/looks/...",absoluteUrl:"https://instance_name.looker.com/embed/looks/...",folderid:123}
AttributeFormatDescription
look.urlStringThe relative Look URL (just the path)
look.absoluteUrlStringThe full Look URL
look.folderidIntegerThe folder ID where the Look is stored

look:delete:complete

This event is created when a Look ismoved to theTrash folder.

type:look:delete:completelook:{url:"/embed/looks/...",absoluteUrl:"https://instance_name.looker.com/embed/looks/...",}
AttributeFormatDescription
look.urlStringThe relative Look URL (just the path)
look.absoluteUrlStringThe full Look URL

drillmenu:click

This event is created when a user clicks on a drill menu in a dashboard created with thelink LookML parameter. For example, the following LookML creates a drill menu where a user can view data filtered by thestate dimension:

dimension:state{type:stringsql:${TABLE}.state;;link:{label:"Filter by {{ state | encode_uri }}"url:"filter::q={{ state | encode_uri }}"icon_url:"https://google.com/favicon.ico"}}

When thestate filter is set toIllinois, thedrillmenu:click event returns the following to the host of the iframe:

type:"drillmenu:click",label:"Filter by Illinois",link_type:"url",modal:false,target:'_self',url:"#filter::state=Illinois"context:' '

This event is cancellable, meaning that the embedding application can return{cancel: true} and Looker won't proceed with the triggering event.

AttributeFormatDescription
labelStringThe link label as shown on the drill menu
link_typeStringThe type of object at the link destination
modalBooleanWhether the drill dialog will be used instead of browser navigation
targetStringIs_self if the link destination will replace the current iframe,_blank if the link destination will open a new window
urlStringThe URL of the link destination
contextStringInternal attribute used by some types of visualizations

Sandboxing the iframe will prevent drill menu clicks from opening in a new window. Use these sandboxing values inside the iframe tag:

sandbox="allow-same-origin allow-scripts"

drillmodal:download

This event is created when a user opens a drill dialog from a dashboard tile and clicks theDownload option.

{type:"drillmodal:download",dashboard:{id:23,title:"My Dashboard",url:"/embed/dashboards/…",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/…",dashboard_filters:{"Date":"Last 28 days","Total Orders":"Greater than 100"}}drillExploreUrl:"/embed...",fileFormat:"pdf"}
AttributeFormatDescription
dashboard.idNumber/StringThe ID of the dashboard to which the tile belongs.
dashboard.titleStringThe dashboard title, as shown at the top of the dashboard to which the tile belongs.
dashboard.urlStringThe relative dashboard URL (just the path) to which the tile belongs.
dashboard.absoluteUrlStringThe full dashboard URL to which the tile belongs.
dashboard.dashboard_filtersObjectThe filters applied to the dashboard to which the tile belongs. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}
drillExploreUrlStringThe relative Explore URL (just the path) to be downloaded.
fileFormatStringThe file format of the data download.

drillmodal:explore

This event is created when a user clicks theExplore From Here option in a drill dialog.

This event is cancellable, meaning that the embedding application can return{cancel: true} and Looker won't proceed with the triggering event.

type:"drillmodal:explore",label:"Explore From Here",url:"/embed/explore/model/view..."
AttributeFormatDescription
labelStringThe button label as shown on the drill menu
urlStringThe relative Explore URL (just the path) to be viewed

explore:ready

This event is created when an Explore begins to load query data, whether the query runs or not.

type:"explore:ready",explore:{url:"/embed/explore/...",absoluteUrl:"https://instance_name.looker.com/embed/explore/...",}
AttributeFormatDescription
explore.urlStringThe relative Explore URL (just the path)
explore.absoluteUrlStringThe full Explore URL

explore:run:start

This event is created when an Explore begins to load query data and the query begins to run.

type:"explore:run:start",explore:{url:"/embed/explore/...",absoluteUrl:"https://instance_name.looker.com/embed/explore/...",}
AttributeFormatDescription
explore.urlStringThe relative Explore URL (just the path)
explore.absoluteUrlStringThe full Explore URL

explore:run:complete

This event is created when an Explore has finished running the query.

type:"explore:run:complete",explore:{url:"/embed/explore/...",absoluteUrl:"https://instance_name.looker.com/embed/explore/...",}}
AttributeFormatDescription
explore.urlStringThe relative Explore URL (just the path)
explore.absoluteUrlStringThe full Explore URL

explore:state:changed

This event is created when an Explore page URL changes as a result of the user's actions.

type:"explore:state:changed",explore:{url:"/embed/explore/...",absoluteUrl:"https://instance_name.looker.com/embed/explore/..."}
AttributeFormatDescription
explore.urlStringThe relative Explore URL (just the path)
explore.absoluteUrlStringThe full Explore URL

page:changed

This event is created when a user navigates to a new page within the iframe.

type:"page:changed",page:{type:"dashboard",url:"/embed/dashboards/...",absoluteUrl:"https://instance_name.looker.com/embed/dashboards/..."}
AttributeFormatDescription
page.typeStringThe type of page that has just been navigated to, such as"dashboard","look", or"explore"
page.urlStringThe relative URL (just the path) of the page that has just been navigated to
page.absoluteUrlStringThe full URL of the page that has just been navigated to

page:properties:changed

This event is created when the height of a dashboard iframe changes. It is not available for Looks or Explores because those items automatically adjust their height to the size of the iframe.

type:"page:properties:changed",height:1000
AttributeFormatDescription
heightIntegerThe height of the dashboard iframe in pixels

session:tokens

This event indicates that the Looker client requires tokens to continue. This event is created immediately on creation of the iframe and periodically afterwards for the duration of the session.

{"type":"session:tokens","api_token":"eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlbGYtc2lnbmVkLmxvb2tlci5jb206OTk5OSIsImV4cCI6MTY3MDYyNjMzMCwic3ViIjoiYVdrNWFGUzM4RnRwNzFFWXhuS3ZaMXdKRmV3ZjB2VzYtTV9zLWtCcHE1dXIiLCJ0b2tlbl90eXBlIjoiYXBpX3Rva2VuIiwicmFuZG9taXplciI6IkxjYnpOeDNTVjNOb3o3UVlqTVJjNmhlMkdodjh1a2UwWUhiZWNRMHVCYm1KIn0.CBv1__QGc_H7bKNe31SHMMQCsc5ya1xOiEv1UDWAyxM","api_token_ttl":463,"navigation_token":"eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlbGYtc2lnbmVkLmxvb2tlci5jb206OTk5OSIsImV4cCI6MTY3MDYyNjMzMCwic3ViIjoiYVdrNWFGUzM4RnRwNzFFWXhuS3ZaMXdKRmV3ZjB2VzYtTV9zLWtCcHE1dXIiLCJ0b2tlbl90eXBlIjoibmF2aWdhdGlvbl90b2tlbiIsInJhbmRvbWl6ZXIiOiJHVVNlc00tdTRPRDlNdktodFJDU2pEcVFhUkJNeTh5dm42Q1FDUXhuLTNxMiJ9.sWo7LUEI5LeragVmeDamUR7u2myXpFJ0aqK_IIALUqI","navigation_token_ttl":463,"session_reference_token_ttl":2924}
AttributeFormatDescription
authentication_tokenStringAuthentication token. Included when the iframe is created. Not included with a response to a request to generate tokens or if the session has expired.
authentication_token_ttlNumberAuthentication token time to live in seconds. Included when the iframe is created. Not included with a response to a request to generate tokens or if the session has expired.
api_tokenStringAPI token. Not included if the session has expired.
api_token_ttlNumberAPI token time to live in seconds. Not included if the session has expired.
navigation_tokenStringNavigation token. Not included if the session has expired.
navigation_token_ttlNumberNavigation token time to live in seconds. Not included if the session has expired.
session_references_token_ttlNumberSession time to live in seconds. The value will be 0 when the session has expired. To recover, the embedding application must acquire a new session.

session:expired

Added 25.10 This event is fired when the embed user's session expires.

type:"session:expired",

This event does not have a payload.

session:status

The event is generated when the embedded Looker application handles requests for session tokens.

{"type":"session:status","session_ttl":0,"expired":true,"interrupted":false}
AttributeFormatDescription
session_ttlNumberSession time to live in seconds.
expiredBooleanWhentrue, indicates the session has expired.
interruptedBooleanWhentrue, indicates that a request for session tokens was not responded to. This could indicate that a server is temporarily unavailable.
recoverableBooleanOnly populated when interrupted istrue. Indicates whether the session can be recovered or not. A value offalse likely means there is a problem with the embedding application.

env:client:dialog

The event is generated when a dialog has been opened that may partially be out of view, such as a drill dialog. This event enables the hosting application to scroll the dialog into view with theenv:host:scroll action.

{type:"env:client:dialog",dialogType:'drilling',placement:'cover',open:true}
AttributeFormatDescription
typeStringenv:client:dialog indicates that a dialog has been opened or closed. Only the drill dialog is supported, but other dialogs may be added in the future. It is possible that the top of the drill dialog is not in view since the dialog covers the iframe viewport. This event allows the host application to scroll the top of the dialog into view.
dialogTypeStringThe type of dialog. Only the opening or closing of the "drilling" dialog type triggers this event.
placementStringThe placement of the dialog. dialogs of type "drilling" always use aplacement of "cover".
openBooleanIndicates whether the dialog is opened or scrolled.

Making changes to the iframe

After you'veprepped your iframe for data retrieval, you can make changes to the iframe with the following steps:

  1. Write your request in JSON.
  2. Post the request to the iframe'scontentWindow.

Writing your request in JSON

You can make several changes to the iframe, which you'll submit in JSON form. The available options are described in theAction reference section on this page. Don't forget to useJSON.stringify to turn your action into JSON, like this:

varmy_request=JSON.stringify({type:"dashboard:run"});

Posting the request to the iframe'scontentWindow property

Finally, post your message to the iframe'scontentWindow, like this:

varmy_iframe=document.getElementById("my_iframe_id");my_iframe.contentWindow.postMessage(my_request,'https://instance_name.looker.com');

Action summary table

The following table summarizes actions. Select an action to see the details about that action.

ActionAction Description
page:loadLoads a new page in the iframe, replacing the existing page.
dashboard:loadLoads a new dashboard in the iframe, replacing an existing dashboard.
dashboard:runRuns the dashboard in the iframe.
dashboard:edit Added 22.20 Switches the dashboard intoedit mode.
dashboard:filters:updateUpdates an existing dashboard filter in the iframe.
dashboard:options:setWrites new values to dashboard layout and dashboard element properties.
dashboard:schedule_modal:openOpens the Scheduler, which lets users deliver Looker content to various destinations.
dashboard:stopStops a dashboard that is running or reloading data.
look:runRuns the Look in the iframe.
look:filters:updateUpdates an existing Look filter in the iframe.
explore:runRuns the Explore in the iframe.
explore:filters:updateUpdates or removes an existing Explore filter in the iframe.
session:tokens:requestSends tokens in response to asession:tokens:request event.
env:host:scrollSends information about the current scroll position of the host iframe to the embedded Looker application.

Action reference

These are the available actions you can post to the embedded iframe:

page:load

Use this action to navigate to new content within the iframe, replacing the existing content. This action is similar to thedashboard:load action but is more flexible, as additional parameters can be specified in the URL.

There are differences in behavior that should be considered before usingpage:load.dashboard:load will prevent the navigation from happening if the current dashboard is being edited.page:load doesn't prevent the navigation from happening. The host application may determine if a dashboard or Look is being edited by trackingdashboard:edit:start,look:edit:start, and their corresponding edit end events. For this reason, we recommend using the embed SDK. The embed SDK tracks whether a dashboard or Look is being edited, and so the connection can be queried to see if content is being edited prior to navigation.

{type:'page:load',url:'/embed/dashboard/32?state=california,pushHistory:false}
AttributeFormatDescription
typeStringUsing the typepage:load indicates that you want to load new content into the iframe.
urlStringThe URL of the content to load.
pushHistoryBooleanIftrue, the content loaded creates a new browser history entry, and the user can use the browser's back button to return to the previous content. Iffalse, the current content is replaced and browser navigation can't be used to return to it.

dashboard:load

Use this action to load a new dashboard in the iframe, replacing an existing dashboard. The new dashboard will begin executing queries as if a new dashboard page had been opened.

{type:"dashboard:load",id:"101",pushHistory:false}
AttributeFormatDescription
typeStringUsing the typedashboard:load indicates that you want to load a new dashboard into the iframe.
idStringThe ID of the dashboard to load.
pushHistoryBooleanIftrue, the dashboard that is loaded creates a new browser history entry, and the user can use the browser's back button to return to the previous dashboard. Iffalse, the current dashboard is replaced and browser navigation can't be used to return to it.

dashboard:run

Use this action to run the dashboard in the iframe. This is the same action as hitting theRun orReload Data button on the dashboard.

{type:"dashboard:run"}
AttributeFormatDescription
typeStringUsing the typedashboard:run indicates that you want to run the dashboard.

dashboard:edit

Added 22.20 Use this action to switch an existing dashboard in the iframe toedit mode. This is the same action as selectingEdit dashboard from the dashboard menu.

{type:"dashboard:edit"}
AttributeFormatDescription
typeStringUsing the typedashboard:edit indicates that you want to switch the dashboard intoedit mode.

dashboard:filters:update

Use this action to update an existing dashboard filter in the iframe. You can't add a new filter to the dashboard by using this method.

{type:"dashboard:filters:update",filters:{"Sale date":"Last 28 days","Sale amount":"Greater than 100"}}
AttributeFormatDescription
typeStringUsing the typedashboard:filters:update indicates that you want to update the filters used by the dashboard.
filtersObjectThe new filters you want to apply to the dashboard. This object has the format:{"Filter name 1": "value 1", "Filter name 2": "value 2", ...}

dashboard:options:set

This action is available after thedashboard:run:complete event occurs.

The embedder creates the message and sends it to the iframe, but the dashboard does not respond until afterdashboard:run:complete occurs. Thedashboard:options:set action writes new values to dashboard layout and dashboard element properties. Only properties that have been returned in theoptions attribute of thedashboard:run:complete event can be updated usingdashboard:options:set. Any properties set that were not previously returned by theoptions attribute of thedashboard:run:complete event are ignored.

{type:"dashboard:options:set",layouts:[{id:1,dashboard_id:1,type:"newspaper",active:true,column_width:null,width:null,deleted:false,dashboard_layout_components:[{id:1,dashboard_layout_id:1,dashboard_element_id:1,row:0,column:0,width:8,height:4,deleted:false},{id:2,dashboard_layout_id:1,dashboard_element_id:2,row:0,column:8,width:8,height:4,deleted:false}]}],elements:{1:{title:"Total Orders",title_hidden:false,vis_config:{type:"single_value",font_size:"medium",title:"Total Orders"}},2:{title:"Average Order Profit",title_hidden:false,vis_config:{type:"single_value",title:"Average Order Profit"}}}}
AttributeFormatDescription
typeStringUsing the typedashboard:options:set indicates that you want to write new values to dashboard layout and dashboard element properties.
layoutsObjectThedashboard layout properties returned by theoptions attribute in thedashboard:run:complete event. These will be in a format similar to:

  • id: "string",
  • dashboard_id: "string",
  • type: "newspaper",
  • active: boolean,
  • column_width: number,
  • width: number
layouts.dashboard_layout_componentsObjectOne or moredashboard layout component objects returned by theoptions attribute in thedashboard:run:complete event. These will be in a format similar to:

  • id: "string",
  • dashboard_layout_id: "string",
  • dashboard_element_id: "string",
  • row: number,
  • column: number,
  • width: number,
  • height: number,
  • deleted: boolean,
elementsObjectOne or moredashboard element objects returned by theoptions attribute in thedashboard:run:complete event. These will be in a format similar to:

id: {

  title: "string",

  title_hidden: boolean,

  vis_config: {

    type: "string", title: "string"

  }

}

dashboard:schedule_modal:open

Use this action to open the Scheduler, which lets usersdeliver Looker content to various destinations.

{type:"dashboard:schedule_modal:open"}
AttributeFormatDescription
typeStringUsing the typedashboard:schedule_modal:open indicates that you want to open theSchedule dialog.

dashboard:stop

Use this action to stop a dashboard that is running or reloading data. This is the same action as clicking theCancel button on the dashboard. A dashboard that is stopped usingdashboard:stop sends adashboard:run:complete event withstatus: set to"stopped".

{type:"dashboard:stop"}
AttributeFormatDescription
typeStringUsing the typedashboard:stop indicates that you want to stop the running dashboard.

look:run

Use this action to run the query on which the Look is based in the iframe. This action is similar to hitting theRun button on the Look, with the exception thatlook:run always queries the database directly and does not retrieve data from theLooker cache.

{type:"look:run"}
AttributeFormatDescription
typeStringUsing the typelook:run indicates that you want to run the Look.

look:filters:update

Use this action to update an existing Look filter in the iframe. You can't add a new filter to the Look by using this method.

{type:"look:filters:update",filters:{"orders.created_at":"90 days","products.department":"sweaters"}}
AttributeFormatDescription
typeStringUsing the typelook:filters:update indicates that you want to update the filters used by the Look.
filtersObjectThe new filters you want to apply to the Look. This object has the format:{"view_name.field_name_1": "value 1", "view_name.field_name_1": "value 2", ...}

explore:run

Use this action to run the Explore in the iframe. This action is similar to hitting theRun button on the Explore, with the exception thatexplore:run always queries the database directly and does not retrieve data from theLooker cache.

{type:"explore:run"}
AttributeFormatDescription
typeStringUsing the typeexplore:run indicates that you want to run the Explore.

explore:filters:update

Use this action to update or remove an existing Explore filter in the iframe. Including a new filter that references a valid field will add the new filter to the Explore.

{type:"explore:filters:update",filters:{"orders.created_at":"90 days","orders.status":"complete"}deleteFilters:["products.department"]}
AttributeFormatDescription
typeStringUsing the typeexplore:filters:update indicates that you want to update the filters used by the Explore.
filtersObjectThe new filters that you want to apply to the Explore. Iffilters includes a filter that doesn't exist in the Explore but that does reference a valid field, that filter will be added to the Explore. This object has the format{"view_name.field_name_1": "value 1", "view_name.field_name_1": "value 2", ...}.
deleteFiltersArrayThe existing filters you want remove from the Explore. The array has the format:["view_name.field_name_1", "view_name.field_name_2", ...]

session:tokens:request

Use this action to send tokens in response to asession:tokens:request request.

{type:"session:tokens:request",}
AttributeFormatDescription
typeStringUsing the typesession:tokens:request indicates that you want to send tokens in response to asession:tokens:request event.

env:host:scroll

Use this action to send information about the current scroll position of the host iframe to the embedded Looker application.

{type:"env:host:scroll",offsetTop:10,offsetLeft:10,scrollX:5,scrollY:5}
AttributeFormatDescription
typeStringUsing the typeenv:host:scroll indicates that you want to send information about the current scroll position of the host iframe to the embedded Looker application.
offsetTopNumberThe offset top of the iframe.
offsetLeftNumberThe offset left of the iframe.
scrollXNumberThe scrollX position of the application host.
scrollYNumberThe scrollY position of the application host.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.