Skip to content

Store launch checklist — what stands between here and a real order

Compiled 2026-09-24 from the live sandbox configuration, not from memory. Companion to embeddedera-store and store-erp-sync. Everything below was verified against the running store or the ERP on that date.

The technical plumbing is in good shape. What remains is almost entirely commercial, regulatory and editorial — which is the better problem to have, but none of it is quick.

1. Hard blockers — no order can complete today

State Owner
Shipping Zero zones, zero methods. Nothing for a customer to choose and no way to charge postage. Checkout cannot complete for physical goods. Angel decides rates, then anyone
Payments Stripe is in test mode. No real money can move. Angel
Store address Completely empty — no street, city or postcode. This is the tax origin and the shipping origin, and it prints on invoices. Angel
Release gate Both cells are _ee_listing_release = pending, which blocks purchase by design. Angel

Shipping is the one that surprises people: it is not a setting anyone has half-done, it is absent, and it is the single thing that makes checkout impossible rather than merely wrong.

2. The products are hazmat

Lithium-polymer cells are Class 9 dangerous goods whatever their size. The 100 mAh and 320 mAh cells are 0.37 Wh and 1.18 Wh, far below the 100 Wh threshold, so simplified provisions almost certainly apply — but simplified is not exempt:

  • Ground/surface-only restrictions on several carrier services
  • Outer-packaging marking requirements
  • USPS now charges a $50 HazMat non-compliance fee, aimed at e-commerce sellers
  • The lithium battery mark format changes on 31 December 2026

Do this before configuring shipping, because it decides which services can even be offered: one call to USPS or UPS's hazmat desk to confirm the service class and markings for cells this small. Sources: USPS FAQ, UPS guide, 2026 changes, USPS fee.

Worth asking early: the cells carry compliance overhead the cow boards do not. Are they the right first product to sell online, or is the storefront better launched with something that posts as an ordinary parcel?

3. Sales tax

In order, because later steps are wasted without the first:

  1. Register with the NC Department of Revenue. Collecting sales tax without being registered is worse than not collecting.
  2. Replace the placeholder rate. The only rate configured is literally named "Sandbox tax — test only" — a flat 7.0000% for US-NC. NC is destination-based for in-state sales, so one flat rate is wrong for most addresses (Wake County is 7.25%, others differ), and the name alone would be embarrassing on a real invoice.
  3. Decide how rates stay current. Hand-maintaining NC's county and transit combinations is a losing game. Weigh an automated rate service against volume; free-first still applies.
  4. Out-of-state is probably nothing to do yet. Economic nexus is typically $100k or 200 transactions per state. Confirm rather than assume, then watch the thresholds.

Already correct: tax_rate_shipping = 1. Shipping is taxable in NC and that is set.

Related and already parked: the LHG Contracting resale exemption (Form E-595E). Same CPA conversation settles both — see Kanboard #52.

4. Content and trust

  • The checkout still says "Development preview: use fictional details only; no real order or payment is accepted." That text is in woocommerce_checkout_privacy_policy_text.
  • The development-notice page must go, and the published returns policy (page 158) opens with "The store is currently a gated development preview" — it needs the same pass.
  • Product photography. Part 198 has no image at all; SOP-002 requires one and a listing needs one to be credible.
  • Domain. The store answers on dev.embeddedera.com. Decide the production hostname.

Fixed 2026-09-24: woocommerce_refund_returns_page_id pointed at page 9, WooCommerce's boilerplate "This is a sample page" draft, so the refund policy link went to something no visitor could see. Repointed to the real published policy (158) and the placeholder trashed.

5. Data hygiene

The store holds roughly 58 orders from testing — 29 processing, 11 cancelled, 10 on hold, 3 completed, 2 refunded, 2 failed, 1 checkout draft. They will pollute revenue reporting from the first day of trading. Decide whether to purge them or keep them and start reporting from a cutoff date.

6. What is already done

Worth stating, so the list above is not mistaken for the whole picture:

  • Availability syncs from the ERP — publish-availability.py, proven, 80 sellable published against 85 in stock with a 5-unit production reserve
  • Prices exist in the ERP and match the storefront, with quantity breaks
  • The mapping registry is generated from the ERP rather than hand-typed, and the register reports every reason a SKU could not complete an order
  • Sandbox and production ERP are tier-paired in code, so the live store cannot silently read sandbox data
  • Policy pages, privacy policy and terms exist and are wired up
  • The ERP and the vault are off the flat Docker network

Log

  • 2026-09-24 — Compiled from live configuration. Shipping found absent entirely; products identified as hazmat; refund policy link fixed.