App review process and requirements for the Google Workspace Marketplace

To publish an app publicly to the Google Workspace Marketplace, Google reviews your app and its listing to make sure they meet Google's design, content, and style guidelines.

After Google reviews your app, you receive an email about whether it needs more work or if it's approved.

  • If your app requires additional work—You receive a review document with specific information about what needs improvement. Address the issues and resubmit your app for review.
  • If the review team approves your app—It's automatically published and you receive a notification email.

Before you submit your app for review, make sure that your app is ready to publish. For details, see Prepare for the publishing process.

Review duration

App review typically takes several days. The time it takes depends on:

  • How many apps were submitted recently
  • How much additional work your app needs

Common reasons an app doesn't pass review

OAuth verification:

  • Incorrect OAuth consent screen set up. For example, the user type is set to Internal or the publishing status is set to Testing.
  • The app didn't complete the OAuth verification.

App listing issues:

  • Inappropriate use of Google's trademarks in the app name, logo, or app descriptions. For guidance, visit the Google Workspace Marketplace branding guidelines.
  • Links don't work or point to the incorrect information. For example, a link for a privacy policy points to a developer support page.
  • Screenshots and images are of low quality, or don't accurately represent app functionality.

App readiness:

  • The app is still being tested and not ready for the public.
  • The app has bugs or is not fully functional.

Review criteria

Before you submit your app for review, make sure your app meets all requirements and complies with the Google Workspace Marketplace program policies.

Requirements for all apps

You can use the checkboxes to track your preliminary review.

Category Criteria
App name
  • There are no other app listings with the same name.
  • The name doesn't include a version number.
  • The name matches the name on the OAuth consent screen.
  • The name isn't vague or too generic.
  • The name is 50 characters or less.
  • (Recommended) The name uses title case.
  • (Recommended) The name doesn't have punctuation, especially parentheses.
Developer information
  • Developer name and developer website accurately represent and direct to relevant information about the developer.
  • Due to consumer protection laws, consumers based in the European Economic Area (EEA) must be informed whether a merchant on the Google Workspace Marketplace is a trader or a non-trader:
    • Trader—A trader is a person who acts for purposes relating to a trade, business, craft, or profession; or in the name of or on behalf of a trader.
    • Non-trader—A non-trader (consumer) is a person who acts for non-professional purposes.

    If unspecified, "Trader status unspecified" appears on your app's store listing page.

App description
  • All provided links work and point to the correct information. For example, a link for a privacy policy points to a page describing the privacy policy.
  • If the app interacts with a third-party service, the description describes what the third-party service does, how the app interacts with it, and optionally links to the relevant website.
  • The short and detailed descriptions are understandable.
  • The short and detailed descriptions aren't identical.
  • (Recommended) Pricing information is complete and accurate.
  • (Recommended) The full set of attributes per language (name, short description, and detailed description) are defined correctly without language mismatch.
Functionality
  • There are no obvious bugs and all actions, including edge cases, are fully functional. Loading times are managed with loading indicators.
  • The app demonstrates clear interactions with Google APIs.
  • The app provides a new or extended functionality that isn't equivalent to what's already included in Google products.
  • The app isn't meant for advertisement or spamming purposes.
  • The app is fully functional and not meant for testing purposes—it's not a work in progress.
  • If the app interacts with features that are available to users or paid users, a test account on the developer's system is provided for Google's review team.
User experience
  • The app, including its name, doesn't use Google brand assets, trademarks, or Google branded content. See Google Workspace Marketplace branding guidelines.
  • Authorization and sign-in are required only once. The app uses one-click SSO or ideally zero-click SSO.
  • After an administrator grants permissions for the OAuth 2.0 scopes for the domain, individual users aren't prompted for scope permissions again.
  • Users don't have to input credentials after signing in to their Google Account. At most, they have to click a "Sign in with Google" button to get access.
  • There are consistent, obvious, and understandable terms for button labels, menu items, titles, and other app elements. For example, instead of Yes or No, labels refer to action names like Delete and Cancel.
  • If sign-in is required, the sign-out functionality works properly. Tokens are revoked and sign-in can start from the beginning.
  • Feedback is always displayed, such as confirmation or error messages, for actions.
  • There are no broken image links or fuzzy images.
Graphics
  • Icons are sized correctly, square, and have transparent backgrounds. See Graphic assets.
  • The icon properly represents the app's name or functionality.
  • The icon is in color (not gray scaled).
  • The icon doesn't use Google's trademarks.
  • Screenshots and images are not blurry, hard to read, or inappropriate. They accurately represent the app.
  • (Recommended) Screenshots clearly show how to use the app and what it does.
