{"id":"1de3b718-17aa-4f7d-adde-978ee9a47e3b","task":"Configure a Shopify POS integration using the POS UI Extensions API to surface custom loyalty points balance and redemption during in-store checkout","domain":"Shopify POS UI Extensions","steps":["Create a Shopify POS UI Extension using the Shopify CLI and select the pos.home.tile.render and pos.checkout.action.render-before extension targets to surface the loyalty widget at checkout","In the checkout extension, use the useCustomer() hook to retrieve the current customer's ID and fetch their loyalty point balance from an external loyalty API via a server-side proxy to avoid exposing API credentials","Render the loyalty balance and a points redemption input in the pos.checkout.action.render-before target, displaying available redemption tiers formatted to the store's currency","On redemption confirmation, apply a custom line item discount to the Shopify POS cart using the useCart() hook's applyCartDiscount method with the calculated discount amount","Record the redemption event to the external loyalty system from a Shopify app proxy endpoint called by the extension, including the order ID from the useOrder() hook after checkout completes","Handle offline mode gracefully by caching the last known points balance in the extension's local state with a staleness indicator shown to the cashier"],"gotchas":["Shopify POS UI Extensions have strict API surface limitations compared to web checkout extensions; not all Cart API methods available in online checkout are available in POS extensions","The pos.checkout.action.render-before extension target renders a modal-triggered panel, not an inline block; design the UX so cashiers understand they must tap the tile to access loyalty features","Loyalty redemption applied as a cart discount is not linked to the loyalty system until the order completes; if the transaction is voided after the loyalty points are deducted, a reconciliation job must restore the balance"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/1de3b718-17aa-4f7d-adde-978ee9a47e3b"}