> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# setCustomIntegrations()

> Sets or updates the custom integrations embedded in Daily Prebuilt.

`setCustomIntegrations(customIntegrations)`

<Badge color="green">{"✓"} Prebuilt</Badge> <Badge color="red">{"✗"} Custom</Badge>

Sets the custom integrations displayed in the Daily Prebuilt sidebar. Can be called at any time to update integration configuration.

## Parameters

<ParamField body="customIntegrations" type="DailyCustomIntegrations" required>
  An object mapping integration IDs (arbitrary strings) to `DailyCustomIntegration` configuration objects.

  <Expandable title="DailyCustomIntegration fields" defaultOpen="true">
    <ResponseField name="allow" type="string">
      Usage: `allow: HTMLIFrameElement['allow']`.\
      [Feature policy](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-allow) for the iframe.
    </ResponseField>

    <ResponseField name="controlledBy" type="'*' | 'owners' | string[]" default="'*'">
      Who can start and stop this integration. `'*'` (default) allows all participants; `'owners'` restricts to meeting owners; a `string[]` of `session_id`s restricts to specific participants.
    </ResponseField>

    <ResponseField name="csp" type="string">
      [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) for the iframe. Check browser support before using -- [here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#csp) & [here](https://caniuse.com/mdn-api_htmliframeelement_csp)
    </ResponseField>

    <ResponseField name="iconURL" type="string">
      A publicly available URL to an icon image shown alongside the integration in the Prebuilt UI.
    </ResponseField>

    <ResponseField name="label" type="string" required>
      Display name shown in the Prebuilt UI for this integration.
    </ResponseField>

    <ResponseField name="loading" type="'lazy' | 'eager'" default="lazy">
      `'lazy'` (default) or `'eager'` — controls when the iframe is loaded.
    </ResponseField>

    <ResponseField name="location" type="'main' | 'sidebar'" required>
      Daily supports two different types of custom integrations:

      1. Main call area integrations
      2. Sidebar integrations
    </ResponseField>

    <ResponseField name="name" type="string">
      Usage: `name: HTMLIFrameElement['name'];`

      A unique [name](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#name) for the iframe.
    </ResponseField>

    <ResponseField name="referrerPolicy" type="string">
      Usage: `referrerPolicy: HTMLIFrameElement['referrerPolicy'];`

      Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/iframe#referrerpolicy) to send when fetching the frame’s resource.
    </ResponseField>

    <ResponseField name="sandbox" type="string">
      Usage: `sandbox: string`

      A unique policy for the iframe. Applies extra restrictions to the content in the frame.

      For more info see [here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox).
    </ResponseField>

    <ResponseField name="shared" type="'owners' | string[] | boolean" default="false">
      **When configured**, it shares the integration’s state with other participants in the call:

      * `true` will share with all other participants
      * `false` won’t share
      * `'owners'` will share with owners only
      * `string[]` will share with participants with given list of session ids

      When the integration is started, it will also be started for other participants with whom it is shared. When it is stopped, it will stop for all participants with whom it is shared.
    </ResponseField>

    <ResponseField name="src" type="string">
      Usage: `src: HTMLIFrameElement['src'];`

      The iframe’s source URL.

      For more info see [here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#src).
    </ResponseField>

    <ResponseField name="srcdoc" type="string">
      Usage: `srcdoc: HTMLIFrameElement['srcdoc'];`

      Inline HTML to render in the iframe instead of a URL.

      For more info see [here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#srcdoc)

      To see if your browser supports this, see [here](https://caniuse.com/iframe-srcdoc).
    </ResponseField>
  </Expandable>
</ParamField>

## Return value

Returns `this` for chaining.

## Examples

### Setting an integration

```javascript theme={null}
call.setCustomIntegrations({
  miroEmbed: {
    controlledBy: '*',
    iconURL: 'https://files.readme.io/17d4a23-miro-logo-color-square.png',
    label: 'Miro',
    location: 'main',
    name: 'miro',
    shared: false,
    allow: 'fullscreen; clipboard-read; clipboard-write',
    src: 'https://miro.com/app',
  },
});
```

### Restricting control to owners

Setting `controlledBy: 'owners'` means only participants who joined with an owner token can start or stop the integration. Setting `shared: true` propagates the integration's active state to all other participants who have it configured.

```javascript theme={null}
call.setCustomIntegrations({
  miroEmbed: {
    controlledBy: 'owners',
    shared: true,
    // ... other fields
  },
});
```

## See also

<CardGroup>
  <Card title="Types" icon="t" iconType="solid">
    * [DailyCallOptions: customIntegrations](/reference/daily-js/types/daily-call-options#param-custom-integrations)
  </Card>

  <Card title="Methods" icon="code" iconType="solid">
    * [customIntegrations()](/reference/daily-js/instance-methods/custom-integrations)
    * [startCustomIntegrations()](/reference/daily-js/instance-methods/start-custom-integrations)
    * [stopCustomIntegrations()](/reference/daily-js/instance-methods/stop-custom-integrations)
    * [setSidebarView()](/reference/daily-js/instance-methods/set-sidebar-view)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Custom integrations](/docs/prebuilt/customizing-daily-prebuilt#custom-integrations)
  </Card>
</CardGroup>
