Skip to main content

Extension points

An extension point is a fixed slot on the checkout page or the thank-you page. Pass its name in the extensionPoint field of extend() and your HTML is rendered at that slot:

import { extend } from 'shoplazza-extension-ui';

extend({
extensionPoint: 'Checkout::StepSubmit::RenderBefore',
component: '<p>Free returns within 30 days.</p>',
});

The same extension point can be extended more than once; content is appended in call order rather than replaced. For the full extend signature and the HTML template mechanism, see the extend function. Each area below also lists the native modules you can hide there with deleteTarget, so that your own content replaces the built-in one instead of sitting next to it.

Checkout page

These extension points render on the checkout page itself. Which of them exist on screen depends on the store: the pickup slots need in-store pickup turned on, and the step-specific slots only appear in the two-step and three-step layouts.

Page frame

Extension pointDescription
Checkout::RenderBeforeBefore the page
Checkout::RenderAfterAfter the page
Checkout::Head::RenderAfterAfter the store logo in the header
Checkout::Advertise::RenderBeforeBefore the advertisement slot
Checkout::MainHeader::RenderAfterAfter the header of the main column
Checkout::Main::RenderBeforeBefore the address column
Checkout::Main::RenderAfterAfter the address column
Checkout::FooterTop::RenderAfterAfter the top of the footer
Checkout::CheckoutFooter::RenderBeforeBefore the footer
Checkout::CheckoutFooter::RenderAfterAfter the footer

Native modules you can hide here: header, loginOrLogout.

Step breadcrumb

Extension pointDescription
Checkout::Navigate::RenderBeforeBefore the step breadcrumb
Checkout::Navigate::RenderAfterAfter the step breadcrumb

Native modules you can hide here: navigate.

Filled-in information card

Extension pointDescription
Checkout::FilledInformation::RenderAfterAfter the filled-in information card

Native modules you can hide here: addressCard.

Contact information

Extension pointDescription
Checkout::ContactInformation::RenderBeforeBefore the contact information module
Checkout::ContactInformation::RenderAfterAfter the contact information module
Checkout::ContactInformationHeader::RenderAfterAfter the contact information title
Checkout::BlockContactInformation::RenderAfterAfter the contact fields; this slot is hidden whenever the contact information is hidden
Checkout::ContactEmail::RenderAfterAfter the email input
Checkout::ContactPhone::RenderAfterAfter the phone input
Checkout::EmailOrPhone::RenderAfterAfter the combined email-or-phone input

Native modules you can hide here: contactInformation, contactInformationHeader, contactEmail, contactPhone, emailOrPhone, contactSubscribe.

Shipping address

Extension pointDescription
Checkout::ShippingAddress::RenderAfterAfter the shipping address module
Checkout::ShippingAddressHeader::RenderAfterAfter the shipping address title
Checkout::ShippingAddressForm::RenderBeforeBefore the shipping address form
Checkout::ShippingAddressForm::RenderAfterAfter the shipping address form

Native modules you can hide here: shippingAddress, shippingAddressHeader, shippingAddressBook, securityIdentifier.

Billing address

Extension pointDescription
Checkout::BillingAddress::RenderBeforeBefore the billing address module
Checkout::BillingAddress::RenderAfterAfter the billing address module

Native modules you can hide here: billingAddress.

Delivery method

Extension pointDescription
Checkout::DeliveryMethod::RenderBeforeBefore the delivery method module
Checkout::DeliveryMethod::RenderAfterAfter the delivery method module
Checkout::DeliveryMethodHeader::RenderAfterAfter the delivery method title

Native modules you can hide here: deliveryMethod, deliveryMethodHeader.

Shipping lines

Extension pointDescription
Checkout::ShippingList::RenderAfterAfter the shipping line module
Checkout::ShippingLinesTitle::RenderBeforeBefore the shipping line list title
Checkout::ShippingLinesTitle::RenderAfterAfter the shipping line list title
Checkout::ShippingLines::RenderAfterAfter the shipping line list

