Procastangling — A Bespoke PrestaShop 9 Commerce Platform
Procastangling is a specialist fishing-tackle retailer trading across the UK and Ireland. We built and maintain their entire commerce platform on PrestaShop 9 — one shared catalogue powering two storefronts (procastangling.com in £, procastangling.ie in €) and eighteen bespoke modules covering in-house search, a self-scheduling cron system, live Sortly stock, pricing, loyalty, click & collect and SEO.
Procastangling sells across two countries with one team and one catalogue. They needed a single system to run procastangling.com in pounds and procastangling.ie in euro, without duplicating products or bolting together a dozen third-party plugins that never quite fit an angling business.
The requirements ran deep: search that actually understands tackle and copes with typos; stock that always matches what's physically on the shelves; pricing, offers and shipping that behave fairly across a range spanning tiny hooks to 12-foot rods; and retention tools — loyalty, gift vouchers and rewards — that most off-the-shelf stores simply don't have. All of it had to stay in sync automatically, day and night.
The Solution
What we built
We build and maintain the whole platform on PrestaShop 9 as a true multistore, migrated from their previous PrestaShop 8 build, with a bespoke child theme and eighteen custom modules written specifically for how Procastangling trades.
Rather than depend on third-party services for the things that matter most — search, stock, currency routing — we built our own, so each behaves exactly as the business needs and nothing is held hostage to an external subscription. A single in-house cron system keeps every moving part current, and everything ships through version control with a tested dev-then-live workflow.
Technical Details
Under the hood
The store runs on PrestaShop 9.1.3 with one shared catalogue and two shops (UK/GBP, Ireland/EUR). All modules follow a consistent house architecture — PSR-4 SimonTodd\* namespaces, service classes behind thin hook bodies, and a shared Symfony/Twig admin design language — so the whole suite feels like one product, not a pile of separate add-ons.
Pricing, shipping and stock are computed server-side, so what a customer sees is always what they are charged. Deployment is Git-based over SSH with a DDEV environment mirroring production, and the platform deliberately avoids third-party dependencies for search, geolocation/currency and stock — each is handled by a module we own and can extend.
Key Features
Custom functionality
One platform, two storefronts
A true PrestaShop 9 multistore — procastangling.com (UK/£) and procastangling.ie (Ireland/€) — sharing one catalogue, with country detection, storefront routing and currency locking handled by our own Location & Currency module.
In-house instant search (Prosearch)
Typo-tolerant search built from scratch: trigram fuzzy matching, Levenshtein re-ranking, synonyms, price/attribute query understanding, merchandiser pins, behaviour-fed popularity and zero-result analytics. No third-party search service.
Self-scheduling cron system (Procron)
A minute-driven dispatcher with an admin GUI and run history. One server cron entry runs thirteen jobs on their own cadences, keeping stock, search, facets, the Sale category, feeds and sitemaps continuously up to date.
Live Sortly stock sync
Sortly is the stock source of truth; our read-only mirror pulls a 10-minute delta plus a nightly full reconcile, with a circuit breaker, low-stock alerts, dry-run mode and an exception dashboard.
RRP & savings display
Per-product and per-variant recommended retail pricing, showing the 'was' price and exact saving across listings and product pages, currency-aware for Ireland.
Carrier-aware shipping fees
Free delivery unlocked by order value, per-carrier eligibility (premium couriers never free), and fair surcharges on oversized rods and bedchairs — with clear small print explaining any fee.
Automated, honest Sale section
The Sale category rebuilds nightly from genuine reductions only, comparing RRP against the true tax-inclusive shelf price so nothing appears without a real price drop.
Price-match workflow
Customers submit a 'found it cheaper' request that runs through an approval state machine and, on approval, issues a single-use cart rule — with retailer whitelists and an immutable audit log.
Loyalty points programme
A rewards scheme on an immutable points ledger with tiers, expiry and reminders — points earned on every order.
Gift vouchers & cart recovery
Multi-currency, multi-store gift vouchers with a live-preview PDF builder, plus a three-stage abandoned-cart email sequence with optional discount and one-click cart restore.
Click & Collect + Order-for-Delivery
Per-store collection with timed slots and HMAC QR tickets, plus the ability to buy out-of-stock items on a lead time, tracked from sourcing to shipped.
SEO, feeds & sitemaps
Bespoke canonical/hreflang handling, a staff SEO-audit scanner, per-store XML sitemaps and Google/Microsoft shopping feeds regenerated nightly.
Custom discipline landing pages
Every discipline — carp, fly, sea, match, predator — gets a designed landing page with a hero, shop-by-type shortcuts and featured products, rather than a bare category list.
Mobile-first with an always-on bottom nav
Built for how anglers actually browse: a persistent bottom navigation bar (Home, Browse, Search, Account, Basket) and a full-screen Browse menu organised by discipline with live category counts.
Details
In depth
This is a platform, not a shop template. Below is a tour of the main systems we built and keep running.
Search we built from scratch
Rather than pay for a hosted search service, we wrote Prosearch — an in-house, typo-tolerant instant search. It uses trigram fuzzy matching with Levenshtein re-ranking, a synonym dictionary, query understanding (it recognises price and attribute intents), merchandiser 'pins' for promoting chosen products, popularity fed by real customer behaviour, and zero-result logging so staff can see what shoppers wanted but didn't find.
The in-house search returns matches as you type — here 8 of 23 results in 20ms, with brand, price and live RRP savings, plus keyboard navigation. No third-party search service involved.
The same catalogue work powers fast faceted browsing. We consolidated years of duplicate product options — carefully preserving option headings like Feather Colour and Lure Colour — and rebuilt the filters, so a big category narrows cleanly by discipline, size, colour and availability.
Faceted filtering across a 225-product Reels category — the filter index is rebuilt automatically by the cron system.
Landing pages built for how anglers shop
Each fishing discipline gets its own designed landing page — not a bare category list. A hero, a 'shop by type' grid, a 'new in' rail and best-seller shortcuts let anglers dive straight into the gear for their style of fishing, whether that's carp, fly, sea, match or predator.
The Carp & Specimen landing page — one of the bespoke discipline hubs, each with its own hero, category shortcuts and featured products.
A cron system that keeps everything current
Everything above stays fresh automatically thanks to Procron, a minute-driven scheduler we built. One real server cron entry pings it every minute, and Procron runs whichever registered jobs are due — each on its own cadence — with an admin screen, run history and secure tokens. It currently orchestrates thirteen jobs: Sortly stock (a 10-minute delta and a nightly full reconcile), both search indexes and the faceted filters, the automated Sale category, loyalty processing, gift-voucher expiry, hourly abandoned-cart recovery, per-store XML sitemaps, and the Google/Microsoft shopping feeds. Add a feature, register a job — it just runs.
Live stock, straight from Sortly
Procastangling manages physical inventory in Sortly, so we made Sortly the single source of truth and built Sortly Sync to mirror it into PrestaShop — strictly read-only, so the shop can never write bad data back. A 10-minute delta catches recent changes and a nightly reconcile guarantees the full catalogue matches, applied with efficient set-based SQL. It has a circuit breaker, low-stock email alerts, a dry-run mode and an exception-driven dashboard, and it even refreshes the search module's in-stock flags as levels change.
Pricing, offers and merchandising
A family of modules handles how products are priced and promoted. strrp stores a recommended retail price at product and variant level and shows the strike-through 'was' price and exact saving wherever a product appears, currency-aware for Ireland. shipfees applies carrier-aware shipping — free delivery unlocked by order value, premium couriers never made free, and fair surcharges on oversized items like rods and bedchairs, with plain-English small print. An automated Sale category rebuilds daily from genuine savings only, and Price Match lets customers submit a 'found it cheaper' request that runs through an approval workflow and issues a single-use cart rule.
strrp shows the RRP and precise saving against the price of the selected variant.shipfees: free UK delivery is unlocked, yet the bulky bedchair still carries a fair £20 carriage fee — applied only to the carriers it should.The automated Sale category — 645 products, every one a genuine reduction, rebuilt nightly by the cron system.
Keeping customers coming back
We built the retention toolkit in-house. Loyalty is a points programme on an immutable ledger with tiers, expiry and reminders — customers earn on every order, refer friends for bonus points, and redeem against future baskets from their account.
The loyalty portal — live balance, a referral programme, and clear earn/spend tiers, all inside the customer account.
Gift Vouchers are multi-currency and multi-store, with a live-preview builder that emails a branded, secure-coded PDF. And abandoned-cart recovery sends a configurable three-stage email sequence with an optional discount and one-click cart restore.
The gift-voucher builder — pick an amount, personalise the message, and see a live preview of the branded PDF that lands in the recipient inbox.
Fulfilment and operations
Click & Collect gives per-store stock, admin-editable slot patterns, timed reservations with cron expiry, HMAC-signed QR collection tickets and a staff till view. Order-for-Delivery lets customers buy out-of-stock items with a delivery lead time and tracks each through sourcing → received → shipped. Order Export gives the dispatch team a filtered, copy-paste-and-CSV/XLSX address tool for labels — read-only, so it can never disturb an order.
Found everywhere, indexed properly
On the marketing side we built a Canonical & Hreflang module that fixes the duplicate-content cases PrestaShop misses (multi-category products, tracking-parameter bleed, pagination, cross-language hreflang), a staff SEO Audit scanner that checks products, categories, pages and journal posts against SERP guidelines, per-store XML sitemaps, and Google/Microsoft shopping feeds generated per storefront and refreshed nightly. There's also an in-house Journal (blog) with clean URLs.
The in-house Journal — buyers' guides and reviews written by the shop team, filterable by discipline and topic for SEO reach.
Localisation and payments
Location & Currency detects a visitor's country, routes them to the right storefront and locks the correct currency — replacing three separate third-party plugins. Checkout supports Revolut, Stripe, Klarna and PayPal alongside cards, Apple Pay and Google Pay.
Designed mobile-first
Most anglers browse on their phone, so the storefront is built for mobile from the ground up. An always-visible bottom navigation bar keeps Home, Browse, Search, Account and Basket one thumb-tap away on every page, and a full-screen Browse menu organises the whole catalogue by discipline — with live category counts — so nothing is more than a tap or two away.
The mobile storefront with its always-on bottom nav — Home, Browse, Search, Account and Basket, on every screen.The Browse menu — the full catalogue organised by discipline, with live category counts.
One control panel for the theme
Finally, Procast Theme Settings replaces scattered config values and hand-edited SCSS with a single Design panel — colour/type/spacing tokens, header and megamenu options, the free-shipping bar, sticky add-to-cart, homepage hero, USP strip, per-page block visibility and scheduled blocks — so the team can tune the storefront without touching code.
Products auto-curated in Sale, all genuinely reduced
FAQ
Common questions
PrestaShop 9.1.3, running as a multistore for the UK and Ireland, with a bespoke child theme and eighteen custom modules we developed in-house — covering search, stock, pricing, loyalty, fulfilment and SEO.
No. We built the search engine ourselves (Prosearch). It's typo-tolerant, understands synonyms and price/attribute intents, supports merchandiser pins, learns from customer behaviour and logs zero-result queries — with no external search subscription.
A custom cron system (Procron) runs from a single server entry every minute and dispatches thirteen scheduled jobs on their own cadences — stock sync, search and facet reindexing, the Sale category, loyalty and voucher processing, cart-recovery emails, sitemaps and shopping feeds — all manageable from an admin screen with run history.
Physical inventory lives in Sortly, which we treat as the source of truth. Our Sortly Sync module mirrors it into PrestaShop read-only — a 10-minute delta plus a nightly full reconcile — with a circuit breaker and low-stock alerts, so the website can never overwrite the warehouse's numbers.
They share one catalogue but run as separate storefronts, each with its own currency and pricing. Our Location & Currency module detects a visitor's country, routes them to the right store and locks the correct currency, replacing several third-party plugins.