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 ,
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.phpPhase 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 countercatchall_skipped_realtime_oos. - PO Box check bypassed for FFL orders ,
cron/auto_fulfill_orders.phpline 286: the PO Box skip only applies whenrequires_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 toneeds_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 innew_gunbroker_orderinstead of raising a false double ship flag. - Orion phantom SKU registry , New
distributor_dead_skustable.ajax/process-fulfillment.phpOrion branch detects "Product XYZ does not exist" responses and records the UPC + SKU.cron/auto_fulfill_orders.phpfind_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 existingsendAwaitingFFLEmail()(FFL upload link, alternate email/fax). Throttled to once per 24h via[ffl_request_sent]tag inorder_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 fromincludes/header.php), Createdapple-touch-icon.png+-precomposed.pngat root,.htaccess301s: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):, Newseo_citiestable seeded fromatf_ffl_dealerswhere 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 owngoogle_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-arealists all 50 states. sitemap-cities.xmldynamically generated fromseo_cities, 3,148 URLs (1 hub + 50 state pages + 3,097 city pages). Registered in bothsitemap.xmlANDsitemap-index.php. Daily regen cronregenerate_city_sitemapat 4 AM. Weeklyweekly_seo_refreshMondays 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), Newincludes/aggregate-reviews.phphelper 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-restrictions301s 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