OA Defense Control Room
Editor's Tutorial

Who this is for: anyone who edits content on the OA Defense storefront — headlines, photos, pages, products, news, events, and dealers. No technical background needed. Everything happens in a normal web browser.

What "CMS" means: CMS (Content Management System — the admin website where you change what the public website says and shows). Ours is called the Control Room and lives at the /admin address of the storefront.

1The big picture

The storefront is split between two systems on purpose, so you can never accidentally break pricing or checkout while editing marketing content:

flowchart LR
  YOU[You, the editor] --> CR[Control Room /admin]
  CR --> HS[Homepage Sections]
  CR --> PG[Pages]
  CR --> PR[Products, Variants, Categories]
  CR --> PO[News Posts]
  CR --> EV[Events]
  CR --> FD[FFL Dealers]
  HS --> SITE[Live storefront]
  PG --> SITE
  PR --> SITE
  PO --> SITE
  EV --> SITE
  FD --> SITE
  WOO[WooCommerce] -->|price and stock| PR
  SITE -->|checkout handoff| WOO

One idea worth learning once: saving is publishing. For homepage sections, products, and dealers, the moment you press Save, the live site changes. Pages, news posts, and events have an extra Draft/Published switch — see section 15.

↑ back to top

2Logging in

  1. Open the storefront address and add /admin to the end:
    https://oadefense-storefront.fly.dev/admin
  2. Enter the editor email and password you were given.
  3. Press Log in. You land on the Control Room dashboard.

To log out, use the logout link, or open /admin/logout.

