---
title: Admin intents
description: >-
  Launch Shopify's native resource editors directly from your app to let
  merchants create and edit products, collections, customers, and other
  resources without leaving your workflow.
source_url:
  html: 'https://shopify.dev/docs/apps/build/admin/admin-intents'
  md: 'https://shopify.dev/docs/apps/build/admin/admin-intents.md'
api_name: admin-extensions
---

# Admin intents

Admin intents let you launch Shopify's native resource editors directly from your app. Instead of building custom forms for creating or editing Shopify resources, you call a single API and Shopify opens the same editors merchants already know. When they're done, they return to your app.

This guide covers how admin intents work, what you can do with them, and where they're available.

***

## How it works

Your app calls `shopify.intents.invoke()` with an action (`create` or `edit`) and a type. Shopify opens the native editor as a contextual overlay. The merchant completes their action using the full-featured editor, and control returns to your app with the result.

```js
shopify.intents.invoke('create:shopify/Collection');
```

Because the editors are built and maintained by Shopify, your app automatically benefits from new fields, validation rules, and UX improvements without any code changes.

Admin intents are available in the following contexts:

* **[App Home (iframe)](https://shopify.dev/docs/api/app-home/apis/user-interface-and-interactions/intents-api)**: Requires the latest version of App Bridge.
* **[App Home UI extensions](https://shopify.dev/docs/api/app-home-ui-extension/latest/target-apis/utility-apis/intents-api)**: Requires API version `2026-07` or later.
* **[Admin UI extensions](https://shopify.dev/docs/api/admin-extensions/latest/target-apis/utility-apis/intents-api)**: Requires API version `2026-04` or later.

***

## Creating resources

You can open the native editor for creating a new resource by specifying the `create` action and a resource type.

## Create a new product

```js
const result = await shopify.intents.invoke('create:shopify/Product');
```

![The native product editor opened from an app using admin intents.](https://shopify.dev/assets/assets/images/admin/admin-intents/admin-intents-create-product-C-VzPAG-.png)

***

## Editing resources

You can open the native editor for an existing resource by specifying the `edit` action, a resource type, and a resource GID.

Store settings work differently: a settings edit takes a settings type instead of a resource type, and no GID. See [Supported resources](#supported-resources) for the Intents API reference in each context.

## Edit an existing discount

```js
const result = await shopify.intents.invoke('edit:shopify/Discount', {
  value: 'gid://shopify/DiscountNode/123445',
});
```

![The native discount editor opened from an app using admin intents.](https://shopify.dev/assets/assets/images/admin/admin-intents/admin-intents-edit-discount-DZfjpClU.png)

***

## Import into Partner apps

The `create` and `edit` verbs route to Shopify's native editors. Partner apps can register their own `import` (and `import+bulk`) intents on `shopify/Product`, `shopify/Customer`, and `shopify/Order`, enabling you to hand a Shopify resource off to a Partner app's import workflow without leaving your flow. See [Use extensions to surface app actions](https://shopify.dev/docs/apps/build/sidekick/build-app-actions#import-shopify-resources-with-shopify-intents) for the Partner-side authoring guide.

Pass a single GID in `value` when you want the Partner app to act on one Shopify resource at a time, for example when the merchant has selected a single product in your app's UI:

## Hand a single product GID to a Partner's import handler

```js
const result = await shopify.intents.invoke('import:shopify/Product', {
  value: 'gid://shopify/Product/123445',
  data: {
    // Fields matching the Partner intent's inputSchema.
  },
});
```

Pass an array of GIDs in `value` for the `import+bulk` variant when the Partner app should process many resources in a single workflow, for example a multi-select import flow:

## Hand an array of product GIDs for bulk import

```js
const result = await shopify.intents.invoke('import+bulk:shopify/Product', {
  value: [
    'gid://shopify/Product/123445',
    'gid://shopify/Product/123446',
  ],
  data: {
    // Fields matching the Partner intent's inputSchema.
  },
});
```

Unlike `create:` and `edit:`, which always route to Shopify's native editors, `import:` is fulfilled by Partner apps that have registered a matching intent. Resource type names are case-insensitive. `shopify/Product` and `shopify/product` resolve to the same intent.

***

## Supported resources

Admin intents support Shopify resources like products, collections, customers, and discounts, plus edit-only intents for store settings areas. Some resource types require additional data parameters when you invoke them.

For the complete list of supported resource types, including required data parameters, see the Intents API reference for the context you're building in:

* [App Home (iframe)](https://shopify.dev/docs/api/app-home/apis/user-interface-and-interactions/intents-api)
* [App Home UI extensions](https://shopify.dev/docs/api/app-home-ui-extension/latest/target-apis/utility-apis/intents-api)
* [Admin UI extensions](https://shopify.dev/docs/api/admin-extensions/latest/target-apis/utility-apis/intents-api)

***

## Next steps

* Explore the full Intents API reference for [App Home (iframe)](https://shopify.dev/docs/api/app-home/apis/user-interface-and-interactions/intents-api), [App Home UI extensions](https://shopify.dev/docs/api/app-home-ui-extension/latest/target-apis/utility-apis/intents-api), or [admin UI extensions](https://shopify.dev/docs/api/admin-extensions/latest/target-apis/utility-apis/intents-api) for advanced usage like handling responses and passing data parameters.

***
