An add-on uses a *manifest* file
to configure certain details about the app and its operation.

This documentation covers the details of configuring a manifest for a
Google Workspace Add-on.

## Manifest structure for Google Workspace add-ons

Google Workspace add-ons use the manifest file to define several aspects of appearance
and behavior.

Manifest properties for Google Workspace add-ons are organized under the `addOns`
section.

- For information about Google Apps Script manifest files, refer to
  [Manifest structure](https://developers.google.com/apps-script/manifest).

- For information about manifest files for add-ons built with
  HTTP endpoints, refer to
  [`projects.deployments`](https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments).

### Manifests for Google Chat

If your Google Workspace add-on extends Google Chat, [configure the
Google Chat API](https://developers.google.com/workspace/chat/configure-chat-api) in the Google Cloud console.

Common manifest configuration settings (including `addons.common`) are ignored
in Chat. Use the Chat API to configure the following
Chat settings:

- The name, logo, and description of the Chat app for the Chat UI.
- [Chat app
  triggers](https://developers.google.com/workspace/chat/receive-respond-interactions).

If you built the add-on in
Apps Script, add or update the following objects in your
manifest:

- [`addons.chat`](https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.chat) (Required)
- [`oauthScopes`](https://developers.google.com/apps-script/manifest#Manifest.FIELDS.oauthScopes) (Required if your Google Chat app uses OAuth)

To configure Chat settings for an
add-on, see
[Use the Google Chat API](https://developers.google.com/workspace/chat/configure-chat-api).

### Sample Google Workspace add-on manifest configuration

The following samples show the portion of a manifest that defines a
Google Workspace add-on, including these aspects:

- `addOns.common` defines the name, logo, colors, and other general
  settings for the add-on.

- The manifest defines a common homepage, but also defines Google Calendar,
  Google Drive, Google Docs, Google Sheets, and
  Google Slides-specific homepages. Gmail uses the default
  homepage.

- The sample manifest settings enable the following:

  - Calendar `eventOpen` and `eventUpdated` triggers.

  - (Apps Script only) Two Calendar
    [conference solutions](https://developers.google.com/workspace/add-ons/calendar/conferencing/overview).

  - Two universal actions.

  - A Drive `onItemsSelectedTrigger`.

  - A Gmail compose action and contextual trigger.

  - A Docs `linkPreviewTriggers` object. See
    [Preview links with smart chips](https://developers.google.com/workspace/add-ons/editors/gsao/preview-links).

  - A Docs `createActionTriggers` object. See
    [Create third-party resources from the @ menu](https://developers.google.com/workspace/add-ons/guides/create-insert-resource-smart-chip).

  - File-specific interfaces for Docs, Sheets,
    and Slides.

  - A Google Meet `sidePanelUri` and `addOnOrigins` option.

  - (HTTP only) Two [`HttpOptions`](https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#httpoptions)
    for sending an authorization header and supporting granular consent.

- The `oauthScopes` field sets project's authorization scopes.

- (Apps Script only) The `urlFetchWhitelist` ensures fetched
  endpoints match specified HTTPS URL prefixes. See [Allowlist URLs](https://developers.google.com/workspace/add-ons/concepts/workspace-manifests#allowlist).

The links in the samples redirect to field descriptions in the manifest
reference for [Apps Script](https://developers.google.com/apps-script/manifest/addons) and
[HTTP](https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments)
Google Workspace add-ons.

Manifests include other components. Fields under `addOns` relate directly to
Google Workspace add-ons. This example shows only a portion of a full manifest file and
isn't functional on its own.

### Apps Script

    {
      "https://developers.google.com/apps-script/manifest/addons#addons": {
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.calendar": {
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.createSettingsUrlFunction": "getConferenceSettingsPageUrl",
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.conferenceSolution": [{
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.id": "my-video-conf",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.logoUrl": "https://lh3.googleusercontent.com/...",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.name": "My Video Conference",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.name": "onCreateMyVideoConference"
          }, {
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.id": "my-streamed-conf",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.logoUrl": "https://lh3.googleusercontent.com/...",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.name": "My Streamed Conference",
            "https://developers.google.com/apps-script/manifest/calendar-addons#ConferenceSolution.FIELDS.name": "onCreateMyStreamedConference"
          }],
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.currentEventAccess": "READ_WRITE",
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.eventOpenTrigger": {
            "https://developers.google.com/apps-script/manifest/calendar-addons#EventOpenTrigger.FIELDS.runFunction": "onCalendarEventOpen"
          },
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.eventUpdateTrigger": {
            "https://developers.google.com/apps-script/manifest/calendar-addons#EventUpdateTrigger.FIELDS.runFunction": "onCalendarEventUpdate"
          },
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.eventAttachmentTrigger": {
            "https://developers.google.com/apps-script/manifest/calendar-addons#EventAttachmentTrigger.FIELDS.label": "My Event Attachment",
            "https://developers.google.com/apps-script/manifest/calendar-addons#EventAttachmentTrigger.FIELDS.runFunction": "onCalendarEventAddAttachment"
          },
          "https://developers.google.com/apps-script/manifest/calendar-addons#Calendar.FIELDS.homepageTrigger": {
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.runFunction": "onCalendarHomePageOpen",
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.enabled": true
          }
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.common": {
          "https://developers.google.com/apps-script/manifest/homepage-trigger#homepagetrigger": {
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.runFunction": "onDefaultHomePageOpen",
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.enabled": true
          },
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.layoutProperties": {
            "https://developers.google.com/apps-script/manifest/addons#LayoutProperties.FIELDS.primaryColor": "#ff392b",
            "https://developers.google.com/apps-script/manifest/addons#LayoutProperties.FIELDS.secondaryColor": "#d68617"
          },
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.name": "Demo Google Workspace add-on",
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.openLinkUrlPrefixes": [
            "https://mail.google.com/",
            "https://script.google.com/a/google.com/d/",
            "https://drive.google.com/a/google.com/file/d/",
            "https://www.example.com/"
          ],
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.universalActions": [{
            "https://developers.google.com/apps-script/manifest/addons#UniversalAction.FIELDS.label": "Open settings",
            "https://developers.google.com/apps-script/manifest/addons#UniversalAction.FIELDS.runFunction": "getSettingsCard"
          }, {
            "https://developers.google.com/apps-script/manifest/addons#UniversalAction.FIELDS.label": "Open Help URL",
            "https://developers.google.com/apps-script/manifest/addons#UniversalAction.FIELDS.openLink": "https://www.example.com/help"
          }],
          "https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.useLocaleFromApp": true
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.drive": {
          "https://developers.google.com/apps-script/manifest/drive-addons#Drive.FIELDS.homepageTrigger": {
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.runFunction": "onDriveHomePageOpen",
            "https://developers.google.com/apps-script/manifest/homepage-trigger#HomepageTrigger.FIELDS.enabled": true
          },
          "https://developers.google.com/apps-script/manifest/drive-addons#Drive.FIELDS.onItemsSelectedTrigger": {
            "https://developers.google.com/apps-script/manifest/drive-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onDriveItemsSelected"
          }
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.gmail": {
          "https://developers.google.com/apps-script/manifest/gmail#Gmail.FIELDS.composeTrigger": {
            "https://developers.google.com/apps-script/manifest/gmail#ComposeTrigger.FIELDS.selectActions": [
              {
                "https://developers.google.com/apps-script/manifest/gmail#SelectAction.FIELDS.text": "Add images to email",
                "https://developers.google.com/apps-script/manifest/gmail#SelectAction.FIELDS.runFunction": "getInsertImageComposeCards"
              }
            ],
            "https://developers.google.com/apps-script/manifest/gmail#ComposeTrigger.FIELDS.draftAccess": "METADATA"
          },
          "https://developers.google.com/apps-script/manifest/gmail#Gmail.FIELDS.contextualTriggers": [
            {
              "https://developers.google.com/apps-script/manifest/gmail#ContextualTrigger.FIELDS.unconditional": {},
              "https://developers.google.com/apps-script/manifest/gmail#ContextualTrigger.FIELDS.onTriggerFunction": "onGmailMessageOpen"
            }
          ]
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.docs": {
          "https://developers.google.com/apps-script/manifest/editor-addons#Editors.FIELDS.homepageTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onEditorsHomepage"
          },
          "https://developers.google.com/apps-script/manifest/editor-addons#Editor.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onFileScopeGrantedEditors"
          },
          "https://developers.google.com/apps-script/manifest/editor-addons#Editor.FIELDS.linkPreviewTriggers": [
            {
            "https://developers.google.com/apps-script/manifest/editor-addons#LinkPreviewTriggers.FIELDS.runFunction": "onLinkPreview",
            "https://developers.google.com/apps-script/manifest/editor-addons#LinkPreviewTriggers.FIELDS.patterns": [
                {
                  "hostPattern": "example.com",
                  "pathPrefix": "example-path"
                }
            ],
            "https://developers.google.com/apps-script/manifest/editor-addons#LinkPreviewTriggers.FIELDS.labelText": "Link preview",
            "https://developers.google.com/apps-script/manifest/editor-addons#LinkPreviewTriggers.FIELDS.localizedLabelText": {
              "es": "Link preview localized in Spanish"
            },
            "https://developers.google.com/apps-script/manifest/editor-addons#LinkPreviewTriggers.FIELDS.logoUrl": "https://www.example.com/images/smart-chip-icon.png"
            }
          ],
          "https://developers.google.com/apps-script/manifest/editor-addons#Editor.FIELDS.createActionTriggers": [
            {
              "https://developers.google.com/apps-script/manifest/editor-addons#createActionTriggers.FIELDS.id": "exampleId",
              "https://developers.google.com/apps-script/manifest/editor-addons#createActionTriggers.FIELDS.labelText": "Example label text",
              "https://developers.google.com/apps-script/manifest/editor-addons#createActionTriggers.FIELDS.localizedLabelText": {
                "es": "Label text localized in Spanish"
              },
              "https://developers.google.com/apps-script/manifest/editor-addons#createActionTriggers.FIELDS.runFunction": "exampleFunction",
              "https://developers.google.com/apps-script/manifest/editor-addons#createActionTriggers.FIELDS.logoUrl": "https://www.example.com/images/case.png"
            }
          ]
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.sheets": {
          "https://developers.google.com/apps-script/manifest/editor-addons#Editors.FIELDS.homepageTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onEditorsHomepage"
          },
          "https://developers.google.com/apps-script/manifest/editor-addons#Editor.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onFileScopeGrantedEditors"
          }
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.slides": {
          "https://developers.google.com/apps-script/manifest/editor-addons#Editors.FIELDS.homepageTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onEditorsHomepage"
          },
          "https://developers.google.com/apps-script/manifest/editor-addons#Editor.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/apps-script/manifest/editor-addons#OnItemsSelectedTrigger.FIELDS.runFunction": "onFileScopeGrantedEditors"
          }
        },
        "https://developers.google.com/apps-script/manifest/addons#AddOns.FIELDS.meet": {
          "https://developers.google.com/apps-script/manifest/meet-addons#Meet.FIELDS.homepageTrigger",
          "https://developers.google.com/apps-script/manifest/meet-addons#Meet.FIELDS.web": [
            {
              "https://developers.google.com/apps-script/manifest/meet-addons#Web.FIELDS.sidePanelUrl": "https://myownpersonaldomain.com/sidePanelUrl",
              "https://developers.google.com/apps-script/manifest/meet-addons#Web.FIELDS.supportsScreenSharing": true,
              "https://developers.google.com/apps-script/manifest/meet-addons#Web.FIELDS.addOnOrigins": [
                "https://www.myownpersonaldomain.com",
                "https://www.myownpersonaldomain.com:443"
              ],
              "https://developers.google.com/apps-script/manifest/meet-addons#Web.FIELDS.logoUrl": "https://myownpersonaldomain.com/logoUrl",
              "https://developers.google.com/apps-script/manifest/meet-addons#Web.FIELDS.darkModeLogoUrl": "https://myownpersonaldomain.com/darkModeLogoUrl"
            }
        },
      },
      "https://developers.google.com/apps-script/manifest#Manifest.FIELDS.oauthScopes": [
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.addons.current.event.read",
        "https://www.googleapis.com/auth/calendar.addons.current.event.write",
        "https://www.googleapis.com/auth/drive.addons.metadata.readonly",
        "https://www.googleapis.com/auth/gmail.addons.current.action.compose",
        "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
        "https://www.googleapis.com/auth/userinfo.email",
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/script.locale",
        "https://www.googleapis.com/auth/script.scriptapp",
        "https://www.googleapis.com/auth/drive.file",
        "https://www.googleapis.com/auth/documents.currentonly",
        "https://www.googleapis.com/auth/spreadsheets.currentonly",
        "https://www.googleapis.com/auth/presentations.currentonly",
        "https://www.googleapis.com/auth/workspace.linkpreview"
      ],
      "https://developers.google.com/apps-script/manifest#Manifest.FIELDS.urlFetchWhitelist": [
        "https://www.example.com/myendpoint/"
      ]
    }