Native modules you can hide here: shippingList, shippingLinesTitle.

Pickup information

Extension pointDescription
Checkout::PickupInformation::RenderBeforeBefore the pickup information module, which is shown once the buyer switches to pickup
Checkout::PickupInformation::RenderAfterAfter the pickup information module, which is shown once the buyer switches to pickup
Checkout::PickupInformationHeader::RenderAfterAfter the pickup information title

Native modules you can hide here: pickupInformation, pickupInformationHeader.

Pickup locations

Extension pointDescription
Checkout::PickupAddress::RenderBeforeBefore the pickup location list
Checkout::PickupAddress::RenderAfterAfter the pickup location list
Checkout::PickupAddressHeader::RenderAfterAfter the pickup location list title

Native modules you can hide here: pickupAddress, pickupAddressHeader.

Payment

Extension pointDescription
Checkout::SectionPayment::RenderBeforeBefore the payment section
Checkout::SectionPayment::RenderAfterAfter the payment section
Checkout::PaymentHeader::RenderBeforeBefore the payment method title
Checkout::PaymentHeader::RenderAfterAfter the payment method title
Checkout::Payment::RenderAfterAfter the payment method list

Native modules you can hide here: paymentHeader, payPalExpress.

Submit buttons

Extension pointDescription
Checkout::StepSubmit::RenderBeforeBefore the submit button
Checkout::StepSubmit::RenderAfterAfter the submit button
Checkout::InfoSubmit::RenderBeforeBefore the submit button of the information step
Checkout::InfoSubmit::RenderAfterAfter the submit button of the information step
Checkout::ShippingSubmit::RenderBeforeBefore the submit button of the shipping step
Checkout::ShippingSubmit::RenderAfterAfter the submit button of the shipping step
Checkout::PaymentSubmit::RenderBeforeBefore the submit button of the payment step
Checkout::PaymentSubmit::RenderAfterAfter the submit button of the payment step

Native modules you can hide here: infoSubmit, shippingSubmit, paymentSubmit, returnBtn.

Order note

Extension pointDescription
Checkout::SpecialInstruction::RenderBeforeBefore the order note module
Checkout::SpecialInstruction::RenderAfterAfter the order note module

Native modules you can hide here: specialInstruction.

Order summary

Extension pointDescription
Checkout::Summary::RenderBeforeBefore the product column
Checkout::Summary::RenderAfterAfter the product column
Checkout::OrderSummaryHeader::RenderBeforeBefore the order summary title
Checkout::OrderSummaryHeader::RenderAfterAfter the order summary title
Checkout::OrderSummary::RenderAfterAfter the order summary

Native modules you can hide here: orderSummary, orderSummaryHeader.

Line item list

Extension pointDescription
Checkout::ProductList::RenderBeforeBefore the line item list module
Checkout::ProductList::RenderAfterAfter the line item list module

Native modules you can hide here: productList, ProductListCover, productListSkuProperties.

Discount codes and gift cards

Extension pointDescription
Checkout::Reductions::RenderBeforeBefore the discount code and gift card module
Checkout::Reductions::RenderAfterAfter the discount code and gift card module
Checkout::GiftCardTag::RenderAfterAfter the discount code and gift card tags

Native modules you can hide here: reductions, giftCardTag, mobileCoupon.

Price breakdown

Extension pointDescription
Checkout::PriceList::RenderBeforeBefore the price breakdown module
Checkout::PriceList::RenderAfterAfter the price breakdown module
Checkout::PriceListSubTotal::RenderAfterAfter the subtotal
Checkout::PriceListShippingTotal::RenderAfterAfter the shipping cost
Checkout::PriceListTaxTotal::RenderAfterAfter the tax
Checkout::PriceListShippingTaxTotal::RenderAfterAfter the shipping tax
Checkout::PriceListGiftCard::RenderAfterAfter the gift card deduction
Checkout::TotalPrice::RenderAfterAfter the total

Native modules you can hide here: priceList, priceListSubTotal, priceListShippingTotal, priceListTaxTotal, priceListShippingTaxTotal, priceListGiftCard, totalPrice.

