Order actions
Order pages allow customers to view and manage their purchases, including browsing order history, checking fulfillment status, and reviewing order details. Extensions on these pages help customers take action on their orders directly from customer accounts.
Anchor to Use casesUse cases
- Return and exchange requests: Let customers select items to return or exchange, submit a reason, and receive a shipping label directly from the order page.
- Reorder: Add all items from a previous order back to the cart with a single click.
- Subscription management: Show active subscriptions tied to past orders, with options to skip, pause, or cancel.
- Shipment tracking: Surface real-time tracking updates when a shipment is in transit.
Use static targets to extend the order index and order status pages with custom workflows in the order action menu.
Menu item targets render as buttons in the order action menu, while action targets open as modal overlays. The examples demonstrate fetching data from your app's backend or using the Order API.
customer-account.order.action.menu-item.render
Renders a button in the order action menu on the order index and order status pages. Use this target to add custom actions that navigate to a URL or open a modal for workflows like returns, exchanges, or reorders.
Extensions at this target can access order data through the Order API. The root element must be a single button component. Use the href prop to navigate directly, or omit it to open a modal rendered by customer-account.order.action.render.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Anchor to Order action ,[object Object]Order action target
customer-account.order.action.render
Renders a modal when a customer clicks an order action button that doesn't have an href prop set. Use this target to build multi-step workflows like return requests, order modifications, or confirmations.
Extensions at this target can access order data through the Order API and control the modal with shopify.close(). The root element must be a customer account action component.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Anchor to Order index targetsOrder index targets
Use static and block targets to extend the order index page with contextual content and information.
Announcement targets render as dismissable banners at the top of the page, while block targets display as inline cards that merchants can position using the checkout and accounts editor. The examples demonstrate using the Localization API or fetching data from your app's backend.
Anchor to Order index announcement ,[object Object]Order index announcement target
customer-account.order-index.announcement.render
Renders a dismissable announcement at the top of the order index page. Use this target to surface time-sensitive information like shipping updates, promotions, or account status changes.
Extensions at this target can access locale and currency context through the Localization API. The root element should be an announcement component.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Anchor to Order index block ,[object Object]Order index block target
customer-account.order-index.block.render
Renders inline content on the order index page. Use this target to display persistent information like loyalty points, subscription summaries, or account-level insights.
Extensions at this target appear as blocks that merchants can position using the checkout and accounts editor. To preview your extension in each supported location, use the placement reference for that location as a URL parameter.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Anchor to Best practicesBest practices
- Guard against missing data: Always check that
shopify.order.valueis defined before rendering order-specific content in action targets. The order data loads asynchronously and might beundefinedon the initial render. - Keep announcements concise: The announcement component is dismissable by the customer, so long messages risk being closed before they're read. Use short, actionable text and link to modals or pages for additional detail.
- Pair menu items with modals: When building order actions, implement both
customer-account.order.action.menu-item.render(the button) andcustomer-account.order.action.render(the modal) in the same extension. Omithrefon the button to trigger the modal automatically.