OAuth
  • The app has passed OAuth verification, uses the narrowest OAuth scopes possible, and all scopes integrate correctly with Google Services APIs.

Additional requirements for specific app integrations

Select the app integrations included in your app listing to view the relevant review criteria. You can click the column names to sort the criteria, for example, by category.

You can use the checkboxes to track your preliminary review.

App integration Category Criteria
Google Chat app Name
  • The buttons to communicate with the app are available from the description.
  • The app name starts with A—Z (uppercase) or 0–9. It can't start with a symbol.
Google Chat app User experience
  • The app sends an unprompted welcome message every time a user starts a direct message or the app is added to a space. The welcome message is different from the "Help" command. For more information about how to create a good welcome message, see Build Chat apps that help and delight users.
  • The app supports the "Help" command and helps users get started using the app. For more information about how to create a good help message, see Build Chat apps that help and delight users.
  • The app always responds when spoken to in a space or direct Chat.
  • Messages use correct spelling, capitalization, punctuation, and grammar. Messages don't contain malicious, offensive, or abusive material.
  • Messages use clear, concise, and consistent formatting for text or cards according to the Google requirements.
  • If a response takes longer than 2 seconds, the app sends a message explaining the delay.
  • Apps that send notifications let users turn off the notifications.
  • Users can add the app to a space using @mentioning.
  • Users can remove the app from a space using the View member menu.
  • The app indicates to the user everything that's necessary to interact with it.
  • The cards format the app uses meets Google requirements. See Create interactive cards.
  • The app is available from the Find apps option in the Chat menu.
  • External URLs that the app interacts with don't belong to a staging or development environment.
  • The @mention is required in every message to the app in spaces. That's the only way that the app knows that it must respond.
  • If the Chat app previews links from a third-party domain:
    • Link previews offer relevant, supplemental information to the user's message. For example, previewing a link to a sales deal adds information like account, amount, and stage.
    • The developer is affiliated with the previewed domain.

    For more information, see Preview links.

  • (Recommended) To let Workspace administrators install your app on behalf of users in their organization, your app must be able to receive and send direct messages.
Google Chat app Graphics
  • The app has a recognizable and clear avatar.
Google Drive app Functionality
  • The app doesn't use Chrome browser extensions to provide functionality by manipulating the Drive HTML directly.
  • If your app uses sensitive or restricted scopes, it must undergo OAuth verification. See How do I submit for verification.
  • If your app uses restricted scopes, it must also go through a security assessment. See Why is the security assessment needed.
Google Drive app User experience
  • If the app stores files in Drive, it allows users to pick a folder or creates and reuses an app-specific folder. Configuration data can be stored in an App Data folder. The app doesn't dump files into the user's My Drive folder.
  • The app only stores files in Drive connected to the documented functionality of the app.
Editor Add-on Functionality
  • Expected and required actions are included in the add-on, and it provides all the tools necessary to complete its workflow. For example:
    • If the add-on applies styling to the entire document, it offers the option to apply the styling only to selected text.
    • If the add-on uploads spreadsheet data to a web service feed, it has a link to that feed for easy navigation.
    • If the add-on requires the user to have an account, it provides links or info to easily create an account if the user doesn't already have one.
  • The add-on has menu items under the add-ons tab.
  • Even if the add-on is just custom functions, it still includes proper documentation.
  • The add-on correctly uses onInstall() and onOpen() to populate its menu. The menu items populate when the add-on is first installed and when a different file is opened. See Editor Add-on authorization.
  • Authorization modes are set up correctly. See Authorization modes.
Editor Add-on User experience
  • The add-on provides all the information necessary to have a basic understanding of the product and how to use it.
  • The add-on code doesn't use libraries excessively as libraries can cause the add-on to lose performance.
  • Errors are avoided if possible and managed properly, if not:
    • Error messages are displayed in a dialog window, not in a JavaScript alert or on the default red bar. They communicate the problem and describe what the user must do to fix it in simple language.
    • When possible, if the user is doing something wrong, a button is displayed that fixes the issue for them.
    • For more information, see the add-ons style guide.
  • Links to external pages open in new windows and are correct.
  • The add-on is intuitive and designed well. This means:
    • It's always clear what to do and how to do it.
    • The add-on is accessible and simple to understand. Technical terms and jargon are avoided.
    • Workflows are clear and facilitated as much as possible.
    • The user and their content are as safe as possible.
  • The add-on follows the UI style guide for editor add-ons and uses the CSS package for editor add-ons.
  • The add-on only uses one blue primary action per display.
  • The add-on displays one dialog at a time. It doesn't overlap or have multiple dialogs open at a time.
  • The add-on's UI fits neatly in allocated spaces:
    • Text and labels aren't cut off with "..."
    • The user doesn't have to do much vertical scrolling.
    • Content width doesn't extend beyond 300p so that it doesn't have a horizontal scrollbar.
  • The add-on requires confirmation or displays warnings for all sensitive actions. For example, if the add-on is about to overwrite all the content in a spreadsheet, the user is warned and confirms the action before it happens.

    You can avoid this requirement through design changes. For example, a Google Sheets add-on that imports data creates a risk of overwriting existing content. You can remove the risk by creating a sheet for the data as the default action.

  • Users can't trigger actions multiple times while an action is loading. For example, buttons are turned off or hidden while an action is loading.