If you were sent a temporary demo link (an address ending in trycloudflare.com — a Cloudflare tunnel that previews the site through Cloudflare's network), the same trick works: add /admin to that address. Demo links expire; the fly.dev address is the stable one.

↑ back to top

3A tour of the Control Room

The left sidebar lists every kind of content you can edit. Each entry is a resource — a list of records of one type:

Every resource works the same way:

Fields shown greyed-out are read-only on purpose — usually because another system owns them (WooCommerce owns price/stock; the ATF dealer import owns dealer identity).

↑ back to top

4The golden workflow

Use this same five-step loop for every edit, no matter the content type:

  1. Find the record: pick the resource in the sidebar, use the search box.
  2. Edit: open the record, press Edit, change the field.
  3. Save.
  4. Check the live page: open the public page in another browser tab and refresh it. The cheat sheet tells you which public address each record feeds.
  5. Fix or move on: if it doesn't read right in place, go back to the form and adjust. Editing is cheap; check your work on the real page, not just in the form.

Tip: keep two tabs open side by side — one on the Control Room form, one on the live page — and just refresh the live tab after each save.

↑ back to top

5Editing the homepage (Homepage Sections)

The homepage is assembled from keyed sections. Each Homepage Section record has a key that tells the site where it appears. Never change the key of an existing section — the key is the address the homepage uses to find it. Change the words, images, and links freely.

Section keyWhat it controlsFields that matter
heroThe big banner at the top ("Serve Something Greater")Eyebrow (small line above the headline), Heading, Body, Image, and two CTA (Call To Action — a button with a label and a link) pairs: Link label / Link URL is the first button, Link2 label / Link2 URL is the second.
operateIntro to the "How we operate" blockEyebrow, Heading, Body
operate-discipline, operate-open, operate-trustThe three "How we operate" cardsHeading, Body
spotlightThe featured-product showcaseEyebrow, Image (overrides the product photo), Link label (the button text). The product's own name, summary, and specs come from whichever Product has its Featured box checked — see section 8. Turning this section's Enabled off hides the whole spotlight.
firearmsIntro above the pistol lineupEyebrow, Heading, Body
valuesIntro to the values blockEyebrow, Heading, Body
values-people, values-journeyThe two values cardsHeading, Body
eventsIntro above upcoming eventsEyebrow, Heading, Body
newsletterEmail signup copyEyebrow, Heading, Body
footer, seoNot homepage blocks — see section 6

Worked example — change the hero headline and button

  1. Sidebar → Homepage Sections.
  2. Open the section whose Key is hero, press Edit.
  3. Change Heading to your new headline.
  4. Change Link label (button text) and Link URL (where it goes, e.g. /firearms).
  5. Save, then open the site homepage in another tab and refresh.

The Enabled checkbox hides/shows a section without deleting it — useful for seasonal content. The Position number orders sections; leave it alone unless you intend to reorder.

↑ back to top

7Editing pages

Sidebar → Pages. Each Page record is one public URL (Uniform Resource Locator — the web address). The slug field is the last part of the address: the page with slug our-story is the live page /our-story.

Pages you'll find here: our-story, contact, warranty, shipping-returns, become-a-dealer, le-mil, careers, terms, privacy — plus the intro copy for landing pages: firearms, gear, events, news, find-a-dealer, and the gear category intros (holsters, magazines, sights-optics, accessories).

Fields on every page:

↑ back to top

8Products, variants, and categories

Products (sidebar → Products) are the pistols and gear. Each product's public page is /products/<slug>, e.g. /products/oa-2311-pro-elite. Editable marketing fields:

Variants are the buyable versions of a product (finishes, configurations). You can edit the variant Name, SKU (Stock Keeping Unit — the inventory code that identifies one exact sellable item), and display Position. Price and In-stock are read-only — WooCommerce owns them; the sync action refreshes them (section 9).

Categories — you can edit the display Name and Tagline. The slug and kind are read-only because store policy (like FFL requirements) depends on them.

↑ back to top

9Syncing a product to WooCommerce

When you've updated a product's marketing copy and want the WooCommerce listing to match, use the built-in safe sync:

  1. Open the product's detail view.
  2. Open the Actions menu and choose "Sync marketing copy and refresh Woo data".
  3. Confirm with Run safe sync.

What it does — and deliberately does not do:

After a sync, the product's Woo synced at timestamp updates. If something went wrong, the error appears in Woo sync error — copy that text to the developers if it isn't self-explanatory. A product needs its Woo product ID filled in (the matching listing's number in WooCommerce) for sync to work.

↑ back to top

10News posts

Sidebar → Posts. These are the articles at /news; each post lives at /news/<slug>.

  1. Press Create new post.
  2. Fill Title; give it a Slug (lowercase words joined by hyphens, e.g. range-day-recap-march).
  3. Write a one-or-two-sentence Excerpt — this is the teaser on the news index page.
  4. Attach a Cover image and write the Body.
  5. Leave Status as Draft while writing. When ready: set Status to Published and set Published at to now (or a past date). Save.

A post only appears publicly when it is Published and its publish date has passed — a future date schedules it.

↑ back to top

11Events

Sidebar → Events. These feed the /events page; each event lives at /events/<slug>. Same drill as posts, plus:

Known quirk: event times currently display in UTC (Coordinated Universal Time — the universal reference clock), so an event starting near midnight can show the wrong calendar day. Avoid midnight-adjacent start times until this is fixed.

↑ back to top

12FFL dealers

Sidebar → FFL Dealers. These records power the /find-a-dealer page and the dealer selection during firearm checkout.

Almost everything here is read-only by design: name, address, phone, license number, and coordinates come from the official ATF (Bureau of Alcohol, Tobacco, Firearms and Explosives — the federal agency that licenses dealers) data import. You cannot — and should not — hand-edit a dealer's identity.

You can edit the three OAD-managed judgments:

↑ back to top

13Working with images

↑ back to top

14Working with the rich-text editor

The Body field on pages, posts, events, and homepage sections uses a rich-text editor (a Word-like toolbar). Guidance:

↑ back to top

15Draft vs. Published

Content typeHow visibility works
Pages, Posts, EventsHave a Status field. Draft = invisible to the public (safe to work on over days). Published = live. Posts additionally need their Published at date to be in the past.
Homepage SectionsHave an Enabled checkbox instead. Unchecked = the block disappears from the homepage. Everything else takes effect the moment you save.
Products, Variants, Categories, DealersNo draft state — saving is live. Make product edits carefully, or draft the copy elsewhere first.

↑ back to top

16Fields you should not change

Deliberately not editable in the CMS (ask the developers): navigation menu, logo, footer column links, cart/checkout wording, search page copy, and legal "last updated" stamps.

↑ back to top

17Cheat sheet: "I want to change X"

I want to change…Go to…Check it live at…
The big homepage banner / its buttonsHomepage Sections → key hero/
The featured pistol on the homepageProducts → check Featured on the product; Homepage Sections → key spotlight for the frame around it/
Footer blurb / Instagram / LinkedInHomepage Sections → key footerany page, bottom
Browser-tab title / Google descriptionHomepage Sections → key seo (site default) or the specific Page's SEO fieldsbrowser tab
Our Story / Warranty / Careers / Contact…Pages → matching slug/our-story, /warranty, …
Product photos, description, specsProducts → the product/products/<slug>
Gear shelf intro copyPages → gear, holsters, magazines, sights-optics, accessories/gear, /gear/holsters, …
Publish a news articlePosts → create, then Status = Published/news
Announce a range dayEvents → create, then Status = Published/events
Make a dealer selectable / preferredFFL Dealers → Accepts transfers / Preferred/find-a-dealer
A price or stock levelNot here — change it in WooCommerce, then run the product's safe sync to refresh the displayproduct page

↑ back to top

18Troubleshooting

↑ back to top