EMPIRE / Changelog

Changelog.

What we shipped and when. We deploy continuously, so this is grouped by month rather than version numbers.

Handbags arranged on a table in a small studio

Every meaningful change to the platform, newest first. We deploy continuously rather than in big releases, so this is grouped by month rather than version numbers.

September 2026

Anyone can now report an abusive site — and there's a hotline

  • New page: Report abuse. If a site built on EMPIRE is being used for phishing, malware, spam or counterfeit goods, anyone can report it. No account needed, and you don't have to give your name — we'd rather have an anonymous report than no report.
  • Abuse hotline: 402-206-4827. Call or text. If a phishing page is live and collecting people's passwords right now, phone it in — whoever answers can take the site offline while you're still on the call.
  • Phishing and malware jump the queue automatically and are acted on the same day wherever we can. Those are the reports where every hour costs somebody real money.
  • A site removed for abuse stays removed. It returns a clear removal notice naming the reason, and its owner cannot switch it back on from their dashboard.
  • The terms now say all of this properlysection 5 lists exactly what gets a site removed without warning, and what happens if we get it wrong.
  • Why we care this much: sites on the free tier are served from subdomains of our own domain, so one phishing page gets every EMPIRE customer's site flagged by spam filters and browser blocklists. Abuse here hurts people who did nothing wrong.

Security headers, and telling machines who runs this place

  • Every page now carries a machine-readable statement of who operates it — CryptCode LLC, the support phone number and email, and links to the about, support, legal and security pages. Search engines and safety scanners read this; before now there was none of it anywhere on the site, so an automated checker had no way to tell a real company from an anonymous one.
  • The site now sends proper security headers. HTTPS is enforced for a year at a time, the browser is told not to guess at file types, and other sites can no longer load EMPIRE inside a hidden frame. None of this changes anything you see; it closes a set of doors that were open.
  • There is a published security contact at /.well-known/security.txt. If you find a security problem with EMPIRE, that file says exactly how to tell us.
  • Prices shown to search engines are now generated from the same source the checkout uses, so the two cannot drift apart and quietly advertise a price we would not honour.

New pricing — and plans that finally mean something

  • Every plan costs less. Foundation is now $9/month (was $35), Commerce $14 (was $45) and Dynasty $25 (was $79). If you are already subscribed you move to the new price — you will not be asked to do anything, and nobody pays more than they did yesterday.
  • A new Ultimate plan at $65/month. Everything on Dynasty, plus one written post about your business on this site every calendar month and your banner in rotation on the main EMPIRE site. We write the post, you approve it before it goes live, and if a month passes and we have not published yours, that month is credited back automatically — you do not have to ask or even notice. That is in the terms, not just here.
  • The plans now actually differ, which is the honest part of this change. Until now the tiers were mostly a label on an invoice: whatever you paid, you could reach nearly everything. Now Foundation is a website plan with no online store, Commerce adds selling and dropshipping, and Dynasty adds print-on-demand and API access. That is enforced by the platform, not by the price list.
  • If you are on Dynasty, nothing is taken away — print-on-demand and the API are still yours. You are simply no longer the top tier.
  • A rotating ad spot on empiresitebuilder.com is now $12/month, up from $10. Dedicated placement is unchanged. If you are on Ultimate your banner is included and this does not apply to you.
  • Ambassador referrals move from $2.25 to $1.50 per customer, to stay proportionate now that plans start at $9. Referrals you have already earned are paid at the rate they were earned at, not the new one.