### HTTP

    {
      "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Deployment.FIELDS.addOns": {
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.calendar": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarAddOnManifest.FIELDS.currentEventAccess": "READ_WRITE",
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarAddOnManifest.FIELDS.eventOpenTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventOpen"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarAddOnManifest.FIELDS.eventUpdateTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventUpdate"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarAddOnManifest.FIELDS.eventAttachmentTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#MenuItemExtensionPoint.FIELDS.label": "My Event Attachment",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#MenuItemExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarEventAddAttachment"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CalendarAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCalendarHomePageOpen",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.enabled": true
          }
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.common": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDefaultHomePageOpen",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.enabled": true
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.layoutProperties": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LayoutProperties.FIELDS.primaryColor": "#ff392b",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LayoutProperties.FIELDS.secondaryColor": "#d68617"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.logoUrl": "https://ssl.gstatic.com/docs/script/images/logo/script-64.png",
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.name": "Demo Google Workspace add-on",
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.openLinkUrlPrefixes": [
            "https://mail.google.com/",
            "https://script.google.com/a/google.com/d/",
            "https://drive.google.com/a/google.com/file/d/",
            "https://www.example.com/"
          ],
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.universalActions": [{
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#UniversalActionExtensionPoint.FIELDS.label": "Open settings",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#UniversalActionExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=getSettingsCard"
          }, {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#UniversalActionExtensionPoint.FIELDS.label": "Open Help URL",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#UniversalActionExtensionPoint.FIELDS.openLink": "https://www.example.com/help"
          }],
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CommonAddOnManifest.FIELDS.useLocaleFromApp": true
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.drive": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DriveAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveHomePageOpen",
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.enabled": true
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DriveAddOnManifest.FIELDS.onItemsSelectedTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DriveExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onDriveItemsSelected"
          }
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.gmail": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#GmailAddOnManifest.FIELDS.composeTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#ComposeTrigger.FIELDS.actions": [
              {
                "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#MenuItemExtensionPoint.FIELDS.label": "Add images to email",
                "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#MenuItemExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=getInsertImageComposeCards"
              }
            ],
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#ComposeTrigger.FIELDS.draftAccess": "METADATA"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#GmailAddOnManifest.FIELDS.contextualTriggers": [
            {
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#ContextualTrigger.FIELDS.unconditional": {},
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#ContextualTrigger.FIELDS.onTriggerFunction": "https://myownpersonaldomain.com/mypage?trigger=onGmailMessageOpen"
            }
          ]
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.docs": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DocsAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DocsAddOnManifest.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DocsExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DocsAddOnManifest.FIELDS.linkPreviewTriggers": [
            {
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LinkPreviewExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onLinkPreview",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LinkPreviewExtensionPoint.FIELDS.patterns": [
                  {
                    "hostPattern": "example.com",
                    "pathPrefix": "example-path"
                  }
              ],
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LinkPreviewExtensionPoint.FIELDS.labelText": "Link preview",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LinkPreviewExtensionPoint.FIELDS.localizedLabelText": {
                "es": "Link preview localized in Spanish"
              },
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#LinkPreviewExtensionPoint.FIELDS.logoUrl": "https://www.example.com/images/smart-chip-icon.png"
            }
          ],
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#DocsAddOnManifest.FIELDS.createActionTriggers": [
            {
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CreateActionExtensionPoint.FIELDS.id": "exampleId",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CreateActionExtensionPoint.FIELDS.labelText": "Example label text",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CreateActionExtensionPoint.FIELDS.localizedLabelText": {
                "es": "Label text localized in Spanish"
              },
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CreateActionExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onCreateAction",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#CreateActionExtensionPoint.FIELDS.logoUrl": "https://www.example.com/images/case.png"
            }
          ]
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.sheets": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SheetsAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SheetsAddOnManifest.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SheetsExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
          }
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.slides": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SlidesAddOnManifest.FIELDS.homepageTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HomepageExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onEditorsHomepage"
          },
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SlidesAddOnManifest.FIELDS.onFileScopeGrantedTrigger": {
            "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#SlidesExtensionPoint.FIELDS.runFunction": "https://myownpersonaldomain.com/mypage?trigger=onFileScopeGrantedEditors"
          }
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.meet": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#MeetAddOnManifest.FIELDS.homepageTrigger",
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#web": [
            {
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Web.FIELDS.sidePanelUrl": "https://myownpersonaldomain.com/sidePanelUrl",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Web.FIELDS.supportsScreenSharing": true,
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Web.FIELDS.addOnOrigins": [
                "https://www.myownpersonaldomain.com",
                "https://www.myownpersonaldomain.com:443"
              ],
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Web.FIELDS.logoUrl": "https://myownpersonaldomain.com/meetWebLogoUrl",
              "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Web.FIELDS.darkModeLogoUrl": "https://myownpersonaldomain.com/darkModeLogoUrl"
            }
          ]
        },
        "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#AddOns.FIELDS.httpOptions": {
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HttpOptions.FIELDS.authorizationHeader": "SYSTEM_ID_TOKEN",
          "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#HttpOptions.FIELDS.granularOauthPermissionSupport": "OPT_IN"
        }
      },
      "https://developers.google.com/workspace/add-ons/reference/rest/v1/projects.deployments#Deployment.FIELDS.oauthScopes": [
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.addons.current.event.read",
        "https://www.googleapis.com/auth/calendar.addons.current.event.write",
        "https://www.googleapis.com/auth/drive.addons.metadata.readonly",
        "https://www.googleapis.com/auth/gmail.addons.current.action.compose",
        "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
        "https://www.googleapis.com/auth/userinfo.email",
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/script.locale",
        "https://www.googleapis.com/auth/script.scriptapp",
        "https://www.googleapis.com/auth/drive.file",
        "https://www.googleapis.com/auth/documents.currentonly",
        "https://www.googleapis.com/auth/spreadsheets.currentonly",
        "https://www.googleapis.com/auth/presentations.currentonly",
        "https://www.googleapis.com/auth/workspace.linkpreview"
      ]
    }

