Publish & ExportAstro + EmDash CMS

Astro + EmDash CMS

Publish your AI Website Creator project to Cloudflare with the EmDash CMS, set up your admin login, edit pages and blog posts, resync design changes safely, and unpublish.

Astro + EmDash publishes your site to your own Cloudflare account together with EmDash, a content management system (CMS) built into the site. A CMS is an admin area where you or your client change text, images, pages and blog posts in the browser, without touching UiChemy or code. Your exported sections become the starting layout. The CMS lets people edit their content and arrange sections without editing the section code. Preview the published site before handing it over.

At a Glance

ItemDetails
WherePublish › Astro › Cloudflare › What to publish › Astro + EmDash (badge Recommended)
You needA connected Cloudflare account. See Deploy to Cloudflare.
First publishAbout a minute, a few minutes the first time while the database is set up
CMS adminyour-site-address/_emdash/admin
Sign-inA passkey (Touch ID, Windows Hello, or your phone)
Required whenYour site has a blog
StorageA database, login storage, and (when available) R2 media storage, all in your Cloudflare account

Why It Matters

  • Clients edit their own content: text, images, sections and blog posts, without asking you.
  • Your design is safe: people edit content inside your sections, not the layout code.
  • Your data, your account: the database and media live in your Cloudflare account.

Use Cases

  • Handing a site to a client who wants to update their menu, prices or team photos.
  • Running a blog: write, schedule and publish posts from the CMS.
  • Small teams: invite teammates to the CMS so everyone has their own login.

What You Can Edit in EmDash

In the CMSWhat you can do
PagesOne entry per page. Its sections are listed in order: reorder, remove, duplicate or hide them.
SectionsEvery heading, paragraph, button, link and image in a section is its own field, filled with your designed content. Leave a field empty and the designed text shows.
Header and footerEdit them the same way as page sections.
Blog postsWrite posts with a body, featured image, categories and tags. Post lists, post pages and archives use your design's own templates.
SEOEach page has an SEO panel for title, description, share image, canonical URL and "noindex". It starts with what you set in Page & Site Settings.
UsersInvite teammates under Users → Invite User.

Your robots.txt and llms.txt from Site Settings come along too. On a CMS site, /llms.txt is built from the live CMS pages and blog posts, with a clean text copy of each (for example /about.md). Hidden sections are left out of those copies. A page set to "noindex" or kept away from AI tools, including by an edit in the CMS SEO panel, is left out of both. Turning off llms.txt for AI tools in Site Settings makes those text copies return "Not found".

When You Need EmDash (the Blog Rule)

When Cloudflare publishing is configured, Astro + EmDash is offered and marked Recommended. It becomes the only choice when your site has a blog, because blog posts need the CMS.

UiChemy treats your site as having a blog when a page title in your sitemap contains blog at the start of a word, or the whole word post, posts, article or articles. Then Astro frontend is greyed out with: "Your site has a blog, which needs EmDash. Remove the blog pages to publish the frontend only."

A page called "Our Posts" or "Articles" counts as a blog page too. Rename or remove it in the Sitemap Editor if you want the static Astro frontend instead.

Publish With EmDash

Open Cloudflare

Click Publish, select Astro, then Start on Cloudflare. Connect your Cloudflare account if you haven't yet.

Choose Astro + EmDash

Under What to publish, select Astro + EmDash.

Publish

Click Publish and keep the window open. Progress moves through Preparing your pages, Building the site, Setting up the database and storage, Uploading files, and Going live. The active step shows details such as how many database steps are left.

Your site with a CMS is live

You'll see "Your site with a CMS is live: Open the setup link to create your admin login." The card Your site with CMS shows your address, a Live badge, Open site, and Finish CMS setup.

Set Up Your Admin Login

Right after your first publish, a Set up your CMS checklist appears:

  1. Set up your admin login: opens your private setup link. "Only works for you, so keep the link private."
  2. Site step: keep the title and leave "Sample content" selected. That sample content is your pages.
  3. Account step: enter your email and name.
  4. Sign in step: create a passkey (Touch ID or your phone).
  5. Edit and publish: edit under Pages, then Publish changes. For teammates, go to Users → Invite User, then send them the invite link.

Your setup link (the claim link) is what makes you the site's admin. Anyone with it could claim the CMS before you finish setup, so don't share it.

Admin URL and claim URL

LinkWhere it goesWhen to use it
Claim URL (setup link)your-site/_emdash/admin/setup?claim=…Once, to create the first admin login.
Admin URLyour-site/_emdash/adminEvery time after setup, to sign in and edit.

Until setup is finished, the main button reads Finish CMS setup and opens the setup link. On later visits you'll also see "First time? Set up your admin login (only works for you; keep it private)." Once setup is done, the button changes to Open CMS admin. If you finish setup in another tab, come back to the panel and it updates by itself.