Empire Assist knows about the plans now

  • It can tell you why something is switched off. Now that plans genuinely gate features, a locked button needed an explanation rather than a shrug. Ask why you cannot reach dropshipping or print-on-demand and it names the plan that includes it and what that costs — not just "upgrade", which tells you nothing and turns into a phone call.
  • It will tell you Foundation cannot sell. Ask whether you can take payments on the $9 plan and the answer is a plain no, with the $5 difference to Commerce spelled out. Finding that out after paying is worse for you than being told now.
  • New answers for refunds (including that Stripe's fee on the original payment is not returned, and that refunding a dropshipped order does not claw back what you paid the supplier), why a site is not showing up, getting visitors, what we take per sale, running more than one site, and what happens to your data.
  • Asking "how do I get started" inside your dashboard used to explain how to create the account you were already logged into. It now answers the question you actually asked.

The comparison page says what changed

  • Our pricing used to sit alongside the other platforms, so the comparison was about what is bundled and who answers the phone. At $14/month for the store plan it is no longer the same bracket, and the page now says so instead of being coy about it.
  • Where the others beat us is still on the page, in the same size type. Shopify for volume, apps, currencies and retail hardware; Wix for layout control; Squarespace for design polish. A comparison that only lists your own wins is an advert, and you would find out anyway.

Fixes

  • The Empire Assist section and page were built but had not been published yet. They were finished in the repository and simply had not made it into a successful deploy, so the live site carried the rest of the September work without them. Nothing was lost and nothing was broken — they are live now.
  • Captions on the templates page overlapped the text beneath them. The images were being stretched to the height of the tallest card in their row, which pushed each caption outside the box its card reported, and it landed on top of the paragraph below.
  • The reactive field settled into a still image a moment after it loaded. Each particle was given a nudge and then slowed by friction, so within about half a second the whole field had come to a stop and only the mouse could move it. Every particle now travels its own slow orbit, so the field keeps moving whether or not anyone touches it — and it is denser, brighter and considerably more responsive to your pointer than it was. It also draws far more cheaply than before, so all of that costs less battery rather than more.

Empire Assist — answers, not a chatbot

  • There is now an assistant on every page of this site and every screen of the dashboard — the hooded mark in the top right. Ask it about pricing, the free trial, domains, selling, billing, or what happens to your work if you leave.
  • It is deliberately not an AI. Every answer it can give was written by a person and stored in advance, so the same question always returns the same answer. That is the point rather than a limitation: two customers should never be told two different things about a refund, and every reply it is capable of giving can be read and checked by a human in one sitting.
  • It says when it does not know. A keyword matcher will always find something vaguely similar, and answering with the nearest thing is how people end up believing something false and stop asking. Below a confidence line it says so plainly and gives you 402-206-4827, where a person picks up. Questions that have nothing to do with EMPIRE get told that too.
  • It takes you places. “Take me to my orders”, “open the page builder”, “where is my domain tab” — it opens the page instead of describing where it is. Every destination is a real route; it cannot offer a button to a page that does not exist.
  • Sixty-five written answers at launch, covering pricing, billing, trials, cancellation, domains, DNS, email, selling, shipping, stock, dropshipping, print-on-demand, tax, design, custom code, SEO, hosting, exports, backups and support — plus honest answers to the harder ones: hidden fees, whether we are a scam, and when you might see results.

An Empire Assist page, and a field that reacts to you

  • Empire Assist now has its own page at empiresitebuilder.com/assist, and a short section on the home page, explaining what it is and why it works the way it does.
  • Both carry a reactive particle field — a drifting rainbow that responds to your pointer. It stops the moment it scrolls out of view or you switch tabs, holds still for anyone whose system asks for reduced motion, and is purely decorative: if it fails to start, the section renders as an ordinary block and nothing breaks.
  • The point it is making: Empire Assist runs on your device, not on a server. Your questions are never sent anywhere, so there is no transcript, nothing stored, and nothing to leak — and it keeps working if your connection drops mid-session.

Corrections we made to our own promises

  • Two forms said “Submit for review” and told nobody. Paid ad placements and community theme submissions wrote a row marked “awaiting review” and stopped there. The review screens existed; nothing pointed at them. Both now record the submission durably, email us immediately, confirm to you, and appear in a daily digest — so a missed email cannot turn into a submission that waits forever.
  • We were not emailing anyone before their site lapsed. The warning system built the list of who to tell, marked them as told, and then discarded the list. Sites would have gone offline and been deleted with no warning at all. Warnings now go out at 7, 3 and 1 days, plus a message the day a site lapses telling you nothing has been deleted and how to export it. A failed send is retried rather than suppressed.
  • The free plan used to say it never expires. It now runs 14 days, and we changed the words rather than quietly changing the behaviour. The August entry below still says the old thing, on purpose — see “The free plan now runs 14 days” above.
  • One free trial per person, properly. The old rule compared email addresses as typed, so plus-aliases and Gmail dots were three different customers and one mailbox. Trials are now recorded against a canonical form of the address, and that record survives the site being deleted.
  • “Start from scratch” did nothing. The button posted to a route that did not exist. It now builds you an empty canvas — keeping your business name, contact details and colours, because a fresh start should not mean re-entering your phone number.

Unresponsive projects: a 45-day limit, stated plainly

  • For individually agreed work — custom builds and managed setups, not monthly plans — if we cannot reach you for 45 consecutive days, the engagement is closed and work already paid for is not refunded. Section 8 of the Terms has the detail.
  • Before that happens we contact you at least three times across two channels, and the final message states the closing date. One reply resets the clock — you do not have to make a decision, only answer. Need longer for any reason? Say so in writing and we will agree a new date.
  • It does not touch monthly plans, and your domain remains yours in every case.

Smaller things

  • The dashboard search bar did nothing. Correct markup, correct CSS, complete JavaScript — and the script that wired it ran before the search box existed on the page, so nothing was ever connected. Fixed, along with the flash message's dismiss button, which was dead for the same reason.
  • Template cards no longer pretend a stock photo is a preview. The photograph sat where a screenshot sits and implied it showed the design. It is now a small square badge beside the heading, which is what it is honestly good for.
  • Hero background images — put a photograph behind your title, with a readability control so your words stay legible over a bright photo.
  • Link previews on every page, so a shared link shows a real card instead of a bare blue title.

The free plan now runs 14 days, not forever

  • This supersedes what we said in August. That entry, still below, promised “no trial countdown” and a free plan that doesn’t expire. We are not quietly editing it — it is what we said at the time, and you are entitled to see that we changed our minds rather than find the old promise deleted.
  • What is true now: a free site is live and complete for 14 days with no card. After that, subscribing keeps it online. If you don’t, the site stops serving but nothing is deleted for a further 30 days, and you can export everything at any point in that window — design, products, pages, posts and content, as a file you keep.
  • Why: an unlimited free tier means every abandoned site is hosted indefinitely, and the cost of that lands on the people who do pay. Fourteen days is enough to build something properly and decide whether it works, which was the point of the free plan.
  • If you signed up under the old terms, your site keeps the terms you signed up under. Call or text 402-206-4827 and it will be honoured.

The admin, rebuilt on measured foundations

  • Sixty-nine layouts became twenty-five, and each one now shows you what you are choosing. Sixty-nine is a number that sounds like value and behaves like a chore, and the long tail was where the thin ones hid — several differed from a generic business page by one heading. The twenty-five are picked for coverage: five trades, five food, five health and fitness, three retail, four professional, one creative and two shapes that fit whatever is left. Every one that ever shipped still builds, so a site already using one keeps working. Each card carries the photograph its own layout would use, because choosing a layout is a decision you make by looking, not by reading twenty-five paragraphs. And the page now says plainly that the list is a starting point, not a ceiling: you can write your own CSS, or import a Liquid theme you already own.
  • The editor toolbar had five different corner radii in one row. 5px on the draft flag, 7px on the panel buttons, 8px on the icon buttons, 999px on the theme toggle, and 12px on anything that fell through to the global rule — which also made them 38px tall inside a 52px bar. A row of controls where every corner is cut differently is what reads as "messed up" long before anyone can say why. One height, one radius, and no hover lift in the strip: twelve controls jumping as the pointer crosses them is noise, not feedback.
  • The photo picker opens on a bright set, and the photos were chosen by measurement. "White and green" is a claim about pixels, and the category names turned out to be unreliable — the existing "plants" set averages rgb(117,124,103) with 10% near-white pixels, which is dark foliage rather than the airy look the word suggests. Every candidate was loaded in a browser, drawn to a canvas and sampled; 9 of 45 cleared a floor for both near-white and green-dominant pixels, because most results are one or the other and neither alone reads as fresh. The measurements are recorded beside each photo, and a test fails if an unmeasured one is ever added to the measured set. The picker also opened blank until you typed a search — it leads with the bright set now.
  • Fields and buttons are softer, and they finally match. Inputs were 32px tall with 6px of padding and a hard corner — the text sat almost on the border. They are 38px now, with a rounder corner, real room inside, and a faint inset shadow so a field reads as a recess cut into the card rather than a rectangle drawn on it. Buttons were resized to match: a 32px button beside a 38px input reads as two different systems on one form. The border keeps its contrast ratio throughout — a field whose edge you cannot find is not soft, it is broken.
  • Things you can click now rise to meet the pointer. Buttons lift a pixel, cards lift two, and a shadow falls underneath. The shadow is the half that matters: without it the card just slides upward and reads as a glitch rather than depth. Pressing cancels the lift, because a key cannot be raised and pushed in at the same time. Under reduced motion nothing moves — but the shadow stays, because that setting asks for less movement, not less feedback.
  • The EMPIRE wordmark carries green again. It is the one place colour survives: everything else is greyscale so that a status colour still means something. The green differs between light and dark themes, because no single value clears the contrast floor against both a light rail and a dark one — ship one and the mark is unreadable in whichever theme loses.
  • Panels on every page were touching each other. Blocks used to space themselves with their own bottom margin — and .card had one while .panel did not, so Overview, the launch checklist and the Inbox sat flush with no gap between them. .panel also had no padding at all on desktop: its content ran to the border. Adding the missing margin would have fixed the symptom and left the next new block to rediscover it, so the gap belongs to the page now. Anything placed on a page is spaced automatically, whatever class it carries, and there is one number to change. Measured across every pane: a uniform 24px, with no block able to opt itself out.
  • The dashboard had no working navigation on a phone. The sidebar correctly slid off-canvas at small widths, and the button that opens it was correctly written — but the rule hiding it sat 158 lines after the rule showing it, and a media query adds no specificity, so the later one won at every screen size. The menu button never rendered. On a phone there was no way to reach Orders, Products or anything else.
  • Every phone had a horizontal scrollbar. An unclassed group in the top bar couldn't shrink and forced the page 51px wider than the screen. The bar is one 57px row now instead of two rows totalling 105px — it was eating an eighth of the display, permanently, on a sticky element. "View store", "Log out" and the support number moved into the drawer rather than being deleted; the support number in particular should never be the thing cut to save space.
  • The status of your store was rendering as a broken character. "Paused" and "Inactive" were typed using U+25CC — a typographic placeholder whose only job is to show where a combining accent attaches. Most fonts draw it as a ring of dots or an empty box. Status is a proper component now, with the dot drawn in CSS and the word kept beside it.
  • Emoji are gone from the interface. A bell, a padlock, a camera, a package, a bus for the order form, a musical note for Studio, and a see-no-evil monkey for "hide this section". They render differently on every operating system, several fall back to an empty rectangle on Windows, and none of them can follow the theme. Everything is a drawn icon on the same grid at the same weight — 49 of them, every one verified to actually have a size on screen.
  • Every result in Ctrl+K search was an emoji, and the check missed all of them. Twenty-eight of them, written as \u{1F512} escape sequences rather than as characters, so a search for emoji found nothing. The icon each row shows is now derived from the destination it points at, which means it matches the sidebar and there is no separate list of glyphs to drift. The test knows all three spellings now — raw, HTML entity and escape — and reads every file in the dashboard rather than the one it happened to be pointed at.
  • Order notification emails no longer open with an emoji. Partly because it sat oddly next to the plain "New message" and "New signup" subjects, but mainly because this is a transactional email that has to arrive: emoji in a subject line are a known spam-filter signal, and a merchant who never sees the notification loses the sale.
  • Failures were being shown to you in the colour of success. There was a CSS class called saved, styled green. Nineteen places used it — and not one of them was a success. It carried the login failure, the "your site is paused, usually a billing issue" alert, and seventeen warnings about setup steps that had not been run. All of them rendered green and reassuring. Two definitions had been fighting (an older red one, this green one) and green won on ordering, but the real fault was the name: a class called saved gets styled as a success by whoever touches it next, whatever it is actually used for. There are now four notices — success, failure, incomplete setup, information — each measured for contrast in both themes, and each carrying a border and a background as well as a text colour, because a message whose entire meaning is its hue is one that roughly one man in twelve cannot read.
  • Twenty-five contradictions found by sweeping the whole stylesheet. The earlier fixes each came from picking one selector and working out what actually won. That only ever finds the bugs someone thinks to look for. Every selector in the page is now swept for properties declared twice with different values — 435 of them — which is what turned up the notices above, a table row whose hover state painted it its own colour (so hovering did nothing), and a body rule quietly overriding the type scale.
  • Nothing you type gets thrown away silently any more. There are 94 forms in this dashboard and every one was a plain submit. Change ten things on Preferences, click a nav item, and all of it was gone — no warning, no recovery. Editing a saved record now raises a bar at the top of the page: unsaved changes, Discard, Save. Undo your own edit by hand and the bar goes away again, because it compares against what the page loaded with rather than latching on the first keystroke. Discard asks first, and the leave-this-page warning exists only while something is actually unsaved.
  • The dashboard was rendering in the wrong typeface entirely. Three different font files were being loaded across the product and none agreed: Studio pulled one, the login page pulled another, and the dashboard's stylesheet named a third that it never downloaded — so it fell through to the system font, and the login page you arrive from looked like a different product. Worse, every one of those requests asked for fixed weights, which quietly rounded the type scale off. One typeface now, loaded once, on a variable axis so the weights are the real ones.
  • The sidebar and the top bar were the wrong way round. Ours had a near-black rail down the side and a heavy bar across the top. A working commerce admin puts the weight the other way: light chrome throughout, with depth coming from a three-step ladder of surfaces and 1px rules rather than a slab of black. The rail is light now, and the top bar with it.
  • Buttons were pills, and they were not supposed to be. The design system specified an 8px radius and a four-layer inset bevel; a legacy block further down the stylesheet re-declared every button with a 999px radius, a flat drop shadow and a lift-on-hover, and won simply by being later. Buttons shipped as pills for weeks while a test happily confirmed the radius token said 8px. The bevel — a grey bottom edge, a hairline ring, and a white highlight 1.5px inside the top — is what makes a button feel like something you press.
  • Every link in the dashboard was near-black. Same cause: one stray rule set anchor colour to a near-black token and beat the design system. Links were indistinguishable from body text; the only thing marking one was the cursor changing if you happened to pass over it.
  • The sidebar never showed which page you were on. The router had always marked the current item, but the rule that styled it had been deleted in an earlier cleanup, so the class was applied to nothing. Selection is now carried by a raised pill, a heavier weight and darker icon ink — and by aria-current, so it reaches screen readers rather than being colour alone.
  • The rail went from 33 rows to 20, and Settings is pinned to the bottom. Domain, SEO, Preferences, Import/Export and Account were five separate top-level rows. They are settings; they live behind Settings now, which opens onto a real index where every destination has a sentence saying what is actually in it.
  • A quiet dot field behind the working area, and a mark on Home. The background lattice drifts one tile every 48 seconds, transform-only so it costs essentially nothing, and it sits on the canvas — never behind text. Home carries a dot-matrix cart filling with coins. Both stop completely, not partially, when your system asks for reduced motion.
  • A new test reads the cascade instead of the source. The pill-button and near-black-link bugs had the same shape: the design system was right in the file and something later overrode it. Every other test read the file. This one renders the page, resolves specificity and source order the way a browser does, and asserts on what actually wins.

The dashboard, rebuilt on one design system

  • Dark mode actually works now. Honestly: it never did. The button set the theme and saved your choice, but every dark-mode rule in the product lived inside the Music Studio, so nothing else on the page could respond. Every screen now reads from one shared set of colours, and the toggle repaints all of them.
  • Every colour was measured, not eyeballed. Text clears 4.5:1 and every input edge and focus ring clears 3:1, in both light and dark. Input borders used to sit at 1.5:1 — technically visible, practically not.
  • Keyboard focus is visible. There was previously no focus ring anywhere in the dashboard, which made it genuinely hard to use without a mouse.
  • File uploads are real drop zones. Drag a file onto them, see the filename come back, and the button locks while it uploads so a slow connection can't create the same product twice. They used to be the browser's grey "Choose File" box.
  • Buttons, inputs, selects, checkboxes and switches now have hover, focus, pressed, disabled and error states. Previously they had one state: resting.

Proportions measured against Shopify, not guessed

  • Their admin at 1900 px puts its card block at 975 px, centred exactly beside the navigation. They are considerably narrower than we were, and that restraint is most of why theirs reads calm and ours read sprawling. Our reading column is now 76 rem, centred to the pixel — while pages that are genuinely list-heavy still earn extra width, because a table of orders should not be squeezed to look tidy.
  • Padding was using 43 different values across the dashboard — the same problem as the margins, one level down. Everything is on the 4 px scale now; the only two exceptions are sub-pixel hairlines.

Motion that explains rather than decorates

  • Panels arrive with a short fade and a 6 px lift, staggered slightly so a page assembles top-down instead of flashing in. The stagger stops after the fifth item, because past that nobody is watching.
  • Only things you can actually click lift on hover. A hover effect on a panel that does nothing is a promise the page does not keep. Table rows change colour instead of moving — a row is scanned, not admired.
  • Buttons depress by one pixel, the saving indicator pulses while a write is genuinely in flight, and the launch progress bar slides from its old value to its new one so finishing a step reads as progress rather than a redraw.
  • Everything shares one easing curve and finishes in 120–220 milliseconds. Nothing bounces or overshoots: springy motion on a table row reads as unserious.
  • If your device is set to reduce motion, all of it stops completely — not a gentler version. That setting is often a medical accommodation, and a subtler animation is still an animation.

The light/dark button was invisible in light mode

  • The button sits on the top bar, which is deliberately dark in both themes. It was taking the page text colour, which in light mode is near-black — so it rendered black text on a black bar at a contrast ratio of 1.06:1. Measured, not guessed. It looked fine in dark mode, which is exactly why it survived: the fault only appeared in the theme people switch to.
  • It now inherits whatever text colour its surroundings use, so it is legible on any surface — including ones that do not exist yet. Contrast went from 1.06 to 17.8:1.
  • There is now a check that walks every rule on the top bar and sidebar looking for this whole class of mistake, not just the one button that broke.

A cleaner top bar

  • Search sat hard against the left with a wide dead gap before the account controls. It is now centred in its own column, with the store name on one side and your controls on the other — the arrangement every serious admin uses, because it stays balanced whatever the window width.

The spacing, fixed properly

  • Two things were wrong, and the second one is the real answer to “why does it look off?”
  • First: the content column had a maximum width but was never centred, so on a wide monitor the whole dashboard hugged the left edge and left several hundred pixels of dead space beside it. The bigger your screen, the worse it looked. Content is now centred and uses 1392 px of a 1900 px display instead of 1088 px jammed against one side.
  • Second, and more important: the dashboard was using thirteen different vertical spacing values — .4, .5, .7, .8, .9, 1, 1.1, 1.2, 1.3, 1.6, 1.8 and 2.2rem. Nothing shared a scale, so nothing lined up with anything else. That is what bad spacing actually is: not one wrong number, but the absence of a system. Everything now sits on one scale, and the gap between every block on the page is the same 24 px.
  • Checklist rows went from 0.6rem tall to a comfortable 52 px with the arrow properly aligned, metric cards got real breathing room, and empty states are no longer cramped.

Every new site arrives finished, not blank

  • Being straight about what this was: a brand-new free site was created with one paragraph — “Make this yours.” A paid site got one saying “Edit This Page.” That is the first thing anyone ever sees of EMPIRE, on their own address, and it looked like nothing had been built. Someone comparing us to Shopify at that moment was comparing a blank page to a finished storefront.
  • Now every site — free subdomain or paid domain — lands as a complete page: a photographic hero, an about band, a gallery, an FAQ and a contact block. Six sections, eight photographs, live on your address the moment it exists.
  • The photography is picked from your address. Claim joesbarbers and you get a barbershop; brightdental gets a clinic; greenleafgarden gets plants.
  • Every part of it is an ordinary section you can edit, reorder or delete in the normal editor. There is no demo mode to escape and nothing is locked.
  • What it does not do is put words in your mouth. No invented tagline, no invented “about us” paragraph you have to notice and delete, no testimonials, no statistics.
  • We also stopped creating three fake products on new stores. “Starter Product One — $24.00” was a real listing at a real price for something that did not exist, sitting on a live shop where a customer could try to buy it.
  • Free and paid use exactly the same builder, so upgrading never gives you a worse starting point than signing up did.

Deleting is no longer permanent

  • Select twenty products, press Delete, realise it was the wrong twenty. Until now that was the end of the story. Deleted records now go to a recycle bin for 30 days, and the confirmation that appears carries an Undo button. Shopify deletes products permanently; this is one of the places we can simply be better.
  • Undo restores exactly what that press of Delete removed — not anything you deleted afterwards and meant to keep. Each press is its own batch.
  • If the undo copy cannot be saved for any reason, the delete does not happen at all. Being told “deleted — Undo” and finding that Undo does nothing would be a lie at the worst possible moment, so we would rather refuse the delete and say so.
  • After 30 days the records are genuinely gone, which is also what has to be true when someone asks us to delete their data.

Your lists can now be filtered, sorted and acted on in bulk

  • Being blunt about what these were: plain tables. No filtering, no sorting, no search, no way to select a row. With two hundred orders you could not answer “which of these haven’t shipped?” without reading all two hundred, and marking twenty as shipped meant twenty separate button presses. That was a bigger gap against a real commerce admin than anything about how it looked.
  • Orders now has views for Unfulfilled, Paid, Shipped and Awaiting payment, with live counts, a search box, sortable columns, and tick-boxes so you can mark many as shipped or paid at once.
  • Products has the questions you actually ask: which ones still need a photo, which have no cost recorded, which came from a supplier. Select several to delete them or move them into a category together.
  • Money and dates sort by their real value, not alphabetically — so $90 no longer comes after $100, and March no longer comes after May.
  • Filtering a row out also unticks it. Without that, a bulk action could quietly include rows you could not see — which is the way this feature goes wrong in most software.
  • Every bulk action is scoped to your store in the database itself, not just in the page. Editing the form to include another shop’s order numbers changes nothing: we have a test that tries exactly that, and a second test that proves the first one would notice if the protection were ever removed.

Templates now come with real photography

  • Every one of the 69 layouts ships with licensed photographs — 194 of them across the set, chosen per trade, so a bakery template opens on bread and a garage template opens on a workshop. A template with empty image boxes does not tell you whether the design is any good; one with pictures in it does.
  • They are yours to use commercially and yours to replace. The licence covers your site with no attribution required, and the moment you have photographs of your own work, use those instead — they will always beat stock.
  • Every single image was loaded in a real browser before it was written into the product. A template that ships a broken picture is worse than one that ships none, because you see it on your own domain and assume we broke it.
  • We deliberately avoided photographs of identifiable people. A stranger's face on your homepage implies they are your customer or your staff, which is a claim you cannot back — the same problem as an invented review, wearing a different hat. So the library is rooms, tools, produce and materials.

The photo library works without an API key

  • The editor's photo search returned an empty grid and told you to go and register for an Unsplash developer key. That is exactly the friction this platform exists to remove — anyone who has to sign up for a developer account to put a picture on their homepage has been handed a reason to quit.
  • It now searches EMPIRE's own library instead, with nothing to set up. Type "haircut", "bread", "lawyer" or "plumbing" and you get photographs. Live search still works and is still better when a key is configured; this is the floor, not the ceiling.

The menu no longer buries the page on a phone

  • On a narrow screen the sidebar reflowed into a full-width grid of all thirty-three links — seventeen rows of menu stacked above the actual page. You scrolled past the entire navigation to reach anything, on every single page load.
  • It is a drawer now. The page gets the full width, and the menu slides in from a button in the toolbar — dismissed by tapping away, pressing Escape, or picking where you are going.

The navigation is no longer built out of emoji

  • The sidebar used emoji as its icon set — a cardboard box for Dropshipping, a musical note for Studio, books for Guides. Emoji are someone else's artwork: they render differently on every operating system, carry colours we cannot control, and sit on a text baseline instead of an icon grid, so the column of them never lined up. It is the loudest possible signal that software is not serious, and it was the first thing anyone saw.
  • Replaced with a drawn set of line icons on one 20×20 grid at a single stroke weight, in the same ink as the label. They dim when inactive and go solid on the page you are on.
  • The rail itself was rebuilt. The active item used to be a full-width block of solid green — the loudest thing on screen, for the page you were already looking at. It is now a quiet highlight with a marker on the edge, section headings recede instead of competing with the links, and the whole column is tighter.
  • We were also telling you to put emoji on your site: the editor's column section suggested them by example. It does not any more.

Buttons that did nothing now say what happened

  • The dashboard has been writing messages to itself for months. Connect an app, import a file, apply a layout — each one finished its work and redirected back with a precise explanation attached to the address. Nothing was reading it. Seventeen places in the dashboard, all silent. If you pressed Connect Printful and the screen just sat there, that is why: it had actually run, decided it could not proceed, and told you in a message that was thrown away.
  • Those messages now appear. That includes the import reports, so you finally see which files were skipped and why.
  • Related, and more honest: an app can only offer a Connect button if we hold a developer registration with that provider. Where we do not yet, the card says so and gives you a number to call instead of a button that fails. A button that cannot work is worse than no button — you assume the fault is yours and go looking for it.

The editor's Templates and Themes panel was empty

  • Two separate faults, both real. Start a site was hardcoded to nothing when the generated starters were pulled, and never refilled. Themes rendered eighteen previews inside iframes pointed at your own domain — so on a new store whose DNS has not propagated, which is exactly when you open that panel, all eighteen failed to load and you got blank rectangles.
  • Layouts now lists the real ones, and theme tiles are drawn from their own palette in CSS. Nothing to load, nothing to fail, and the panel opens instantly instead of firing eighteen page loads.

The editor toolbar stopped being a row of white blobs

  • The toolbar sits on its own dark surface, but the controls on it were taking ordinary page colours — so in dark mode you got white pills on a near-black bar. Every control on the bar is now built for that surface, with exactly one filled button on it: Save.

Dark mode now follows you everywhere

  • The honest version of what was wrong: the toggle worked, on two of five screens. Light/dark was written twice — once in the login page, once in the dashboard — and not at all in the editor, the studio, or the upgrade page. You would set dark, click Edit site, and land somewhere blazing white. From where you are sitting that is a broken button, and calling it anything else would be splitting hairs.
  • There is now one implementation, used by every screen, applied before the page paints so dark mode no longer flashes white on the way in. Change it in one tab and any other tab you have open follows.

The upgrade page was blank — it is rebuilt

  • A bad edit had destroyed the body of the upgrade page: what remained was a stylesheet followed by orphaned code. Anyone who clicked through to change their plan got nothing. It still passed every automated check we had, because the wreckage sat inside a string and the file was still valid JavaScript.
  • Rebuilt: domain search with live availability, the three plans with what each includes, and a plain statement that everything you have already built moves with you. There are now checks that a page closes the stylesheet it opens and actually has a body — dumb, structural, and enough to catch this class of damage.

You can edit your site from your phone

  • Being straight about the old state: the editor had no phone layout at all. It is three columns — a section list, the preview, and the settings panel — and on a phone that put 550 px of fixed panels into a 390 px screen, squeezing the preview (the thing you are actually editing) down to nothing. Both panels opened by default, and we restored your last desktop state, so a phone opened straight into the worst version of it.
  • On a narrow screen the two panels are now drawers that slide over a full-width preview, closed to start. Tap away or press Escape to dismiss one, and choosing a section closes the list so you can see what you picked. The buttons and keyboard shortcuts you already use are unchanged.
  • The toolbar stays on top of an open drawer, so Save and Publish are always reachable — and the drawers sit below it by a measured amount rather than a guessed one, because that bar wraps to a different height depending on your page name and whether you have unpublished changes.

The editor and the studio follow your theme

  • Both screens were written before the design system and kept their own colours. The studio carried fourteen hand-written dark rules with values that disagreed with the system's, and four dark-only colours sat in rules that were not scoped to dark at all — so in light mode you got near-black chips on a white page, and the selected project's name was mint green on pale green.
  • The editor spelled out its own red for save failures, which on the dark editor surface was hard to read at exactly the moment you needed to read it. It also shipped its stylesheet's final layer twice.
  • All of it now comes from the one system, so both screens change with the theme like everything else — and there are now checks that fail the build if any screen states a colour the themes cannot change.

Imports tell you what happened

  • Every import used to end at a single number — "259 files uploaded" — and said nothing about the rest. Files dropped for being the wrong format, too large, or past a limit vanished without a word, and you found out by looking at a broken page on your own domain. Now every refused file comes back by name, with the reason, and the list stays on your import screen.
  • We also point out the most common ZIP mistake before it costs you anything: if your homepage ended up at mysite/index.html instead of the top level, we say so at upload rather than letting you flip the switch onto a site that serves nothing.
  • Product CSVs no longer duplicate your catalogue. The importer ran a plain insert for every row, so re-importing a file with three corrected prices gave you two of every product. Rows are now matched on sku — or on the product name if there is no SKU — and updated. You get told how many were added, how many were updated, and which rows were skipped, by line number.

Export now means everything

  • Being honest about what this used to be: "Download my site" produced a zip containing one file, index.html. No other pages, no products, no orders, no customers. For a company whose whole pitch is that your site and domain are yours, that was a souvenir, not an export.
  • It now contains your published site, products.csv, orders.csv, customers.csv, your pages, collections, blog posts, settings and menus — plus a README explaining what each file is. Every CSV opens in Excel, Numbers or Google Sheets and imports back into EMPIRE or into another platform.
  • If we cannot build your export, you now get a plain error and a phone number. Previously a failure wrote a comment into the HTML and still returned a normal-looking zip, so you would only discover it was empty later — probably on the day you needed it.

Apps connect in one click

  • Connecting an app used to mean opening a supplier's developer settings, generating a personal access token, and pasting it into EMPIRE. Every one of those steps was somewhere to give up, and all six apps we offered required it.
  • Most apps now use one-click connect: you approve on their own site and land back here already connected. Nothing to copy, no keys to find, nothing to lose.
  • The directory grew from 6 apps to 12, and now covers payments, accounting, email marketing and sales channels alongside print on demand. Seven connect in one click, three need no credential at all, and two still ask for a key — because those providers do not offer one-click to anyone. We label them so you know before you start.
  • If a connection expires we refresh it silently in the background, and only ask you to reconnect when the provider genuinely requires it.

We removed our starter templates

  • The 252 industry starters are gone. They were four design directions repainted across sixty-three industries, and next to a professionally built theme they looked like exactly that. Shipping them was holding the product back.
  • In their place, three honest ways to start: a blank canvas and the section builder, a Shopify theme you already own imported as a .zip and rendered directly, or a site you built elsewhere uploaded and served on your domain.
  • Theme import is the one worth knowing about. Shopify will not let you take a theme out of Shopify. EMPIRE will bring one in, Liquid and all.
  • Designed templates are coming and they will be commissioned or licensed, not generated. Three worth paying for beats two hundred that aren't. If you want a specific look built for your trade, call 402-206-4827.

Start free, pay when you want your own domain

  • You can now build a complete store without paying anything. Claim a free yourname.empiresitebuilder.com address, design the whole site, add products and publish it — no card, no trial countdown. The free plan doesn't expire. [Superseded September 2026: the free plan now runs 14 days. See the September entry above.]
  • Upgrading registers a real domain in your name and moves everything across untouched: design, products, pages, blog posts, discount codes and your visitor stats. Nothing is rebuilt.
  • Your old free address keeps working and redirects to the new one, so links you've already shared don't break.
  • Free plan includes 10 products, 3 pages and 25 MB of uploads — enough to launch properly and find out whether it works.

A much bigger dashboard

  • Customers — built automatically from your paid orders, with spend totals, private notes, tags and CSV export.
  • Collections — group products by hand, or automatically by tag. They get their own pages on your site and appear in your sitemap.
  • Inventory across multiple locations, tracking what's on hand, what's committed to orders and what's still incoming.
  • Purchase orders with partial receiving, so a delivery that turns up half-complete is handled properly.
  • Transfers for moving stock between your locations.
  • Gift cards with a full ledger — every balance change is recorded, so a disputed card can always be traced.
  • Analytics with conversion, average order value, a live view of who's on your site right now, and automatic reports emailed daily, weekly or monthly.
  • Finance reads your Stripe balance, payouts and refunds directly. Nothing cached, nothing estimated.
  • Files, Menus and Metaobjects — a proper file library, navigation you control, and reusable structured content for things like staff profiles or FAQs.
  • Preferences — password-protect your store while you build, set the message visitors see, control crawler access, block specific bots, filter form spam, and redirect visitors by country if you run regional sites.

Editing

  • Images are now uploaded, not pasted as URLs. Favicon, social sharing image and blog post images all take a file directly — previously these quietly required a hosted image URL, which meant most people left them blank.
  • The section list drags to reorder properly, and a section's blocks now travel with it.
  • If a save fails, you're told. It used to fail silently, which meant you could keep working on a change that never actually saved.
  • Press Ctrl K anywhere in the dashboard to jump to any page, product, order, collection, customer or setting.
  • The sidebar is reorganised into Store, Products, Online store, Content and Settings.

Your domain is yours, and now you can prove it

  • Lock and unlock transfer protection yourself, and get your EPP transfer code, straight from the Domain tab. If you want to move your domain elsewhere you no longer need to ask us, and we don't charge a release fee.
  • Status is read live from the registrar rather than from our own records, so it can't tell you the domain is locked when it isn't.

Dropshipping

  • Clear terms you accept before dropshipping can be switched on, covering who pays supplier fees, who is the seller of record, and who is responsible for product compliance and tax. Short, in plain language, and worth reading — those obligations are real and they're yours.

Advertise on EMPIRE

  • Put your store in front of everyone browsing empiresitebuilder.com. $10/month for a rotating spot, $250/month for a dedicated placement, or $1,250 up front for a year of it.
  • Every ad is read by a person before it runs, and you're only charged after it's approved — never before.

Under the hood

  • Fixed two security flaws where text from a product name or a customer's email could be treated as code inside the dashboard. Both are closed, and the pattern behind them is now blocked automatically so it can't come back.
  • Fixed a stock-counting bug where sold items were never released, so a shop could appear to run out of items it still had.
  • Around 110 automated checks now run before anything is deployed, and a deploy is blocked outright if any of them fail.

August 2026

Dropshipping

  • Supplier cost tracking on every product, with live profit and margin shown as you type a price.
  • Bulk CSV product import — bring an entire supplier catalogue in one file.
  • Automatic markup rules: set a multiplier and prices are calculated from cost.
  • Order routing so paid orders are sent to the right supplier automatically.
  • Profit reporting per order and across the store.

Free tools

  • Eleven public tools with no account required, including a business name generator that checks live domain availability as it goes.
  • Logo maker with SVG and PNG export, no watermark.
  • Invoice generator that runs entirely in the browser — nothing uploaded.
  • Store policy generator for returns, shipping, privacy, and terms.

Ambassador program

  • Public applications with manual review of every applicant.
  • Tracked referral links with a 90-day attribution window.
  • $2.25 per referred customer, held 30 days, paid monthly.

Platform

  • Live system status page that checks services in real time from your browser.
  • New site design across the marketing site, with a dark theme.
  • Accessibility pass: all text now meets WCAG AA contrast.

July 2026

Builder

  • Template library expanded to Import a theme you own — every one with its own colours, typography, layout, and page structure.
  • Music Studio: multi-track browser recording with EQ, reverb, compression, and WAV export, plus a public embed so visitors can record over your mix.
  • Per-site visual effect toggles for ambient glow and scroll reveal.
  • Real lazy-loading for template previews, so the gallery loads instantly.

Commerce & billing

  • Fixed a webhook timeout that could cause subscription provisioning to be retried unnecessarily.
  • Manual order forms for sellers who aren't ready to take cards.
  • Age eligibility and liability confirmation added at checkout.

Get notified

We email active customers when something changes that affects them. For anything else, this page is the record — or call 402-206-4827 and ask what we're working on.