Google Workspace Add-on Name

Calendar add-ons

  • If the add-on uses calendar.name or common.name, the name in the manifest is identical to the name provided in the app listing.
  • If the add-on uses calendar.conferenceSolution, the conference solution name doesn't contain “Google Calendar.”
  • (Recommended) If the add-on uses calendar.conferenceSolution, the conference solution name doesn't exceed 30 characters.
Google Workspace Add-on Functionality
  • The add-on uses the correct widgets for the desired functionality. For example, use a switch to select a boolean value.

Calendar add-ons

  • Secondary calendars and delegation are supported, or if not supported, managed gracefully. For example, conference creation doesn't fail if the user selects a different calendar they have edit access to when creating an event.
  • Recurring events work correctly.
  • If the add-on uses calendar.conferenceSolution, at least one conference solution is provided.
  • If the add-on provides conferencing solutions, appropriate conference data fields are used. For example, video conference links, phone numbers, SIP links, access codes, and other supported attributes use structured data fields and aren't provided in the notes field.
  • If the add-on provides conferencing solutions, it only edits conference details and no other event fields.
  • If the add-on provides conferencing solutions, the conference creation takes less than 5 seconds.

Gmail add-ons

If the add-on uses UrlFetchApp or OpenLinkUrl:

  • The URL is valid.
  • The URL uses HTTPS not HTTP.
  • The full domain is specified.
  • The path is not empty. For example, https://altostrat/ is OK, but https://altostrat isn't.
  • Wildcards can't be used in UrlFetchApp.
Google Workspace Add-on User experience
  • The add-on has a homepage. If your Google Workspace Add-on is a converted Gmail add-on, a default homepage is applied.
  • The add-on card functions properly. For example, there aren't duplicated cards; the back, refresh, and update buttons work accordingly.
  • After the user authorizes the add-on, it displays a customized homepage card to welcome the user with a button for sign-in (if needed), logo, and brief description of the add-on.
    • If the sign-in button is triggered, it presents a customized sign-in page from the third-party vendor that clearly indicates there's a third-party service working outside of Google Workspace.
  • The add-on's UI fits neatly in allocated spaces:
    • Text and labels aren't cut off with "..."
    • The user doesn't have to do much vertical scrolling.
    • Content width doesn't extend beyond 300p so that it doesn't have a horizontal scrollbar.
  • The add-on's code doesn't use libraries excessively as libraries can cause the add-on to lose performance.

Calendar add-ons

  • If the add-on provides conferencing solutions, the conferences created are valid and displayed correctly on the third-party conferencing website.

Docs add-ons

If the add-on previews links from a third-party domain (smart chips):

  • Link previews offer relevant, supplemental information to the user. For example, previewing a link to a sales deal adds information like account, amount, and stage.
  • The developer is affiliated with the previewed domain.

For more information, see Preview links with smart chips.

Drive add-ons

  • If the app stores files in Drive, it allows users to pick a folder or creates and reuses an app-specific folder. Configuration data can be stored in an App Data folder. The app doesn't dump files into the user's My Drive folder.
  • The add-on only stores files in Drive that are connected to the documented functionality of the add-on.

Gmail add-ons

  • The add-on doesn't mention or link to Chrome browser extensions without justification.
  • The More actions menu contains universal actions that work properly. For example, Sign out, About, Support, etc.
Google Workspace Add-on Graphics

Calendar add-ons

  • The logo for the conferencing solution is a public URL. See Provide conference solution logos.
  • If the add-on uses calendar.conferenceSolution, the logo of the conference solution follows the calendar.logoUrl requirements. See Calendar manifest resource.
  • If the add-on uses calendar.logoUrl or common.logoUrl, the logo is identical to the icon provided in the app listing.
  • If the add-on uses calendar.logoUrl or common.logoUrl, the URL of the logo starts as follows: https://lh3.googleusercontent.com/
Google Workspace Add-on OAuth

Drive add-ons

  • (Recommended) If you want to receive limited-metadata, the add-on includes the drive.addons.metadata.readonly scope.
Web app Functionality
  • The universal navigation URL points to a web app. A simple web page without functionality is not considered a web app.