## Allowlist URLs

You use allowlists to designate specific URLs that are pre-approved for access
by your script or add-on. Allowlists help protect user
data; when you define an allowlist, script projects can't access URLs that have
not been added to the allowlist.

This field is optional when you install a test deployment, but is required when
you create a versioned deployment.

You use allowlists when your script or add-on performs
the following actions:

- Retrieves or fetches information from an external location (such as HTTPS endpoints) using the Apps Script [`UrlFetch`](https://developers.google.com/apps-script/reference/url-fetch) service. To allowlist URLs for fetching, include the [`urlFetchWhitelist`](https://developers.google.com/apps-script/manifest#Manifest.FIELDS.urlFetchWhitelist) field in your manifest file.
- Opens or displays a URL in response to a user action (Required for Google Workspace add-ons that open or display URLs that are external to Google). To allowlist URLs for opening, include the [`addOns.common.openLinkUrlPrefixes`](https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.openLinkUrlPrefixes) field in your manifest file.

> [!NOTE]
> **Note:** *Whitelist* , as used in [`urlFetchWhitelist`](https://developers.google.com/apps-script/manifest#Manifest.FIELDS.urlFetchWhitelist), is a deprecated term that is synonymous with and replaced by *allowlist* . For more information, see [Writing inclusive documentation](https://developers.google.com/style/inclusive-documentation).

### Adding prefixes to your allowlist

When you specify allowlists in your manifest file (by including either the
`addOns.common.openLinkUrlPrefixes` or `urlFetchWhitelist` field), you must
include a list of URL prefixes. The prefixes you add to the manifest must
satisfy the following requirements:

- Each prefix must be a valid URL.
- Each prefix must use `https://`, not `http://`.
- Each prefix must have a full domain.
- Each prefix must have a non-empty path. For example, `https://www.google.com/` is valid but `https://www.google.com` is not.
- You can use [wildcards](https://developers.google.com/workspace/add-ons/concepts/workspace-manifests#using_wildcards) to match URL subdomain prefixes.
- A single `*` wildcard can be used in the [`addOns.common.openLinkUrlPrefixes`](https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.openLinkUrlPrefixes) field to match all links, but this is not recommended as it can expose a user's data to risk and can prolong the [add-on review](https://developers.google.com/workspace/add-ons/concepts/gsuite-addon-review) process. Only use a wildcard if your add-on functionality requires it.

When determining if a URL matches a prefix in the allowlist, the following rules
apply:

- Path matching is case-sensitive.
- If the prefix is identical to the URL, it is a match.
- If the URL is the same or a child of the prefix, it is a match.

For example, the prefix `https://example.com/foo` matches the following URLs:

- `https://example.com/foo`
- `https://example.com/foo/`
- `https://example.com/foo/bar`
- `https://example.com/foo?bar`
- `https://example.com/foo#bar`

### Using wildcards

You can use a single wildcard character (`*`) to match a subdomain for both the
[`urlFetchWhitelist`](https://developers.google.com/apps-script/manifest#Manifest.FIELDS.urlFetchWhitelist)
and [`addOns.common.openLinkUrlPrefixes`](https://developers.google.com/apps-script/manifest/addons#Common.FIELDS.openLinkUrlPrefixes)
fields. You can't use more than one wildcard to match multiple subdomains, and
the wildcard must represent the leading prefix of the URL.

For example, the prefix `https://*.example.com/foo` matches the following
URLs:

- `https://subdomain.example.com/foo`
- `https://any.number.of.subdomains.example.com/foo`

The prefix `https://*.example.com/foo` *doesn't* match the following
URLs:

- `https://subdomain.example.com/bar` (suffix mismatch)
- `https://example.com/foo` (at least one subdomain must be present)

Some of the prefix rules are enforced when you try to save your manifest. For
example, the following prefixes cause an error if they are present in your
manifest when you attempt to save:

- `https://*.*.example.com/foo` (multiple wildcards are forbidden)
- `https://subdomain.*.example.com/foo` (wildcards must be used as a leading prefix)