Serve the checkout on your own domain

One CNAME puts the checkout on checkout.yourstore.com, with a certificate issued for you. Why it has to be a subdomain, what to add at your DNS provider, and what the domain serves.

Why a subdomain of your storefront

Without a domain of its own, a store's checkout runs on the platform address. With one, buyers stay on your brand from cart to receipt, and one more thing works: the attribution cookie. The theme snippet writes _wc_attr on your storefront's root domain (.yourstore.com), so a checkout on checkout.yourstore.com can read the click ids captured on the storefront and attach them to the order. A checkout on an unrelated domain could not.

That is why the domain must be a subdomain of the storefront's root domain. Domains warns when it is not, and refuses myshopify.com hosts (Shopify owns those) and platform hosts.

Pick the name

Open the store's Domains page and choose Use your own domain. Enter the domain customers buy from (yourstore.com) and pick the first label: checkout, pay or secure. The page shows the composed host before you save; checkout.yourstore.com is the convention buyers recognise.

Saving normalises the value (lowercase, no scheme or path) and adds it to Sable's Vercel project. Nothing else is touched: Sable never logs into your DNS provider.

Add the DNS record

Once saved, a table lists exactly the records Vercel asks for. Nothing in it is invented: the values come from Vercel's API for this project.

RecordWhen it appearsWhat to enter
CNAMEAlways, for a subdomainName: the first label (checkout). Value: the target shown on the page. Some providers want the full host name in the Name field; use checkout.yourstore.com then.
AOnly for an apex domainAn apex cannot carry a CNAME, so Vercel lists IP addresses instead. Sable expects a subdomain, so you will normally never see this.
TXT _vercelOnly when Vercel asks for ownership proofAdd it exactly as shown. It is needed once and can stay.
  • Cloudflare: keep the record DNS only (grey cloud). A proxied record hides the host from Vercel's certificate check.
  • GoDaddy: it adds the trailing dot to the target itself; either form is accepted.
  • Check from a terminal with dig +short CNAME checkout.yourstore.com. It must print the target from the table.

Wait, then check

A new record is usually visible within minutes, occasionally an hour, and up to 48 hours for a changed record with an old TTL. Press Check again on Domains to re-read the status:

StatusMeaning
Not connectedNo domain saved, or the domain is not on the Vercel project yet.
Waiting for DNSThe record has not resolved yet. Nothing to do but wait and check again.
Needs verificationVercel wants the _vercel TXT record before it will serve the domain.
ConnectedDNS is correct. Vercel serves the domain and manages its certificate.
MisconfiguredThe domain resolves somewhere else. Compare the record with the table.
Check failedVercel's API could not be reached. The last known status stands; try again later.

The certificate is issued by Vercel the moment the record resolves. There is nothing to upload or renew.

Until the record resolves the checkout cannot be reached at the new host, and the snippet fails open: checkout clicks go to Shopify's own checkout. Set the domain when you can finish the DNS step in the same sitting.

What the domain serves

A checkout domain is deliberately narrow. On it Sable answers only:

  • /c/<token>: the checkout.
  • /thank-you/<order>: the receipt.
  • /s/<store key>: the theme snippet.
  • /api/handoff and /api/checkout/*: the calls the snippet and the checkout make.

The dashboard, the webhook endpoints and every other API path answer 404 on it, so a checkout domain never exposes the dashboard. Any other path, the root included, sends the visitor to your storefront. Webhook URLs stay on the platform host, so nothing you registered with Whop or Shopify changes.

Every link a shopper receives is built from the checkout domain once it is set: the hand-off URL the snippet gets, the redirect after payment and the thank-you link.

After it connects

  • Whop dashboard → Settings → Checkout: add the same domain as the payment domain, so Apple Pay works in the embedded checkout.
  • Connections shows the script tag with the new host. The tag you already pasted keeps working, because the script it loads always sends shoppers to the current checkout domain, but copying the new one keeps the theme consistent.
  • To go back, choose Use our address on Domains. The store's checkout runs on the platform address again; the domain stays on the Vercel project until it is removed there.

Questions people ask

Can the checkout run on my apex domain (yourstore.com)?

No, and you would not want it to: the apex is your storefront. The domain form composes a subdomain, and validation requires one.

Do I need my own Vercel account?

No. The domain is added to Sable's Vercel project through the API; you only create the DNS record at your registrar.

Does the checkout still work while DNS propagates?

Not at the new host. Clicks fail open to Shopify's own checkout until the record resolves, then Sable's checkout takes over without another change.

What about www?

Storefront origins accept both https://yourstore.com and https://www.yourstore.com; list every origin shoppers use. The checkout domain itself is a single host.

Set it up on your own store

Connect Shopify, connect Whop, add one script tag. If it is not for you, removing the tag puts Shopify's checkout back.