Sacks.ie: Custom WooCommerce Theme Rebuild
A custom WooCommerce theme for Ireland's bulk bag and sandbag supplier, replacing an Astra and Elementor stack. The home page now scores 99 for mobile performance, up from 64, with every product, order and URL carried over.
What changed
Lighthouse mobile tests on sacks.ie: the old theme the evening before launch (November 9), the new theme on launch day (November 10).
A Shop That Had Grown in Layers
Sacks.ie has supplied Irish builders, farmers, councils and fuel merchants for 17 years from its yard near Limerick: about 150 products, from a single sandbag to full pallets of one-tonne bulk bags, each with several quantity price breaks and next-day DPD delivery. I already knew the shop well, having built its DPD Ireland shipping integration and Eircode checkout autofill.
The site worked, but it had grown in layers. It ran on Astra and Astra Pro, with Elementor building the home page, the footer and eight content pages, and Slider Revolution driving the hero. That stack had real costs:
- Slow, heavy pages. The home page loaded 3.6 MB over 111 requests, including 71 CSS and JavaScript files. On a phone its main image appeared after 8 seconds.
- Weak on-page SEO. The home page and every content page had no H1, and the home page title was “Home – Sacks”. robots.txt pointed at a sitemap that returned 404, and links on every page led to missing pages.
- Hard to manage. Product descriptions carried years of leftover page-builder code, inline styles and shortcodes from an even older theme. Changing a sentence meant opening Elementor.
- A lot to protect. 150 variable products, live card payments, DPD label printing, PDF invoices and years of customer orders. A broken checkout or a lost URL would cost the business real money.
The brief: a modern, fast shop, with no data loss, no checkout breakage and no change to any URL.


Audit first, then design in the browser
Before designing anything, I mapped the live site: every plugin, every URL, the category tree, the checkout and shipping rules, the structured data and the SEO report the client had commissioned. That produced a list of everything Astra and Elementor were quietly doing that the new theme had to replace, or deliberately drop.
The new design was built as a clickable HTML prototype (home, category, product, basket, checkout, info pages and the mobile menu), so the client reviewed real pages in the browser rather than static mock-ups, and their feedback went straight into the build.
A custom theme, not another layer
The prototype became a lean custom WordPress theme driven by ACF Pro. It uses native WooCommerce templates and hooks throughout, so the payment, shipping and invoice plugins keep working exactly as before. The home page is built from editable sections, and shared details such as phone numbers, opening hours, review figures and shop messages live in one Theme Settings screen.
- Category pages group the bulk bags by size (Small, Quarter Tonne, Half Tonne, One Tonne and more) with a sidebar, filters and sorting, without creating a single new URL.
- Product pages put the buy box first: price range, size, stock, quantity price breaks and Add to basket, then the description.
- Instant search shows results from the first letter, filtered in the browser in under a millisecond per keystroke, with a server fallback.
- A slide-out basket and a stepped checkout built on WooCommerce’s own checkout form.
- Information pages (Delivery, Contact, About and more) moved off Elementor into one clean template, plus new Directions and How to Order pages.






Two custom plugins
Sacks.ie AI Assistant. An on-site assistant that answers product and delivery questions, adds products to the basket and tracks an order from its order number and email address. The lookup is privacy-safe: a wrong email gets no order details back.
Printed Bulk Bags configurator. A new landing page where trade customers build a custom printed bag (size, lifting loops, print sides) and send the enquiry straight to the yard, with a gallery of 16 real printed-bag photos that I retouched and optimized.

Technical SEO, built in
- One H1 on every page and a proper H1 > H2 > H3 order.
- A new home page title and description written around real search terms.
- LocalBusiness, FAQPage, Product and BreadcrumbList structured data, added to Yoast’s graph without duplicates.
- robots.txt and the sitemap reference fixed, links to six missing pages removed, and an
llms.txtfile added for AI search tools. - A sitemap bug found and fixed before launch that would have dropped 21 products from Google’s product sitemap.


Proving it on a full staging copy
I cloned the live shop to a protected staging site that couldn’t send emails, book couriers or be indexed, and compared old and new side by side before anything went live:
- 195 live URLs, all returning the same status code.
- 175 SEO titles and descriptions, unchanged.
- 15 basket and checkout scenarios across Ireland, Northern Ireland, the UK and the EU, matching the old site to the cent on subtotal, shipping, VAT and total.
- Order management: statuses, PDF invoices, packing slips and DPD labels.
Over 240 product descriptions were cleaned of old builder code, with a full backup and a one-command restore. Database autoload was trimmed by 55%, and the server’s PHP cache was tuned with the host’s approval, which speeds up the admin as well as the shop. The switch itself is reversible: the old theme and its content stay in the database, so the shop could roll back in minutes.
Results
Lighthouse mobile tests on sacks.ie: the old theme the evening before launch, the new theme on launch day.
| Page | Metric | Before | After |
|---|---|---|---|
| Home | Performance score | 64 | 99 |
| Home | Largest Contentful Paint | 8.1 s | 1.9 s |
| Home | First Contentful Paint | 3.6 s | 1.4 s |
| Home | Total download | 3.6 MB | 0.6 MB (−83%) |
| Home | Requests | 111 | 52 |
| Product | Performance score | 65 | 75 |
| Product | First Contentful Paint | 2.9 s | 1.3 s |
| Product | Total download | 1.4 MB | 0.8 MB (−42%) |
On desktop the new home page scores 99 and the product page 92. In pre-launch tests, uncached pages also came back from the server 25–31% faster, with 57–71% less HTML.
And what didn’t change matters just as much: every URL, every product, every order, checkout totals to the cent, and the SEO title and description of every page except the home page, which was rewritten on purpose.
Faster, Cleaner, Nothing Lost
Sacks.ie now runs on a theme built for the shop: a home page that scores 99 on mobile, pages that are easy to edit, and SEO built in. Every product, order and URL came across untouched, and the old theme stays one click away.
More work
Sacks.ie: DPD Ireland Shipping Integration
Custom WooCommerce plugin booking DPD Ireland shipments and printing labels in bulk for this Irish retailer, replacing a manual, one-parcel-at-a-time process.
Sacks.ie: Eircode Checkout Autofill
Custom WooCommerce plugin adding Eircode-powered address lookup to checkout for this Irish packaging and industrial supplies retailer, cutting form fields and delivery errors.
Iceland Review: Stopping the Bot Attack Behind Weeks of 502 Errors
Weeks of 502 and 504 errors on Iceland Review's WordPress site turned out to be a large-scale bot attack on old, forgotten URLs. I traced it in the server logs, stopped it, and put a layered defense in place so the next one is stopped automatically.