Navigation
Checkout presents buyers with an action button at the end of each section. Use this target to add UI before those buttons, giving you a place to collect marketing consent, capture gift notes, or show cart-based messages.
Shopify's checkout action buttons — such as Continue to payment and Pay now — can't be modified by any extension. Labels, disabled states, and appearance are controlled by Shopify.
This target doesn't render when Shop Pay is the active checkout method. During Apple Pay and Google Pay sessions, the target renders but cart mutation APIs such as applyNoteChange and applyMetafieldChange return error results.
Anchor to Use casesUse cases
- Email and SMS marketing opt-in: Collect buyer consent for email or SMS marketing before checkout completes.
- Gift notes: Let buyers add a personalized gift message to their order.
- Cart messaging: Show contextual messages based on cart contents, such as a free shipping threshold or a discount code.
- Reward points: Fetch the buyer's reward points balance from your backend and display how many points the current order will earn.
Use this target to render UI before the action buttons on each checkout section. The examples below demonstrate note and metafield writes, the two most common write operations at this target.
Anchor to Render before checkout actions ,[object Object]Render before checkout actions target
purchase.checkout.actions.render-before
Renders before the action button on each checkout step, including information, shipping, payment, and review. Read access to cart contents, buyer identity, delivery details, and cost is available.
Write operations are available through the Note API and Metafields API. Use cart instructions to check which mutations are available before calling them.
Supported components
- Abbreviation
- Badge
- Banner
- Box
- Button
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Link
- Map
- Modal
- Money field
- Number field
- Ordered list
- 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
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Buyer Identity API
- Buyer Journey API
- Cart Instructions API
- Cart Lines API
- Checkout Token API
- Cost API
- Customer Privacy API
- Delivery API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Localized Fields API
- Metafields API
- Note API
- Payments API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
Supported components
- Abbreviation
- Badge
- Banner
- Box
- Button
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Consent checkbox
- Consent phone field
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Link
- Map
- Modal
- Money field
- Number field
- Ordered list
- 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
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Buyer Identity API
- Buyer Journey API
- Cart Instructions API
- Cart Lines API
- Checkout Token API
- Cost API
- Customer Privacy API
- Delivery API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Localized Fields API
- Metafields API
- Note API
- Payments API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
Anchor to Best practicesBest practices
- Check note permissions before writing: Use
shopify.instructions.value.notes.canUpdateNotebefore callingapplyNoteChange. When the instruction isfalse, the method returns an error result instead of applying the change. - Check metafield write permissions: Use
shopify.instructions.value.metafields.canSetCartMetafieldsbefore callingapplyMetafieldChange. When the instruction isfalse, the method returns an error result instead of applying the change. - Revert UI state on failure: Check the mutation's return value for
{type: 'error'}and revert the UI element to its previous state. Leaving a checkbox checked after a failed mutation misleads buyers into thinking their input was saved. - Keep extensions concise: Multiple extensions at this target stack vertically before the action button. Keep each extension's output brief to avoid pushing the button below the visible area.
- Render conditionally to target a specific section: This target renders before the action button on every checkout section. Use conditional logic based on checkout state to limit your content to a specific section.
- Use
buyerJourney.intercept()to block navigation: Rendering at this target doesn't intercept or block the buyer from advancing. To prevent navigation until a condition is met, usebuyerJourney.intercept(), which is available from any checkout extension target.