# Complete Checkout Flow

A two-page setup: a product page that adds to cart and redirects to a dedicated checkout page.

## What You'll Build

- Product page with cart and checkout redirect
- Dedicated checkout page that loads by URL parameter

## Page 1: Product Page

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Product Page</title>

  <script
    defer
    data-liquid-commerce-elements
    data-token="YOUR_API_KEY"
    data-env="production"
    data-container-1="product"
    data-product-1="00619947000020"
    data-cart-badge-button="header-cart"
    data-checkout-url="https://yoursite.com/checkout?lce_checkout={token}"
    type="text/javascript"
    src="https://elements.reservebar-worker.workers.dev/all/elements.js"
  ></script>
</head>
<body>
  <header>
    <h1>Premium Spirits</h1>
    <div id="header-cart"></div>
  </header>

  <main>
    <div id="product"></div>
  </main>
</body>
</html>
```

When users click checkout, the cart redirects to your hosted checkout page with a `lce_checkout` ID in the URL.

## Page 2: Checkout Page

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Checkout</title>

  <script
    defer
    data-liquid-commerce-elements
    data-token="YOUR_API_KEY"
    data-env="production"
    data-checkout-param="lce_checkout"
    type="text/javascript"
    src="https://elements.reservebar-worker.workers.dev/all/elements.js"
  ></script>
</head>
<body>
  <div data-lce-checkout></div>
</body>
</html>
```

## Optional: Skip Cart and Go Directly to Checkout

```javascript
await window.LiquidCommerce.elements.actions.checkout.addProduct([
  {
    identifier: '00619947000020',
    fulfillmentType: 'shipping',
    quantity: 1
  }
], true);
```

## Related Docs

- [Checkout Component](../guides/checkout-component.md)
- [Cart Component](../guides/cart-component.md)
- [Client API](../api/client.md)
