Guides / Move to Hettie

How to Move a ChatGPT Sites Site to Hettie

15 November 2026

Paste this page’s address into Codex or Claude Code and say “follow this guide and move my ChatGPT site to Hettie”. If you are the AI: follow the steps in order, keep the design, text, images and URLs the same, add no features, and never change the person’s DNS. The ChatGPT site stays live until the last step.

1. Get access

  • The code. A ChatGPT Sites project is a Git repository. Open it in Codex, or clone it to chatgpt-site/. Run git log -1 and list the files.
  • Hettie. The person signs in at https://app.hettie.dev. Sign in with npx hettie auth login. In a sandbox without a browser, the person creates a key under Account → Connect a Claude project and adds it as the environment variable HETTIE_KEY in their project or sandbox settings themselves. Never ask for the key in the chat. The hettie command is in early access: if npx hettie is not found, stop and tell the person. The chat connector https://hettie.dev/mcp lets you manage leads, posts and domains from the chat as well.

2. Make an inventory

Write MIGRATION.md with every page and its URL, every form (fields and where it posts), every image or file, any blog posts, and any server code or stored data (API routes, D1 tables, R2 files). Server code does not move: if a page depends on it and cannot become a static page or a Hettie form, stop and tell the person.

3. Rebuild on Hettie

Run npx hettie new hettie-site next to the old project and follow its CLAUDE.md.

  • Pages: recreate each page in src/pages/ with the same path (/about becomes src/pages/about.astro). Shared layout goes in src/layouts/Base.astro, styles in Tailwind or src/styles/global.css. Changed URLs get a line in public/_redirects (/old /new 301).
  • Forms: <form method="post" action="/forms/<name>"> with the old field names, the honeypot <input type="text" name="_hp" hidden tabindex="-1" autocomplete="off">, and a message for ?sent=1 and ?error=check. Call, book and WhatsApp links get data-hettie-lead="<name>". Old replies cannot be imported: export them to old-leads.csv and tell the person where it is.
  • Images and files: npx hettie media upload <file> one at a time, then use /_hettie/media/<file>. Small icons and the favicon can stay in public/.
  • Blog posts: one per post with create_post (or npx hettie posts new post.md). They arrive as drafts; the person presses Publish.

4. Check and publish a test version

Run npx hettie dev, open every page next to the live site, and submit each form once. Fix every difference. Then npx hettie build and npx hettie publish --site <name> --message "Moved from ChatGPT Sites". The output ends with Version 1 of <name> is live at https://<name>.xtwelve.io. Give the person that link and tell them the old site is still live.

5. Switch the domain

Call add_domain with the site and www.<domain> (or npx hettie domain add www.<domain>). The person adds a CNAME from www to sites.xtwelve.io and the TXT record Hettie shows at their registrar. Check with get_domains (or npx hettie domain status) until it is live with HTTPS. Do not change DNS yourself.

Ready to try it?Your first site is free, on your own domain.
Start free

Back to all guides