Action Item
The provides a tappable surface on the specified extension target as an entry point to an extension. Note that the text displayed on this is dependent on the description of the extension.
Supported targets
- pos.
customer-details. action. menu-item. render - pos.
customer-details. action. render - pos.
draft-order-details. action. menu-item. render - pos.
draft-order-details. action. render - pos.
home. modal. render - pos.
order-details. action. menu-item. render - pos.
order-details. action. render - pos.
product-details. action. menu-item. render - pos.
product-details. action. render - pos.
purchase. post. action. menu-item. render - pos.
purchase. post. action. render
Use cases
- Custom workflows: Launch workflows like sending receipts through messaging apps or non-standard channels.
- Quick shortcuts: Create shortcuts for multi-step workflows like adding gifts or applying VIP discounts.
- Data collection: Launch modals to collect additional customer information.
- Third-party integrations: Launch custom interfaces for external system integrations.
Anchor to examplesExamples
Display an action menu item in the post-purchase flow. This example shows how to render an ActionItem that appears in action menus, providing merchants with a tappable entry point to launch your extension after a transaction is completed.
Show a post-purchase action menu item

Show a post-purchase action menu item
Examples
Show a post-purchase action menu item
Description
Display an action menu item in the post-purchase flow. This example shows how to render an ActionItem that appears in action menus, providing merchants with a tappable entry point to launch your extension after a transaction is completed.
React
import React from 'react'; import { reactExtension, useApi, ActionItem, } from '@shopify/ui-extensions-react/point-of-sale'; const PostPurchaseActionItem = () => { const api = useApi<'pos.purchase.post.action.menu-item.render'>(); return ( <ActionItem onPress={() => api.action.presentModal()} enabled /> ); }; export default reactExtension( 'pos.purchase.post.action.menu-item.render', () => <PostPurchaseActionItem /> );TS
import { ActionItem, extension, } from '@shopify/ui-extensions/point-of-sale'; export default extension( 'pos.purchase.post.action.menu-item.render', (root, api) => { const actionItem = root.createComponent( ActionItem, { onPress: () => api.action.presentModal(), enabled: true, }, ); root.append(actionItem); }, );
Anchor to actionitemActionItem
- Anchor to onPressonPress() => voidrequired
The callback that is executed when the user taps the
.- Anchor to enabledenabledboolean
Sets whether or not the
can be tapped.
Anchor to best-practicesBest practices
- Control availability with enabled state: Use the
enabledproperty to control when a component can be tapped based on context. Set a component'senabledproperty tofalsewhen the extension's functionality isn't applicable to the current state. For example, if your extension applies a discount for new customers, setenabletofalsewhen processing a purchase for an existing customer. - Maintain consistent interaction patterns: Follow established POS interaction patterns by using
components primarily with themethod as entry points to modal workflows. This creates predictable user experiences that align with merchant expectations and standard POS behaviors. - Handle errors and edge cases: Implement proper error handling in
callbacks to manage network failures, invalid data states, or other exceptional conditions. Provide meaningful feedback to merchants when operations cannot be completed.
Anchor to limitationsLimitations
components can only be used within supported action menu-item targets. They can't be rendered in action (modal) or block targets.- Multiple
components from the same app can't be rendered simultaneously on the same target. Each extension can only contribute onefor each supported target.