Back to docs
Publishing Your Pages

Shopify + GoDaddy Setup

How to configure Flint when your domain is registered on GoDaddy and your store is hosted on Shopify — covering both subdomain and subpath deployments via Cloudflare's Orange-to-Orange (O2O) routing.

Overview

This guide covers the setup for merchants whose domain is registered on GoDaddy and whose storefront is hosted on Shopify.

The recommended approach involves bringing your domain into Cloudflare as a free intermediary layer. This unlocks Orange-to-Orange (O2O) routing — a Cloudflare feature specifically designed for Shopify merchants — which lets your own Cloudflare zone apply its settings to traffic before it passes through Shopify's Cloudflare zone.

Flint pages can be served in two ways:

  • Subdomain (e.g., pages.yourdomain.com) — a separate hostname pointing to Flint via a DNS-only CNAME record
  • Subpath (e.g., yourdomain.com/lp) — a path on your root domain, routed to Flint via a Cloudflare Worker

Both approaches require Cloudflare to be managing your domain. The subdomain approach is simpler to set up. The subpath approach keeps everything under one domain, which can benefit SEO and brand consistency.

Shopify continues to handle your store and checkout normally in either case.

What is Orange-to-Orange (O2O)?

Orange-to-Orange (O2O) is a Cloudflare routing configuration where traffic flows through two separate Cloudflare zones in sequence:

  1. 1.Your zone (customer-owned) — applies your own Cloudflare settings first
  2. 2.Shopify's zone (SaaS provider) — applies Shopify's Cloudflare settings second

This is made possible by creating a proxied CNAME record in your Cloudflare zone that points to shops.myshopify.com. The "orange cloud" (proxied) status on that record is what activates O2O — hence the name.

Without O2O, only Shopify's Cloudflare zone is involved and you have no ability to customise how Cloudflare treats your traffic. With O2O, your zone runs first, giving you control over caching, Workers, redirect rules, and more — while Shopify continues to handle your store normally.

Cloudflare has purpose-built O2O support for Shopify merchants. For full details, refer to the Cloudflare Shopify provider guide.

Prerequisites

  • A domain registered on GoDaddy (e.g., yourdomain.com)
  • A Shopify store with that custom domain connected
  • A Cloudflare account (the free plan is sufficient for subdomains; the Workers Paid plan is required for subpath routing)
  • Your Flint subdomain (contact the Flint team if you do not know this value)

Step 1: Add Your Domain to Cloudflare

1.1 Create a free Cloudflare account at cloudflare.com if you do not already have one.

1.2 Add your domain to Cloudflare

In your Cloudflare dashboard, click Add a domain and enter your domain (e.g., yourdomain.com). Cloudflare will scan your existing DNS records and import them.

1.3 Select a plan

Choose the Free plan if you are using the subdomain approach. If you plan to use subpath routing via Cloudflare Workers, you will need the Workers Paid plan.

1.4 Update your nameservers on GoDaddy

Cloudflare will display two nameserver addresses (e.g., ana.ns.cloudflare.com and bob.ns.cloudflare.com). You need to replace GoDaddy's nameservers with these values:

  1. 1.Log in to your GoDaddy account
  2. 2.Go to My Products and find your domain
  3. 3.Click DNS then Nameservers
  4. 4.Choose Enter my own nameservers and enter the two Cloudflare nameservers
  5. 5.Save and confirm

Nameserver propagation typically takes a few minutes to a few hours. Cloudflare will email you once your domain is active.

Step 2: Enable O2O Routing for Shopify

Once your domain is active on Cloudflare, create a proxied CNAME record to point your root domain at Shopify. This activates O2O.

In your Cloudflare dashboard, go to DNS > Records and create the following record:

TypeNameTargetProxy status
CNAMEyourdomain.comshops.myshopify.comProxied (orange cloud)

Set the Name field to your root domain (or @ as a shorthand). The Proxy status must be set to Proxied (orange cloud icon) — this is what enables O2O.

Once saved, Cloudflare will display a Shopify icon next to the CNAME record to confirm O2O is active.

