# 8. Publishing, Domains & Export

This chapter covers how to take a generated page from preview to a live URL on the public web. It also covers custom domains, SSL, exporting your pages, and unpublishing.

## Publishing a page

Once you're happy with the preview, click **Deploy** on the page screen.

What happens:

1. HypaSites makes sure your page has a unique subdomain (auto-generates one from the page name if you haven't set one).
2. We inject a tiny analytics snippet into the page so views and clicks are tracked.
3. The HTML is uploaded to our hosting infrastructure (Netlify).
4. We provision an SSL certificate.
5. Within about 30 seconds, your page is live.

You'll see the **Status** badge flip to **Live** and a copyable public URL appear.

The page now has two URLs:

* **Primary URL** — Your custom domain URL (if your project has one attached and verified). Example: `https://launch.acme.com`.
* **HypaSites fallback URL** — Always available, always works: `https://[subdomain].hypasites.com`. Example: `https://launch-pro.hypasites.com`.

Both URLs always resolve to the same page. If your custom domain has DNS issues, the HypaSites URL keeps working as a fallback.

## Republishing after edits

If you edit a live page (Chapter 7), the live version doesn't update automatically. The page status changes to **Edited** and the **Deploy** button changes to **Republish**.

Click **Republish** to push the latest version live. Visitors see the new version on next page load.

You can keep editing privately as long as you want — until you republish, the live version stays the same.

## Custom domains

By default, all pages publish to a HypaSites subdomain (`yourpage.hypasites.com`). To use your own domain, attach it at the project level — then every page in that project automatically uses it.

### Setting up a custom domain

1. Go to **Dashboard → Domains** to see all projects and their domain status, or open a project directly.
2. In the project's **Domain Settings** section, enter your domain. You have two options:
   * **Subdomain** (recommended): something like `landing.yourbusiness.com` or `go.yourbusiness.com`.
   * **Root domain**: `yourbusiness.com` (works, but generally use a subdomain if you have an existing site at the root).
3. Click **Save**.
4. HypaSites shows the DNS records you need to add at your domain registrar:
   * For a subdomain: usually a single **CNAME** record pointing to our infrastructure.
   * For a root domain: an **A** record pointing to our IP.
5. Add the DNS records at your registrar (GoDaddy, Cloudflare, Namecheap, etc.). DNS changes can take from a few minutes to a few hours to propagate.
6. Return to HypaSites. The **Domains** screen polls automatically and updates the verification status.

Once the domain shows **Verified**, SSL provisioning starts automatically. SSL is provided by Let's Encrypt and is free. Provisioning typically takes a few minutes.

### How pages map to subdomains

When you publish a page, its subdomain slug determines the URL. Two patterns are supported:

* **Subdomain mode** (default): each page gets its own subdomain. For example, with `acme.com` connected to the project:
  * `https://launch-pro.acme.com`
  * `https://black-friday-2026.acme.com`
  * `https://free-guide.acme.com`
* **Path mode**: if you prefer single-domain with paths (e.g. `acme.com/launch-pro`), contact support for setup — this is a custom configuration.

The default is subdomain mode because each page gets its own cleanly-isolated URL and SSL cert.

### Multiple projects, multiple domains

Each project can have its own custom domain. So if you're an agency with multiple clients, you can connect a different domain per project:

* Project "Acme" → `landing.acme.com`
* Project "Beta Coaching" → `go.betacoaching.com`
* Project "Personal Brand" → `pages.yourbrand.com`

### Removing a custom domain

To revert a project back to using HypaSites subdomains only:

1. Open the project.
2. In Domain Settings, click **Remove domain**.
3. Confirm.

All pages in the project revert to `[subdomain].hypasites.com`. You can re-attach a domain at any time.

## Unpublishing

If you need to take a page offline without deleting it:

1. Open the page preview.
2. Click **Unpublish**.
3. Confirm.

The page's status flips back to **Draft**. The public URL stops resolving immediately. Your work is preserved — you can edit and re-deploy at any time.

Unpublishing does not refund your site quota. The slot stays used.

## Exporting a page

You can download a fully self-contained HTML file of any page. Useful for hosting elsewhere, archival, or handing off to a developer.

1. Open the page preview.
2. Click **Export**.
3. A `.zip` downloads containing the page's HTML.

The exported file:

* **Has the HypaSites analytics snippet removed.** Views and clicks won't be tracked anymore.
* Includes the full inline CSS — no external dependencies.
* Works offline; you can open it in any browser.

The exported HTML is yours to do whatever you want with — host it on your own server, edit it manually, integrate it into a larger site.

Note: exporting doesn't unpublish or delete the HypaSites-hosted version. You'll have both copies (one live on our hosting, one on your hard drive).

## SSL and security

Every live page gets free SSL automatically:

* HypaSites subdomains (`*.hypasites.com`) use our wildcard certificate.
* Custom domains use Let's Encrypt, provisioned per page.

Certificates renew automatically — you don't need to do anything.

If SSL fails to provision (rare, usually due to DNS issues), the page still works over `http://` but you'll see a warning in the dashboard until SSL is sorted.

## Page-load performance

Generated pages are designed to load fast:

* Inline CSS (no external stylesheets to fetch)
* Hero images can be optimised on demand
* No JavaScript framework — just minimal native JS for the analytics snippet
* Cached aggressively at the CDN edge

If you want even more aggressive optimisation, set **Page Speed Priority** to **aggressive** in Step 8 of the brief.

## Form submissions and embeds

Forms generated by HypaSites submit to a hosted endpoint that captures the submission and triggers your configured post-actions (email, redirect, list addition).

Submissions are stored against the page and visible in Analytics (Chapter 9). You can also configure email forwarding from the project settings.

For more complex form workflows (e.g. piping into your CRM), use the **Custom Scripts** field in Step 8 of the brief to inject a webhook or third-party form provider's embed code.

## Troubleshooting publishing

**My page is stuck on "Deploying"** — Wait 60 seconds and refresh. If it's still stuck, click **Deploy** again. If it fails a second time, contact support.

**My custom domain isn't verifying** — Use a DNS-checker tool to confirm your CNAME or A record is live. DNS changes can take up to 24 hours to fully propagate, though most resolve within minutes.

**My SSL shows "Pending"** — SSL provisioning starts after domain verification. If it's been more than 30 minutes, try clicking **Retry SSL** in the project's domain settings. If still failing, contact support.

**The page looks different on the live URL than in the preview** — The preview is the exact HTML that gets published, so this shouldn't happen. If it does, hard-refresh the live page (Ctrl/Cmd + Shift + R) to bypass cache.

**I changed the subdomain but the old URL still works** — DNS caches can keep old URLs alive for a while. Test in an incognito window.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hypasites.gitbook.io/hypasites-docs/user-guide/08-publishing-and-domains.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