Where CMS Content Is Stored

Resource in your Cloudflare accountWhat it holdsAfter taking the site offlineAfter Delete everything
WorkerThe deployed site and CMS applicationRemovedRemoved
D1 databaseCMS content and user dataKeptDeleted
KV login storageCMS session and login storageKeptDeleted
R2 media bucket, when availableUploaded mediaKeptKept. Remove it manually in Cloudflare if no longer needed.

The database and storage are reused on later publishes to the same account. Unpublishing a Cloudflare site does not delete the original UiChemy project. CMS edits are stored in the CMS, not automatically copied back into the Design Editor.

Images and R2 Storage

When your Cloudflare account has R2 (Cloudflare's file storage) available to UiChemy, CMS sites get their own media bucket, so you can upload images in the CMS admin.

R2 must be enabled in your account and permitted by the Cloudflare connection. Enabling R2 alone may not be enough if the connection does not have access. If R2 isn't available, the site can publish with images linked by URL. The card says: "Images are linked by URL. Enable R2 in Cloudflare to upload images from the admin."

A site keeps the storage mode it was first published with. Turning on R2 later doesn't switch an existing CMS site over.

Resync and Your CMS Edits

When you change your design in UiChemy, click Resync to publish it. On a CMS site that's already set up, UiChemy merges your new design into the CMS without overwriting your edits:

  • A field nobody changed in the CMS gets your new design's value.
  • SEO panel values work the same way: a title, description, image, canonical or noindex setting that still holds what UiChemy last wrote takes your new Page Settings, and one someone changed in the CMS is kept.
  • A field someone changed in the CMS is kept.
  • A section you added in UiChemy is added. A section you removed goes, unless someone edited it in the CMS.
  • A page you removed in UiChemy is set to draft. It's off the site but still in the CMS, unless someone edited it.
  • An entry with unpublished CMS changes (a pending draft) is left alone.

After a Resync, yellow notes tell you what happened:

NoteWhat it means
"Taken off the site because the design no longer has it (kept in the CMS as a draft): …"Pages removed from your design.
"Updated, keeping the changes made in the CMS: …"Merged: new design, plus your CMS edits.
"Not updated because it was changed in the CMS: …"Edited in the CMS, so UiChemy left it.
"Not updated because it has unpublished changes in the CMS: … Publish or discard them, then Resync."Finish the draft in the CMS first.
"The site was published, but its CMS content was not updated: … Resync again to retry."The code went live, the content sync didn't. Click Resync again.

If the site hasn't been set up yet, there's nothing to merge: setup simply starts from your newest design.

Export Limitations

EmDash uses the UiChemy export as its starting point, not a copy of a running WordPress installation. WordPress-only widgets may be skipped during conversion. Forms use the exported frontend runtime and need a submission endpoint to receive data. Preview the published site and test forms before launch.

Scheduled Publishing

EmDash uses a Cloudflare scheduled task (cron trigger) for scheduled publishing and upkeep. The free Workers plan allows 5 per account. If yours are all used, the site still publishes, with this note: "Scheduled publishing is off: this Cloudflare account already uses all 5 scheduled tasks (cron triggers) of the Workers Free plan. Remove one from another Worker, or upgrade to Workers Paid, then deploy again."

Unpublish: Keep or Delete Your Content

Click Unpublish on the Your site with CMS card. You'll be asked "Unpublish this site?" with two choices:

ChoiceWhat happens
Take it offline, keep the content"Pages edited in the CMS, users and logins stay. Publish again to bring it back as it was." The card shows Offline and the button reads Publish again.
Delete the site and all its content"The database, CMS edits, users and logins are removed from your Cloudflare account. This can't be undone." Confirm with Delete everything.

An offline site shows Delete site and content instead of Unpublish, in case you want to remove it fully later.

Deleting removes the site, the database and the login storage, but not an R2 media bucket. If your site had one, delete it yourself in the Cloudflare dashboard under R2. It's named after your site with -media at the end.

When Something Goes Wrong

MessageWhat to do
This site is being published right nowA publish is still running, so you can't unpublish yet. Wait for it to finish, then click Try again.
We couldn't build your siteClick Try again. If it keeps failing, send support the detail shown.
Publishing with a CMS isn't available on this server yetUse Manual download, or Astro frontend if your project has no blog and Cloudflare is available.
Only the person who published this site can unpublish itAsk them to unpublish it from their account.
"This site is being set up" in the adminYou opened the plain admin URL before finishing setup. Use Finish CMS setup instead.

For connection and account errors, see Deploy to Cloudflare.

FAQ

Next