30 ChatGPT Prompts That Build Checkout Pages
Paste into ChatGPT or GPT-4o. Fill [PLACEHOLDERS]. Get a checkout or order-summary page as one HTML file: cart, fake payment UI (no real charges), order review, and upsell. Each prompt is a working page you can open in the chat. Not a landing page. Not a /pricing page.
In short: This page contains 30 copy-paste ready prompts, organized into 6 categories with a description and pro tip for each. The first 5 prompts are free instantly, no signup needed. Hand-curated and tested by the AI Academy team.
Cart
5 promptsLine Item Cart
1/30โจ What it does
ChatGPT builds a line-item cart page for [STORE] with quantities, remove, subtotal, and a checkout CTA as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout designer who builds honest shopping-cart pages people can trust. <context> Build a complete cart page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. This is only the cart: line items, quantities, totals, checkout CTA. Fake money only. Not a landing page. Not a /pricing page with plan cards. </context> <inputs> - Store or brand: [STORE] - Line items (name, SKU, price, qty, image note): [CART ITEMS] - Currency: [CURRENCY] - Shipping teaser if any: [SHIPPING NOTE OR FREE OVER X] - Tax rule I can state: [TAX OR [VERIFY]] - Checkout CTA label: [CONTINUE TO CHECKOUT] - Empty-cart fallback line: [EMPTY LINE] </inputs> <task> Build the page: slim checkout header (Cart current, not a marketing nav); a cart table or stacked cards with image placeholder, name, SKU, unit price, quantity stepper, line total, and remove; a summary card with subtotal, shipping teaser, tax line, and estimated total from labeled JS constants; a primary Continue to checkout button; a keep shopping link that stays on this file as an in-page note. Recalculate totals when qty changes. If stock is missing, write [VERIFY]. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Mobile-first, accessible steppers, semantic HTML, no lorem ipsum. - Do not invent products, sale prices, or free-shipping thresholds I did not give. - No real payment fields on this screen. No live charges. - Keep this a cart. Do not add hero proof, plan tiers, or a sales landing layout. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the constants to edit when SKUs change.
Pro tip: Paste real SKUs, prices, and stock. A cart that invents a $49 hoodie will get screenshotted against your product page.
Mini Cart Drawer
2/30โจ What it does
ChatGPT builds a mini-cart drawer page for [STORE] with a bag trigger, line items, and a checkout CTA as a working page you can open in the chat. You swap the copy, then publish.
You are a storefront designer who builds mini-cart drawers that still work as a full HTML page. <context> Build a complete mini-cart page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Product-tease backdrop plus an open cart drawer. Fake money only. Not a landing page. Not a pricing grid. </context> <inputs> - Store: [STORE] - Backdrop product name (not the sale): [PRODUCT TEASE] - Cart items: [CART ITEMS] - Currency: [CURRENCY] - Drawer headline: [YOUR BAG / CART] - Checkout CTA: [CHECKOUT] - View full cart label: [VIEW CART] </inputs> <task> Build the page: a quiet product-tease backdrop (not a conversion landing page); a bag button with item count; a right-side drawer (open on load, closable, focus trapped) with line items, qty, remove, subtotal, Checkout, and View full cart; a dim overlay. Vanilla JS opens and closes the drawer. Totals from labeled constants. Accessible close control and Escape. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Drawer is usable on a phone (full-height sheet is fine). - Do not invent items or discounts. Mark gaps as [VERIFY]. - No real card fields. No live charges. - Backdrop must not become a one-CTA sales landing page. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say how to keep focus inside the open drawer.
Pro tip: Show item count on the bag icon. A drawer that opens empty after they added a product is how people abandon.
Empty Cart Recovery
3/30โจ What it does
ChatGPT builds an empty-cart recovery page for [STORE] with a reason to stay, three [RECS], and a shop CTA as a working page you can open in the chat. You swap the copy, then publish.
You are a retention designer who treats an empty cart as a recovery screen, not a dead end. <context> Build a complete empty-cart page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Empty state, three recommendations from items I name, one path back into shopping. Not a homepage. Not a landing page. </context> <inputs> - Store: [STORE] - Why the cart is empty: [NEVER ADDED / JUST REMOVED] - Three recommended products with prices: [RECS] - Currency: [CURRENCY] - Primary CTA: [BROWSE / SEE BESTSELLERS] - Reassurance line: [RETURNS OR SHIPPING NOTE] </inputs> <task> Build the page: slim cart header; a calm empty illustration placeholder and a headline that matches [NEVER ADDED / JUST REMOVED]; three rec cards from [RECS] only, each with Add to bag (updates a demo count in JS, still fake); a primary browse CTA; a short reassurance line. Do not invent bestsellers I did not list. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus light vanilla JS for the demo add. - Mobile-first, accessible cards, no lorem ipsum. - Do not invent prices or reviews. Mark gaps as [VERIFY]. - No payment UI on this screen. - Keep this a cart empty state, not a marketing homepage. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say which rec should sit first and why.
Pro tip: Name three real products they can add. An empty bag with only Continue shopping is a bounce.
Promo Code Cart
4/30โจ What it does
ChatGPT builds a promo-code cart for [STORE] that applies [CODE] to [CART ITEMS] and shows the discount as a working page you can open in the chat. You swap the copy, then publish.
You are a cart engineer who only applies promo codes the constants can prove. <context> Build a complete cart page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Line items plus a promo field. Fake money only. Not a coupon landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Cart items and prices: [CART ITEMS] - Valid code and rule: [CODE] - What the code excludes: [EXCLUSIONS] - Currency: [CURRENCY] - Error copy for a bad code: [BAD CODE LINE] </inputs> <task> Build the page: cart lines; promo input and Apply; summary that shows subtotal, discount, and total; success and error states. Accept only [CODE] (case-insensitive). Compute discount from labeled constants. Reject other strings with [BAD CODE LINE]. Show [EXCLUSIONS] as helper text. Checkout CTA stays secondary to a correct total. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Never invent a second code. Never hardcode 10 percent unless I gave it. - Accessible field, button, and live total. Keyboard usable. - No real charges. No payment gateway. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then print the discount function and a worked example.
Pro tip: Give the code, the percent or dollar off, and what it excludes. A field that always says Applied with no math is a support ticket.
Quantity Stepper Cart
5/30โจ What it does
ChatGPT builds a quantity-stepper cart for [STORE] that respects [MIN] and [MAX] per [SKU] as a working page you can open in the chat. You swap the copy, then publish.
You are a cart designer who treats quantity limits as first-class UI, not a footnote. <context> Build a complete cart page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Steppers, min/max, live totals. Fake money only. Not a landing page. Not a pricing calculator for plans. </context> <inputs> - Store: [STORE] - Items with unit price, min, max, start qty: [SKU] - What happens at max: [HARD STOP / WAITLIST NOTE] - Currency: [CURRENCY] - Checkout CTA: [CHECKOUT] </inputs> <task> Build the page: each line has minus, qty, plus; disable plus at [MAX] and minus at [MIN]; show the cap message from [HARD STOP / WAITLIST NOTE]; recompute line and cart totals from constants; remove line if I allow qty 0, or keep min 1 if I said so. Accessible buttons with aria-live on the total. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent pack sizes or volume breaks. - Guard qty so it cannot go below min or above max. - No real payment. No live charges. - Mobile-first, large tap targets, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list every cap a buyer will hit.
Pro tip: Set min, max, and what happens at the cap. A plus button that climbs to 99 on a 3-pack is how oversells start.
Checkout Form
5 promptsGuest Checkout Form
6/30โจ What it does
ChatGPT builds a guest checkout form for [STORE] with email, address, and fake card fields as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout UX writer who keeps guest checkout short and honest. <context> Build a complete checkout form page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Contact, shipping, fake payment UI. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Cart summary (items, prices): [CART ITEMS] - Fields I truly need: [EMAIL, NAME, ADDRESS, CITY, POSTAL, COUNTRY] - Currency: [CURRENCY] - Create-account optional: [OPTIONAL CHECKBOX / HIDE] - Privacy line: [PRIVACY] </inputs> <task> Build the page: two-column desktop (form left, order summary right), stacked on mobile; guest email first; address fields from my list only; optional account checkbox only if I asked; fake card block labeled Demo only, no live charge with name, number, expiry, CVC that validate format locally; Place order button that simulates success on this file (in-page thank-you state or jump). Show a Demo checkout banner. Totals from constants. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Accessible labels, autocomplete hints, required markers. - Never POST a card to a server or a payment SDK. No Stripe, PayPal, or live keys. - Do not invent fees. Mark gaps as [VERIFY]. - No marketing hero. No plan comparison. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say which field to cut first if the form still feels long.
Pro tip: Keep guest checkout as the default. A forced account wall on step one is how carts die.
Address Plus Shipping
7/30โจ What it does
ChatGPT builds an address-and-shipping checkout for [STORE] that prices [SHIP METHODS] beside the cart as a working page you can open in the chat. You swap the copy, then publish.
You are a fulfillment-aware checkout designer who puts address and ship method on one screen. <context> Build a complete checkout page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Address, shipping radios, fake pay later on the same file or a second step. No real charges. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Cart items: [CART ITEMS] - Ship-to countries I support: [COUNTRIES] - Methods with price and days: [SHIP METHODS] - Currency: [CURRENCY] - Free-ship rule if any: [FREE OVER OR NONE] </inputs> <task> Build the page: address form; shipping method radios from [SHIP METHODS] only, each with price and delivery window; order summary that adds the selected ship price to the total; a Continue to payment button that reveals a fake card block on the same page. Recompute from labeled constants. If a country is outside [COUNTRIES], show a [VERIFY] cannot-ship note. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent carriers or overnight prices. - Accessible radios and labels. Mobile-first. - Fake payment only. No live charges. - No lorem ipsum. No plan tiers. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then show the total formula when shipping changes.
Pro tip: List every method you actually offer and the days. Shipping calculated at next step with no numbers trains people to bounce.
Fake Card Fields
8/30โจ What it does
ChatGPT builds a fake-card checkout for [PRODUCT] with labeled demo fields that never charge as a working page you can open in the chat. You swap the copy, then publish.
You are a payments-UI designer who builds card forms that look real and never charge. <context> Build a complete payment checkout page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Fake card UI only. No gateways. Not a landing page. Not a /pricing page. </context> <inputs> - Product or store: [PRODUCT] - Amount due: [AMOUNT] - Currency: [CURRENCY] - Order summary lines: [CART ITEMS] - Demo card hint I allow: [HINT LIKE 4242 OR NONE] - Success and fail demo toggles: [BOTH] </inputs> <task> Build the page: order summary; a card form (name, number, expiry, CVC, optional ZIP) with a persistent Demo only, no live charge banner; client-side format checks only; a Simulate payment button; a small demo control that routes to success or decline so I can screenshot both. Never talk to a network. Store [AMOUNT] in a labeled constant. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - No Stripe.js, no iframes to processors, no real PAN storage. - Accessible fields. Do not claim PCI certified. - Do not invent the amount. Mark gaps as [VERIFY]. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the demo states a designer should screenshot.
Pro tip: Put Demo only on the card block and the button. A realistic charge button with no disclaimer is how someone thinks they paid.
Express Pay Buttons
9/30โจ What it does
ChatGPT builds a checkout for [STORE] with fake Apple Pay, Google Pay, and PayPal buttons plus a card fallback as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout designer who shows express-pay choices as demo buttons, never live wallets. <context> Build a complete checkout page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Express-pay row, then fake card. No real charges. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Amount: [AMOUNT] - Wallets I want shown: [APPLE PAY / GOOGLE PAY / PAYPAL] - Cart summary: [CART ITEMS] - Currency: [CURRENCY] - Card fallback label: [OR PAY WITH CARD] </inputs> <task> Build the page: order summary; a Demo wallets band with buttons for only the wallets I listed, each labeled Simulate; clicking a wallet opens an in-page mock sheet (not a real wallet) that confirms or cancels; a divider; fake card fields; a demo banner on the whole payment column. No third-party wallet SDKs. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not load Apple, Google, or PayPal scripts. Do not invent fees per wallet. - Accessible buttons and mock sheet. Focus return on close. - Mobile-first, no lorem ipsum. - Keep this checkout, not a homepage. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say how a real team would swap a button later without changing the layout.
Pro tip: Label every wallet button Simulate. Live-looking wallet buttons that do nothing get reported as broken checkout.
Two Step Checkout
10/30โจ What it does
ChatGPT builds a two-step checkout for [STORE] that moves from [INFO] to fake payment with a progress bar as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout flow designer who keeps information and payment as two steps in one HTML file. <context> Build a complete two-step checkout as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Step 1 information, step 2 fake payment and review. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Step 1 fields: [INFO] - Cart items and prices: [CART ITEMS] - Shipping rule: [SHIP] - Currency: [CURRENCY] - Step labels: [INFORMATION / PAYMENT] </inputs> <task> Build the page: a 2-step progress control; step 1 collects [INFO] and Continue; step 2 shows a read-only recap, fake card UI, and Simulate payment; Back returns to step 1 with fields intact; order summary visible on both steps. Validate required fields before leaving step 1. Demo banner on payment. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not use a real multi-page route. Both steps live in this file. - Accessible step state (aria-current). Keyboard usable. - No live charges. No payment SDK. - Mobile-first, no lorem ipsum. No plan comparison. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the two fields that cause the most drop-off to watch.
Pro tip: Keep both steps on one file. A step 2 that is a new URL with no back control loses the address they just typed.
Order Review
5 promptsReview Before Pay
11/30โจ What it does
ChatGPT builds a review-before-pay page for [STORE] that restates [CART ITEMS], address, and ship method as a working page you can open in the chat. You swap the copy, then publish.
You are a trust designer who puts a last-look review between the form and the fake charge. <context> Build a complete order-review page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Recap, then fake pay. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Items: [CART ITEMS] - Ship-to address: [ADDRESS] - Ship method: [SHIP METHOD] - Total: [TOTAL] - Currency: [CURRENCY] - Edit links I want: [EDIT CART / EDIT ADDRESS] </inputs> <task> Build the page: slim progress (Review current); line items; address and method cards with Edit controls that expand inline editors or jump to in-page anchors; totals; a Pay [TOTAL] button that runs a Simulate payment success state; Demo only banner. Button amount must match the summary constant. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent a different total on the button. - Accessible headings. Mobile-first. No lorem ipsum. - No live charges. - Keep this a review screen, not a promo landing page. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then quote the one line that should match the receipt.
Pro tip: Repeat the total in the same words as the button (Pay $X). A mismatch between summary and button is a chargeback seed.
Tax Shipping Breakdown
12/30โจ What it does
ChatGPT builds an order-summary breakdown for [STORE] that lists subtotal, [TAX], [SHIP], and total as a working page you can open in the chat. You swap the copy, then publish.
You are a billing-clarity writer who itemizes tax and shipping on the order summary. <context> Build a complete order-review page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Itemized money. Fake pay CTA. No real charges. Not a landing page. Not a pricing-tier page. </context> <inputs> - Store: [STORE] - Line items: [CART ITEMS] - Tax name and amount or rate: [TAX] - Shipping name and amount: [SHIP] - Discounts if any: [DISCOUNT OR NONE] - Currency: [CURRENCY] - Tax disclaimer: [DISCLAIMER OR [VERIFY]] </inputs> <task> Build the page: items; a receipt-style stack (subtotal, discount, shipping, tax, total) using only numbers I gave or [VERIFY]; a short disclaimer; fake Place order button. If I gave a rate, show the math in a one-line note. Keep labels human (Shipping, not SHP01). </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not invent VAT rates or duties. - Mobile-first, semantic description list or table, no lorem ipsum. - No live charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then print the total recipe a bookkeeper can check.
Pro tip: Show the tax name you actually charge (VAT, sales tax). A single Fees line is how finance people stall the buy.
Edit From Review
13/30โจ What it does
ChatGPT builds an editable order review for [STORE] so [CART ITEMS] and [ADDRESS] can change before fake pay as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout engineer who lets people fix the order on the review screen without starting over. <context> Build a complete editable order-review page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Edit qty and address in place, then fake pay. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Items with prices: [CART ITEMS] - Address: [ADDRESS] - Ship methods: [SHIP METHODS] - Currency: [CURRENCY] </inputs> <task> Build the page: review cards with Edit / Done; qty steppers that update totals; address fields that toggle from read-only to inputs; ship radios that change the ship line; a locked summary while editing that unlocks on Done; Simulate payment only when not mid-edit. Constants drive money. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Totals must follow edits. No stale Pay $X. - Accessible toggle between read and edit. - No live charges. Do not invent ship prices. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say what you lock while a card is in edit mode.
Pro tip: Recalculate the total when qty or shipping changes. A frozen total after they cut a line is a lie.
Recurring Order Review
14/30โจ What it does
ChatGPT builds a recurring-order review for [PLAN] that states [CADENCE], [NEXT CHARGE], and how to cancel as a working page you can open in the chat. You swap the copy, then publish.
You are a subscription checkout writer who puts cadence and cancel rules on the review screen. <context> Build a complete recurring order-review page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. One plan, trial if I gave one, fake pay. No real charges. Not a /pricing page with three tiers. Not a landing page. </context> <inputs> - Product and plan name: [PLAN] - Price and cadence: [CADENCE] - Next charge date I can state: [NEXT CHARGE] - Trial if any: [TRIAL OR NONE] - Cancel path I can keep: [CANCEL PATH] - Currency: [CURRENCY] - What renews: [WHAT RENEWS] </inputs> <task> Build the page: plan recap; a Today versus renews on [NEXT CHARGE] pair; [WHAT RENEWS] list; [CANCEL PATH] in plain words; fake card or Simulate start subscription; Demo only banner. If I did not give a next date, write [VERIFY], do not invent one. Do not add extra plans. </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not invent a second tier or an annual discount. - Mobile-first, semantic HTML, no lorem ipsum. - No live charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then quote the renew sentence a chargeback analyst would want.
Pro tip: Write the next charge date and the cancel path on this screen. A subscription review that only says then $X/mo gets disputes.
Sidebar Order Summary
15/30โจ What it does
ChatGPT builds a checkout layout for [STORE] with a sticky sidebar of [CART ITEMS] beside the form as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout layout designer who keeps the order summary sticky beside the form. <context> Build a complete checkout-plus-summary page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Form plus sticky summary. Fake payment. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Items: [CART ITEMS] - Form fields: [EMAIL, ADDRESS, FAKE CARD] - Currency: [CURRENCY] - Promo field: [YES / NO] </inputs> <task> Build the page: left (or first on mobile) checkout form including fake card; right sticky summary with thumbnails, names, qty, line prices, subtotal, optional promo, total; on a phone the summary is a collapsible Order summary $X drawer above the form. Simulate payment on submit. Demo banner. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Sticky summary must not cover the pay button on a short laptop window. - Do not invent items. Mark gaps as [VERIFY]. - No live charges. No payment SDK. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then describe the mobile summary behavior in three bullets.
Pro tip: Keep the sidebar total visible while they type. A summary that scrolls away on a laptop is why people under-check the bill.
Like these prompts? There are full tutorials behind them.
Learn the workflows, not just the prompts. 300+ easy-to-follow tutorials inside AI Academy โ and growing every week.
Upsell
5 promptsCart Add On Offer
16/30โจ What it does
ChatGPT builds a cart page for [STORE] that offers [ADD-ON] next to [CART ITEMS] as a working page you can open in the chat. You swap the copy, then publish.
You are a merchandiser who puts one add-on on the cart without burying the checkout button. <context> Build a complete cart-with-upsell page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Cart first, one add-on, then checkout. Fake money. Not a landing page. Not a pricing-tier page. </context> <inputs> - Store: [STORE] - Cart items: [CART ITEMS] - Add-on name, price, why it fits: [ADD-ON] - Who should skip it: [SKIP RULE] - Currency: [CURRENCY] </inputs> <task> Build the page: cart lines; a single add-on card with Add / Added toggle that updates the total; a one-line [SKIP RULE]; checkout CTA that stays visible. Only one offer. Constants for prices. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not stack three upsells. Do not invent a bundle I did not name. - Accessible toggle. Mobile-first. No lorem ipsum. - No real charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say where the add-on should sit so it does not hide Pay.
Pro tip: Price the add-on in the same currency and show the new total if they accept. A maybe later tile with no price is decoration.
Checkout Order Bump
17/30โจ What it does
ChatGPT builds a checkout form for [STORE] with a one-checkbox [BUMP] that updates the fake total as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout CRO designer who adds a single honest order bump, never a pre-ticked fee. <context> Build a complete checkout page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Form, one bump checkbox, fake pay. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Cart items: [CART ITEMS] - Bump name, price, one benefit: [BUMP] - Currency: [CURRENCY] - Checkbox default: [UNCHECKED] </inputs> <task> Build the page: checkout fields and fake card; a highlighted bump row with an unchecked checkbox, name, price, one benefit; total updates when checked; Simulate payment uses the live total. Never pre-check the box. Show Demo only. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Default unchecked. Do not hide the price. - Accessible label on the checkbox. Mobile-first. - No live charges. No extra bumps. - No lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say how you avoided a dark-pattern default.
Pro tip: One checkbox, one price, pre-unchecked. A pre-ticked bump is a dark pattern and a refund machine.
Post Pay Upsell
18/30โจ What it does
ChatGPT builds a post-pay upsell page for [PRODUCT] that offers [UPSELL] after a fake success as a working page you can open in the chat. You swap the copy, then publish.
You are a post-purchase designer who offers one upsell after a simulated payment, then lets people skip. <context> Build a complete post-pay upsell page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Fake first charge already done, one extra offer, skip to thank you. No real charges. Not a landing page. Not a pricing page. </context> <inputs> - First order recap: [PRODUCT] - Upsell name, price, why now: [UPSELL] - Decline label: [NO THANKS] - Currency: [CURRENCY] - What skip does: [GO TO THANK YOU] </inputs> <task> Build the page: a short Order received (demo) banner; one upsell card; Add this (simulate second demo) and a visible [NO THANKS] that shows the thank-you state; no countdown traps unless I gave a real deadline. Both paths stay in this file. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Skip is a real button, not a tiny text link only. - Do not invent scarcity timers. Mark gaps as [VERIFY]. - No live charges. No extra offers. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the two exit paths a reviewer should click.
Pro tip: Make No thanks as easy as the upsell button. A trapped interstitial with no skip is how people charge back the first order too.
Bundle Upgrade Offer
19/30โจ What it does
ChatGPT builds a checkout upsell for [STORE] that offers to upgrade [CART ITEMS] into [BUNDLE] as a working page you can open in the chat. You swap the copy, then publish.
You are a packaging designer who offers a bundle upgrade on checkout with both totals visible. <context> Build a complete checkout-upgrade page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Current cart versus [BUNDLE]. Fake pay. No real charges. Not a /pricing comparison of plans. Not a landing page. </context> <inputs> - Store: [STORE] - Current items and total: [CART ITEMS] - Bundle name, contents, price: [BUNDLE] - Savings I can prove: [SAVINGS OR COMPUTE] - Currency: [CURRENCY] </inputs> <task> Build the page: current order list; an upgrade card that lists what they gain, both totals, and Keep this cart versus Upgrade to [BUNDLE]; switching updates the summary; fake pay on the chosen total. Compute savings only from constants. If I did not give both prices, show [VERIFY]. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent bundle contents. Do not hide the original cart. - Accessible choice (radio or two buttons). Mobile-first. - No live charges. - No lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then print the savings math.
Pro tip: Show before and after totals. Upgrade with no math feels like a bait swap.
Warranty Protection Offer
20/30โจ What it does
ChatGPT builds a checkout page for [STORE] that offers [WARRANTY] on [CART ITEMS] with an honest skip as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout writer who offers optional protection without scare copy. <context> Build a complete checkout page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Optional [WARRANTY], fake pay. No real charges. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Items: [CART ITEMS] - Warranty name, price, term, what is covered: [WARRANTY] - What is not covered: [EXCLUSIONS] - Currency: [CURRENCY] </inputs> <task> Build the page: checkout plus summary; a calm protection offer with term, cover, exclusions, price; Add / No protection; total updates; no fear photos or broken-device scare. Simulate payment. Demo banner. Default is no protection. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent legal cover. Mark unknown terms as [VERIFY]. - Default off. Accessible choice. - No live charges. Mobile-first. No lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then quote the one cover sentence that must stay honest.
Pro tip: Say what the warranty covers and for how long. Protection for $X with no term is how people feel tricked at the door.
Failed Payment
5 promptsCard Declined Screen
21/30โจ What it does
ChatGPT builds a card-declined checkout screen for [STORE] that restates [AMOUNT] and offers a retry as a working page you can open in the chat. You swap the copy, then publish.
You are a recovery designer who writes declined-card screens that get a second try. <context> Build a complete failed-payment page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Decline state, same cart, fake retry. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Amount still due: [AMOUNT] - Cart recap: [CART ITEMS] - Decline reason I can show: [GENERIC DECLINE / DO NOT RETRY BANK] - Retry CTA: [TRY ANOTHER CARD] - Currency: [CURRENCY] </inputs> <task> Build the page: clear declined headline; [AMOUNT] still due; cart still listed; short why from [GENERIC DECLINE / DO NOT RETRY BANK] without blaming the buyer; fake card fields reset; Simulate retry that can succeed on a second demo click; a keep cart / contact support link. Demo banner. No alarmist red walls. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent a bank name or a fraud accusation. - Accessible error summary. Mobile-first. No lorem ipsum. - No live charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say which line to show if the bank said do not retry.
Pro tip: Say the card was declined and keep the cart. A generic Something went wrong with no retry is a lost order.
Retry Payment Method
22/30โจ What it does
ChatGPT builds a failed-pay retry page for [STORE] that lets them pick [METHODS] after a decline as a working page you can open in the chat. You swap the copy, then publish.
You are a payments UX designer who routes a decline to another demo method on the same order. <context> Build a complete retry-method page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Same [AMOUNT], new method. Fake only. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Amount: [AMOUNT] - Failed method: [FAILED METHOD] - Other methods I can show: [METHODS] - Cart recap: [CART ITEMS] - Currency: [CURRENCY] </inputs> <task> Build the page: order still reserved (demo copy); [FAILED METHOD] marked declined; radios or buttons for [METHODS] only; matching fake fields (card, or a Simulate wallet sheet); total unchanged; Demo only. Do not add a method I did not list. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - No live wallets or processors. - Accessible method list. Mobile-first. No lorem ipsum. - Do not change the total. Mark gaps as [VERIFY]. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the method order you used and why.
Pro tip: Offer a second method on the same total. Retry the same dead card as the only button wastes the attempt.
Insufficient Funds
23/30โจ What it does
ChatGPT builds an insufficient-funds retry page for [STORE] that keeps [CART ITEMS] and suggests [SPLIT OR RETRY] as a working page you can open in the chat. You swap the copy, then publish.
You are a support-minded checkout writer who explains insufficient funds without shame. <context> Build a complete insufficient-funds page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Honest reason, same cart, fake retry. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Amount: [AMOUNT] - Items: [CART ITEMS] - Suggestion I allow: [SPLIT OR RETRY] - Currency: [CURRENCY] - Support contact: [SUPPORT OR NONE] </inputs> <task> Build the page: headline that names insufficient funds and [AMOUNT]; cart recap; one suggestion from [SPLIT OR RETRY] (if split, only describe it if I explained how; otherwise retry another card); fake card retry; optional support line. Calm tone. Demo banner. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent a pay-in-3 product I did not name. - Accessible error. Mobile-first. No lorem ipsum. - No live charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then quote the one sentence that stays kind.
Pro tip: Be specific and kind. Your card did not have enough for $X is clearer than Transaction failed.
Expired Card Retry
24/30โจ What it does
ChatGPT builds an expired-card retry page for [STORE] that highlights expiry fields on the same [AMOUNT] as a working page you can open in the chat. You swap the copy, then publish.
You are a checkout designer who recovers expired-card failures by focusing the expiry fields. <context> Build a complete expired-card page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Same order, fake update. No real charges. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Amount: [AMOUNT] - Last four if I have them: [LAST FOUR OR NONE] - Cart recap: [CART ITEMS] - Currency: [CURRENCY] </inputs> <task> Build the page: expired-card headline; masked card using [LAST FOUR OR NONE] or a [VERIFY] slot; expiry and CVC (and number if last four is missing) as the loud fields; Simulate update and pay; cart and total unchanged. Inline error if demo expiry is in the past. Demo banner. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not invent a full PAN. Do not store a real card. - Accessible labels. Mobile-first. No lorem ipsum. - No live charges. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say which field gets focus on load.
Pro tip: Prefill the last four if you have them and focus expiry. A blank new-card form makes people think the order vanished.
Auth Challenge Failed
25/30โจ What it does
ChatGPT builds a 3D Secure style failed-auth page for [STORE] that explains [AUTH FAIL] and offers a retry as a working page you can open in the chat. You swap the copy, then publish.
You are a payments UX writer who explains a failed bank authentication challenge in plain words. <context> Build a complete failed-auth page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Mock 3D Secure style sheet that already failed, then retry. No real charges. Not a landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Amount: [AMOUNT] - Fail reason I can state: [AUTH FAIL] - Cart recap: [CART ITEMS] - Currency: [CURRENCY] - Other method if any: [OTHER METHOD OR CARD RETRY] </inputs> <task> Build the page: a mock bank-challenge overlay already in a failed state (demo bank name generic, not a real bank logo unless I named one); plain-language [AUTH FAIL]; Try again (reopens a short demo challenge that can succeed) and Use [OTHER METHOD OR CARD RETRY]; cart preserved. Never contact a real ACS. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Do not impersonate a real bank brand I did not name. - Accessible overlay. Focus trap while open. - No live charges. No 3DS SDK. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then write the one sentence that tells them it was the bank check, not a lost cart.
Pro tip: Say the bank challenge did not finish. Authentication failed alone makes people retry the same loop forever.
Go from copy-pasting to actually mastering AI.
AI Academy: 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ other tools. New tutorials added every week.
Thank You
5 promptsOrder Confirmation
26/30โจ What it does
ChatGPT builds an order-confirmation page for [STORE] with [ORDER ID], item list, and next steps as a working page you can open in the chat. You swap the copy, then publish.
You are a post-purchase designer who builds confirmation pages people can forward to themselves. <context> Build a complete thank-you page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Confirmation only. Not a landing page. Not a /pricing page. Payment on this file is already a demo success. </context> <inputs> - Store: [STORE] - Order id format: [ORDER ID] - Items and total: [CART ITEMS] - Email the receipt goes to: [EMAIL] - What happens next: [NEXT STEPS] - Currency: [CURRENCY] </inputs> <task> Build the page: Thank you headline; [ORDER ID] as a sample like ORD-1001 (label it sample); item table; total; [EMAIL] line; numbered [NEXT STEPS]; a Demo order, no live charge note; optional print-friendly styles. Do not invent a tracking number. </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not invent courier tracking or delivery dates I did not give. Use [VERIFY]. - Mobile-first, semantic HTML, no lorem ipsum. - No second sales landing layout. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the three facts a buyer will screenshot.
Pro tip: Put the order id and the email you will write above the fold. A pretty thanks with no id is a support inbox.
Digital Download Thanks
27/30โจ What it does
ChatGPT builds a digital-delivery thank-you page for [PRODUCT] with a download slot, [ORDER ID], and help as a working page you can open in the chat. You swap the copy, then publish.
You are a digital-goods designer who builds thank-you pages that get the file to the buyer. <context> Build a complete digital thank-you page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Demo purchase already done. Not a landing page. Not a pricing page. </context> <inputs> - Product name and file type: [PRODUCT] - Order id: [ORDER ID] - Delivery: [INSTANT BUTTON / EMAIL LINK] - License or use note: [LICENSE OR NONE] - Help email: [HELP] - Sample filename: [FILENAME] </inputs> <task> Build the page: success headline; [ORDER ID]; a download button or email-link honesty from [INSTANT BUTTON / EMAIL LINK] (if instant, point at a placeholder [FILENAME], do not invent a real CDN); [LICENSE OR NONE]; what to do if the file fails; [HELP]. Demo purchase banner. </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not claim an instant file if I said email link. - Do not invent license terms. Mark [VERIFY]. - Mobile-first, no lorem ipsum. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say which line to swap the hour the real file URL exists.
Pro tip: Say when the file is ready (now, after email). A Download button that 404s is worse than a honest We emailed the link.
Create Account Thanks
28/30โจ What it does
ChatGPT builds a thank-you page for [STORE] that confirms [ORDER ID] and offers an optional account from [EMAIL] as a working page you can open in the chat. You swap the copy, then publish.
You are a post-purchase designer who offers an optional account after the receipt is visible. <context> Build a complete thank-you page as one self-contained HTML file with inline CSS and vanilla JS, returned as a working page I can open in the chat. Receipt first, optional account second. Not a signup landing page. Not a /pricing page. </context> <inputs> - Store: [STORE] - Order id: [ORDER ID] - Items: [CART ITEMS] - Prefill email: [EMAIL] - Why create an account: [TRACK ORDER / REORDER] - Skip label: [NO THANKS, I HAVE THE RECEIPT] </inputs> <task> Build the page: confirmation block first (id, items, total); then an optional create-account card with password fields and [TRACK ORDER / REORDER]; a clear [NO THANKS, I HAVE THE RECEIPT] that hides the form and keeps the receipt; demo-only note. Do not block the receipt behind the form. </task> <constraints> - One self-contained, responsive HTML file; Google Fonts only plus vanilla JS. - Account is optional. Receipt is not gated. - Accessible fields. Mobile-first. No lorem ipsum. - No live charges. No invented loyalty points. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then say how you kept the receipt above the fold.
Pro tip: Make account creation optional and after the receipt. A forced password wall before they see the order id feels like a bait.
Subscription Started
29/30โจ What it does
ChatGPT builds a subscription-started thank-you page for [PLAN] with [CADENCE], [NEXT CHARGE], and manage-billing steps as a working page you can open in the chat. You swap the copy, then publish.
You are a subscription onboarding writer who confirms what just started and when it renews. <context> Build a complete subscription thank-you page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Plan started (demo). Not a /pricing page with other tiers. Not a marketing landing page. </context> <inputs> - Plan: [PLAN] - Cadence and price: [CADENCE] - Next charge: [NEXT CHARGE] - What they can do today: [FIRST STEPS] - Where to cancel or update card: [MANAGE URL OR PLACEHOLDER] - Currency: [CURRENCY] </inputs> <task> Build the page: You are in headline; plan tile; [CADENCE] and [NEXT CHARGE]; [FIRST STEPS] as 3 numbered actions; manage-billing link placeholder; Demo subscription, no live charge. If a date is missing, [VERIFY]. Do not upsell a second plan on this screen. </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not invent a next charge date. - Mobile-first, semantic HTML, no lorem ipsum. - No live charges. No extra plan cards. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then quote the renew line finance will keep.
Pro tip: Repeat cadence and next charge on the thank-you page, not only in email. People forward this tab to finance.
Shipping Next Steps
30/30โจ What it does
ChatGPT builds a shipping thank-you page for [STORE] with [ORDER ID], [SHIP WINDOW], and a tracking slot as a working page you can open in the chat. You swap the copy, then publish.
You are a fulfillment writer who sets honest shipping expectations on the thank-you page. <context> Build a complete shipping thank-you page as one self-contained HTML file with inline CSS, returned as a working page I can open in the chat. Physical order, demo pay already done. Not a landing page. Not a pricing page. </context> <inputs> - Store: [STORE] - Order id: [ORDER ID] - Items: [CART ITEMS] - Ship-to city or country: [SHIP TO] - Window I can keep: [SHIP WINDOW] - Tracking status: [NOT YET / SAMPLE LINK] - Support: [SUPPORT] </inputs> <task> Build the page: thanks; [ORDER ID]; ship-to; [SHIP WINDOW]; a tracking slot that says not created yet unless I gave [SAMPLE LINK]; packing next-steps; [SUPPORT]. No fake courier logos. Demo order banner. </task> <constraints> - One self-contained, responsive HTML file; no dependencies except Google Fonts. - Do not invent a tracking number or a Tuesday 10am delivery. - Mobile-first, no lorem ipsum. - No live charges. No leftover upsell grid. </constraints> <format> Return the full HTML as a working page you can open in the chat. If Canvas is available, put the file there. Then list the two lines to swap when the real tracker exists.
Pro tip: Give a window, not a fake tracking number. Tracking appears tomorrow trains people to refresh a 404.
Free tool
Prompt Optimizer
Turn a rough idea into a structured, professional AI prompt.
Frequently Asked Questions
Prompts are the starting line. Tutorials are the finish.
A growing library of 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ AI tools. New tutorials added every week.
7-day free trial. Cancel anytime.
Related guides