Important: Do not enable Always Use HTTPS in Cloudflare. This setting interferes with Shopify's SSL certificate provisioning via Let's Encrypt. Instead, create a redirect rule to enforce HTTPS while excluding the /.well-known/acme-challenge/* path.

Option A: Subdomain Routing

The subdomain approach serves Flint pages on a separate hostname (e.g., pages.yourdomain.com). It is the simpler of the two options and works on Cloudflare's free plan.

Add a CNAME record for your subdomain

In your Cloudflare dashboard, go to DNS > Records and add a new record:

TypeNameTargetProxy status
CNAMEpages[your-flint-subdomain].tryflint.comDNS only (grey cloud)

Replace pages with your preferred subdomain prefix (e.g., go, lp, or pages) and replace [your-flint-subdomain] with the value provided by the Flint team.

Set the Proxy status to DNS only (grey cloud) for this record — Flint handles its own SSL and does not require Cloudflare proxying on the subdomain.

Share your chosen subdomain (e.g., pages.yourdomain.com) with the Flint team so they can configure routing on the Flint side. Once confirmed, your Flint pages will be live at that subdomain.

How traffic flows

Visitor request → Flint's infrastructure (direct, bypasses both Cloudflare zones)

Flint pages are served directly from Flint's CDN via the DNS-only CNAME record.

Option B: Subpath Routing

The subpath approach serves Flint pages under a path on your root domain (e.g., yourdomain.com/lp). This keeps all traffic under one domain but requires a Cloudflare Worker to proxy requests to Flint.

Requirements

  • Cloudflare Workers Paid plan (includes 10 million requests/month)
  • O2O must already be active (Step 2 above)

Create a Cloudflare Worker

In your Cloudflare dashboard, go to Workers & Pages > Create and create a new Worker. Replace the default script with the following:

js
export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const flintBase = "https://[your-flint-subdomain].tryflint.com";

    // Strip the subpath prefix before forwarding to Flint
    url.hostname = new URL(flintBase).hostname;
    url.pathname = url.pathname.replace(/^\/lp/, "") || "/";

    return fetch(new Request(url.toString(), request));
  }
};

Replace /lp with your chosen subpath prefix and [your-flint-subdomain] with the value provided by the Flint team.

Add a Worker route

Once the Worker is deployed, go to Workers & Pages > [your worker] > Settings > Triggers > Routes and add a route:

text
yourdomain.com/lp*

This tells Cloudflare to send all requests matching yourdomain.com/lp* to your Worker, which proxies them to Flint.

Share your chosen subpath (e.g., yourdomain.com/lp) with the Flint team so they can configure routing on the Flint side.

How traffic flows

Visitor request to yourdomain.com/lp/* → Your Cloudflare zone (Worker intercepts) → Worker proxies to Flint's infrastructure

All other traffic to yourdomain.com continues through the O2O path to Shopify as normal.

Which Option Should I Use?

SubdomainSubpath
Example URLpages.yourdomain.comyourdomain.com/lp
Cloudflare planFreeWorkers Paid
Setup complexitySimpleModerate
SEO benefitSeparate domain authoritySame domain authority
SSLManaged by FlintManaged by Flint
Best forMost merchantsMerchants prioritising domain consolidation

For most merchants, subdomains are the right choice. They are easier to configure, work on the free Cloudflare plan, and Flint fully manages SSL. Choose subpath routing only if keeping all marketing pages under your root domain is a priority for your SEO or brand strategy.

Caveats and Known Limitations

  • Workers and Snippets are disabled on /checkout when O2O is active with Shopify. Cloudflare intentionally restricts this path to protect checkout integrity.
  • Subpath Worker scope: Take care that your Worker route does not accidentally match Shopify paths. Use a specific prefix (e.g., /lp) that does not conflict with Shopify's URL structure (/products, /collections, /cart, /checkout, etc.).
  • Zone hold (Enterprise only): If your Cloudflare zone has zone hold enabled, it will block Shopify from activating your custom hostname. You will need to temporarily release the hold — or, if using a subdomain only, disable the Also prevent Subdomains sub-feature — before Shopify can provision the custom hostname.
  • DNS CAA records: Shopify may require specific CAA record configuration. Refer to Shopify's domain considerations for details.
  • Propagation time: After updating nameservers on GoDaddy, allow up to 24 hours for full DNS propagation globally, though it typically resolves within an hour.