Thank-you page

These extension points render on the thank-you page, the page the buyer lands on after the order is placed. CheckoutAPI is mounted there too, but only part of it returns data — the buyer is no longer editing the order.

Extension pointDescription
Checkout::ThankyouHeader::RenderBeforeBefore the thank-you page header
Checkout::ThankyouHeader::RenderAfterAfter the thank-you page header
Checkout::ThankyouContent::RenderBeforeBefore the thank-you page content
Checkout::ThankyouContent::RenderAfterAfter the thank-you page content
Checkout::ResultContentInfo::RenderBeforeBefore the order result block
Checkout::ResultContentInfo::RenderAfterAfter the order result block
Checkout::ResultFooter::RenderBeforeBefore the thank-you page footer
Checkout::ResultFooter::RenderAfterAfter the thank-you page footer

Native modules you can hide here: thankyouHeader, thankyouContent, thankyouFooter, thankyouShippingInfo, thankyouFailOrderStatus, thankyouPageGiftCardAddress, thankyouPagePickupAddress.

Dynamic extension points

A dynamic extension point renders once per row — one per line item, per shipping line, per price line or per dialog — so its name carries the id of that row. The names below are templates: replace {id} with the id of the data you are targeting.

Extension pointDescription
Checkout::Product-{id}::RenderAfterAfter a line item, where {id} is the line item id
Checkout::ProductTitle-{id}::RenderAfterAfter a line item title, where {id} is the line item id
Checkout::ProductOption-{id}::RenderAfterAfter the variant options of a line item, where {id} is the line item id
Checkout::ProductProperty-{id}::RenderAfterAfter the custom properties of a line item, where {id} is the line item id
Checkout::ProductApplication-{id}::RenderAfterAfter the discounts applied to a line item, where {id} is the line item id
Checkout::ShippingLine-{id}::RenderAfterAfter one shipping line in the list, where {id} is the shipping line id
Checkout::PriceListItemTitle-{id}::ReplaceReplaces the title of one price breakdown line, where {id} is the price line id
Checkout::Dialog-{id}::RenderAfterThe body of an interception dialog, where {id} is the pointId your registerBuyerJourneyIntercept callback returned
Checkout::DialogFooter-{id}::RenderAfterThe footer of an interception dialog, where {id} is the pointId your registerBuyerJourneyIntercept callback returned
Checkout::DialogTrueBtn-{id}::RenderThe confirm button of an interception dialog, where {id} is the pointId your registerBuyerJourneyIntercept callback returned
Checkout::DialogFalseBtn-{id}::RenderThe cancel button of an interception dialog, where {id} is the pointId your registerBuyerJourneyIntercept callback returned

Build the real point name with CheckoutAPI.extension.generateRealDynamicPoint():

const [lineItem] = window.CheckoutAPI.summary.getProductList();
const point = window.CheckoutAPI.extension.generateRealDynamicPoint(
'Checkout::Product-{id}::RenderAfter',
lineItem.id,
);
// point === 'Checkout::Product-6c7c018e-bcc6-4896-9b75-238438178cc8::RenderAfter'

extend({
extensionPoint: point,
component: '<p>Ships separately.</p>',
});

It does the same thing as replacing {id} in the template with the data id. Where each id comes from: a line item id is the id of an entry returned by CheckoutAPI.summary.getProductList(), a shipping line id is the id of an entry returned by CheckoutAPI.order.getShippingLines(), and a dialog id is the pointId your registerBuyerJourneyIntercept callback returned. Line item ids change whenever a line is removed and added back, so read them again each time instead of caching them.

Logic extension point

Extension pointDescription
Checkout::LogicContainer::RenderAfterA container that renders no visible content

Checkout::LogicContainer::RenderAfter is the slot for an extension that has no UI of its own. Extend it when you only need to run code on the checkout page — reading CheckoutAPI, registering listeners, calling your own backend — and do not want your content to take up space anywhere in the layout.