Mousa BatarsehRoyal Apparel review Résumé
Independent review · royalapparel.net · Sep 28, 2026

Good blanks.Blankfields.

An independent review of royalapparel.net for the Digital Marketing & Ecommerce Coordinator role. I read the homepage, the sitemap's 1,063 URLs, the Men's category and 20 product pages — 39 page fetches plus 17 header checks, no logins, no carts. The garments are well documented: 28 colors, 9 sizes and 107 photos on style 5051. The data around them is not: no canonical on any page, a sitemap that is 38% redirects, a five-star rating hard-coded on every product, and GA4 events whose product names are empty strings. Six findings, five working fixes.

Scope served HTML, sitemap, robots.txt, inline product JSONRead 20 product pagesLogins / carts none
5051Unisex Short Sleeve Tee
Colors28
Sizes9 (XS–5X)
Photos107
Brand
Availability
hexColor
Rating
Canonical
GA4 item_name
Made in USAAs served · Sep 28, 2026

Why this review

Why Royal Apparel

Two new facilities, a West Coast warehouse and a new import division in twelve months means more styles, two inventory states and a second brand to keep straight in categories, feeds and tracking. That is the job in the posting.

Everything here comes from public pages: served HTML, the sitemap, robots.txt and the inline product JSON the site itself uses to render. Nothing was submitted, carted or logged into. The platform is custom, so every fix is written at the template or web-server level rather than for a particular app.

What ships with this page. A workbook with the 29-check scorecard, the six findings with their evidence files, a merchandising QA sheet for the weekly pass, and the 30/60/90 plan. Download the workbook.

First, what works

Three things the site does well

On the same public-page rubric I run on the ShelfMark Michigan index, royalapparel.net scores 78 of 100 — it would rank 12th of 21. The product data underneath is deeper than most of that index.

Six findings

Where the fields are blank

Each finding names the page, the count, the duty in the posting it maps to, and the fix. Evidence chips name the captured file behind the number.

Also noticed

Smaller things, for the same sheet

    Working fixes

    Five prototypes, built on your data

    Everything below runs on what the site served on Sep 28, 2026 — the real sitemap, the real product JSON, the real dataLayer pushes. Each one is the template or server change described in the finding.

    Fix 1 · finding 1

    One homepage, one hostname

    The chain a crawler walks today, and the one it should walk. Then the two rules that do it and the canonical every template would emit.

    Today

    After

    # Apache (.htaccess or vhost)
    RewriteEngine On
    # http → https, non-www → www, one hop
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\.royalapparel\.net$ [NC]
    RewriteRule ^ https://www.royalapparel.net%{REQUEST_URI} [R=301,L]
    # the homepage lives at / ; retire the stub and /index
    RewriteRule ^index/?$ / [R=301,L]
    # case-fold and slash categories
    RewriteRule ^category/(.*)$ /Category/$1 [R=301,L,NC]
    RewriteRule ^(Category|Accessory-Type)/([^/]+)$ /$1/$2/ [R=301,L]
    <!-- wam_tmpl/layout: emitted on every page -->
    <link rel="canonical"
          href="https://www.royalapparel.net{{ pretty_path }}">
    <!-- pretty_path resolves to: -->
    /                                      homepage
    /Category/Men/                         category
    /product/5051/Unisex-Short-Sleeve-Tee.html  product
    <!-- never a cgi-bin URL, never a hash -->
    Fix 2 · finding 2

    Sitemap, regenerated

    All 1,063 URLs in today's file, sorted into keep, redirect and exclude — and the first rows of the file that replaces it, generated from the catalog with a real lastmod per product.

    Excluded — transactional templates found in today's file

    Plus /404, /Register, a test page and the store-locator template. Retired styles below get 404 or 410 instead of a 200 that says "Product Not Found".

    StyleNameTodayAfter

    sitemap.xml — regenerated nightly (first rows)

    Fix 3 · finding 3

    One Product, one truth

    Style 5051's structured data as served — three blocks, two of them Product — and the single Product the template should emit, filled from the same product JSON the page already carries. The checker on the right runs the rules Google's product rich results require.

    Fix 4 · finding 4

    dataLayer linter

    The pushes the site makes today, run through a checker, and the corrected payloads built from the same products. The rules are GA4's own ecommerce event spec; the data is the Men's category and the 5051 product page.

    Fix 5 · finding 5

    A crawlable category grid

    The 21 Men's products the category serves today, rendered as server-side cards with real links and real pagination — custom-dye programs as "Request pricing" instead of $0.00, a New badge only where a street date says so, and Royal-made styles ahead of Basic Supply Co. imports.

    The scorecard

    royalapparel.net on 29 public-page checks

    The same rubric I run on ShelfMark, the Michigan Storefront Benchmark: findability, catalog, buy path, trust and content, scored 2 / 1 / 0 from what a public page shows. Open a pillar to read the evidence behind every score.

    If I joined

    The first ninety days

    Crawlability and tracking first, because everything else is measured through them.

    About the reviewer

    Mousa Batarseh

    Seven years merchandising and running wholesale and retail storefronts: two textile and apparel brands on Shopify and WooCommerce in parallel — styles, colors, sizes and inventory for 14,000+ SKUs, coupons and the seasonal promo calendar, banners and email assets, product data for marketplaces, and the technical SEO and GA4 reporting underneath. Blank apparel is the catalog I know best.

    Warren, Michigan · remote, hybrid or on-site as the posting allows · hireme@mousabatarseh.com · mousabatarseh.com · LinkedIn