What's new in 3.9.0 (May 31, 2026): Two front evening: (A) order processing reliability , catch all GB re listing race, multiple auto fulfill bugs, Orion phantom SKU registry. (B) Massive SEO attack ,

Updated October 22, 2026 in What's new

Released May 31, 2026. Two front evening: (A) order processing reliability , catch all GB re listing race, multiple auto fulfill bugs, Orion phantom SKU registry. (B) Massive SEO attack , false-410 cleanup, 3,097 nationwide city landing pages, brand page enhancements with aggregate reviews + monthly trending sections, blog based shipping restrictions reference.

A) Order Processing Reliability

  • Catch all GB re listing race fixed , cron/sync_gunbroker_parallel.php Phase 1.6 now bulk queries the distributor mirror for candidate UPCs RIGHT BEFORE inserting queue rows. Previously the catch all re listed sold products in the same sync pass before the distributor inventory cron caught the OOS event: one lower was re listed 29s after it sold and a second customer ordered it 9s later, unfulfillable. New stats counter catchall_skipped_realtime_oos.
  • PO Box check bypassed for FFL orders , cron/auto_fulfill_orders.php line 286: the PO Box skip only applies when requires_ffl=0. FFL orders always ship to the dealer's address, never the customer's billing PO Box. FFL orders for customers who bill to a PO Box were bailing on a check that didn't apply to them.
  • Double ship risk detection tightened , cron/auto_fulfill_orders.php: the old regex matched any "API error" as a timeout, escalating cleanly rejected orders to needs_human_review. New separation: true connectivity timeouts (cURL/network/socket) still escalate; clean structured rejections ("Product does not exist", "not found", "insufficient inventory", 4xx HTTP) get a plain note. A distributor blocked order now stays in new_gunbroker_order instead of raising a false double ship flag.
  • Orion phantom SKU registry , New distributor_dead_skus table. ajax/process-fulfillment.php Orion branch detects "Product XYZ does not exist" responses and records the UPC + SKU. cron/auto_fulfill_orders.php find_sources() excludes a distributor for 7 days when one of its SKUs has been recorded as phantom for that UPC. Seeded with the 2 known so far: NAA Recluse (744253004025) + Panzer FS1 mag (051655231026). The next such order auto routes to the next best source instead of failing on the phantom SKU.
  • FFL request auto email , cron/auto_fulfill_orders.php: when an FFL order has no dealer assigned and the stock isn't STS only, automatically send the customer the existing sendAwaitingFFLEmail() (FFL upload link, alternate email/fax). Throttled to once per 24h via [ffl_request_sent] tag in order_status_history. Removed the SQL gate that previously excluded those orders from the cron loop entirely.
  • [needs_manual_distributor:VendorName] tag added to skip note prefixes for Athlon/Davidsons items so a future admin filter can split the manual distributor queue from generic review.

B) SEO Attack , Indexing + National Expansion

  • False-404/410 mass cleanup , recovered 7,500+ daily false negative crawl signals:, Created live/favicon.ico + live/favicon.png + live/assets/images/favicon.png (was 2,845 daily 404s on the asset path alone, referenced from includes/header.php), Created apple-touch-icon.png + -precomposed.png at root, .htaccess 301s: product-search-results (3,640 daily hits) → /search, product-review → /reviews, store-policies → /privacy, getimage.php → the placeholder image, product-category-group/* → /category, product-manufacturer/* → /manufacturer/*, self heal /live/live/* → /live/*
  • 3,097 nationwide city landing pages at /live/gun-store-in-(city-slug)-(state-slug):, New seo_cities table seeded from atf_ffl_dealers where city has 10+ FFL dealers, All 50 states covered. Top: TX 317 cities, FL 186, NC 146, GA 132, OH 127, PA 119, MI 119, MO 109, CA 102, TN 87, Each page shows REAL local FFL dealer count (per page uniqueness signal , avoids doorway page penalty), GunStore + FAQPage + BreadcrumbList JSON LD, with AggregateRating drawn from the store's own google_reviews, Restricted state compliance banner auto appears on CA, CT, HI, IL, MA, MD, NJ, NY, OR, RI, WA pages , deep links to the matching anchor in the shipping restrictions blog post, Positioning: "online retailer ships to your FFL," NOT "drive to our shop", No phone numbers on the city pages, contact form links instead
  • 50 state index pages at /live/service-area/(state-abbr) , list every city served in that state with FFL count per city. National hub at /live/service-area lists all 50 states.
  • sitemap-cities.xml dynamically generated from seo_cities , 3,148 URLs (1 hub + 50 state pages + 3,097 city pages). Registered in both sitemap.xml AND sitemap-index.php. Daily regen cron regenerate_city_sitemap at 4 AM. Weekly weekly_seo_refresh Mondays at 6 AM bumps lastmod + pushes URLs through IndexNow to Bing/Yandex.
  • Brand pages overhauled , manufacturer.php:, H1 changed to "Buy {Brand} Online" (vs the static brand name), New includes/aggregate-reviews.php helper computes aggregate review stats per brand. Injects AggregateRating into the Brand schema + visible stars block when >=5 reviews exist. Verified live on several brand pages., "Hot {Brand} Items, {Current Month}" section with last-30-day order count + sold this month indicator per product, "{Brand} News & Articles" section pulls recent brand mentioning blog posts
  • Category pages also get the AggregateRating stars block + schema fragment via the same helper.
  • Shipping restrictions reference , published as a blog post at /live/blog/firearm-shipping-restrictions-by-state. Covers all 12 restricted states with three sections per state: what we CAN ship, what we CAN'T ship, and "for sellers and receiving FFLs" notes. Includes the store's clarified policy: we sell to all states with proper credentials, swap magazines for compliant capacity, never modify firearms (no pinning barrels, no featureless conversion). Standalone /live/shipping-restrictions 301s to the blog post.
  • AI description backfill complete (background run from 2026-05-30), no thin descriptions left across the active in stock catalog.

Operating Rules Captured

  • Rules recorded for future work:, The store is an online retailer, not a walk in shop , the physical storefront is a compliance presence, Brand pages use brand logos + WCAG AA contrast, Brand pages need freshness signals , monthly hot items, coming soon, news, Reduce customer phone calls , don't surface the store phone number on most customer pages; use the contact form, Update order processing scripts with each new fulfillment rule, Distributor phantom SKU registry generalizes to any future distributor with catalog drift, Catch all real time OOS gate REQUIRED, Athlon items are always manual , no API, never will be

All releases: What's new in Trinity. The same notes are on the What's New page in your admin.

<!-- search: what's new whats new change log changelog release notes update version 3.9.0 may 31 2026 May 2026 catch all gb re listing race fixed po box check bypassed for ffl orders double ship risk detection tightened orion phantom sku registry ffl request auto email needs manual distributor vendorname tag false 404 410 mass cleanup 3 097 nationwide city landing pages 50 state index pages sitemap cities.xml brand pages overhauled category pages shipping restrictions reference ai description backfill complete -->

Still stuck? Email support@2adata.com and tell us which article you were reading.

Comments

No comments yet. Questions and tips from other store owners are welcome.

Leave a comment

Your first comment is reviewed before it appears. We email you a link to confirm it is you; your address is never shown or shared.