Shopify theme rebuild · B2B pages · Technical SEO

Nordblooms

Nordblooms is a preserved-flower studio in SoHo, New York. It sells bouquets and vase arrangements online, and designs permanent botanical installations for offices, hotels and lobbies. I have been its Shopify developer, CRO and technical SEO lead since September 2024. In autumn 2026 that meant rebuilding the store’s theme and turning it into a site that sells to businesses as well as gift buyers.

The starting point

A theme update that kept the pages and dropped the code.

Shopify’s theme updater produced a newer copy of the store’s theme. It kept the templates and settings, and threw away the store’s custom Liquid, CSS and JavaScript. Copying the old files back would have undone the update itself.

So I rebuilt that custom layer on the new base, feature by feature, until the storefront matched the live one. Then I built the business pages, menu, homepage and new catalogue on top. The rebuilt theme went live on October 8, 2026.

Nordblooms homepage hero: a pink preserved peony arrangement on a marble table under the headline Gifts That Last for Years
EngagementSeptember 2024 – present
RoleShopify developer, CRO and technical SEO lead
PlatformShopify • Liquid • JavaScript • Admin API
24page sections in one shared kit behind every business page
13.8 → 5.3 MBplanter product page on a cold phone load
135 / 0good / poor URLs in Core Web Vitals after the layout-shift fixes
368 / 370products approved in Google Merchant Center

Two kinds of buyer, one storefront.

A gift buyer wants a beautiful arrangement, a clear price and a delivery date. A facilities manager or interior designer wants proof of past installations, an idea of scope and a fast way to start a conversation. Nordblooms had to serve both without one experience getting in the way of the other.

The rebuild gave each buyer its own route through the same site. Shop pages stay focused on products. A connected set of business pages, project case studies and enquiry forms leads commercial visitors toward a qualified conversation with the studio.

What I delivered

  • The theme’s custom layer, rebuilt cleanly on the new base.
  • A page system for industry, service and project pages.
  • A new header and mega menu, and a new homepage.
  • Enquiry forms that record where every lead came from.
  • A vase catalogue and a planter range, imported by script.
  • Speed, layout-shift and technical SEO work across the store.
  • A sales-led guide format for the blog, with its own checks.
Navigation

A menu that sends each visitor somewhere useful.

The header now carries nine sections, from flowers and gifts to green walls, corporate work and trade resources. Corporate opens onto industries, solutions and project case studies, and every panel carries image cards. No menu item is left without a destination.

On phones, the drawer gives each level its own look: section, tinted panel, group, link. Shoppers always know how deep they are. Menu changes are made by script with a dry run first, so a new page reaches the header, drawer and footer in one reviewed step.

Nordblooms desktop mega menu open on Corporate, with Industries, Solutions, Work With Us and Resources columns beside two image cards
Business pages

One kit of sections behind every industry page.

Offices, hotels, building lobbies, retail, healthcare, spa and wellness, yachts, new developments and bespoke residential work each have a page. So do the main solutions: moss walls, preserved trees, office plants, foliage planters and flowers for business.

All of them are built from 24 shared sections with one palette, type scale and button style. Each section is editable in the theme editor, and one setting tightens every section on phones. Where two pages covered the same subject, I merged them onto the URL that already ranked and redirected the other.

Nordblooms Office Flowers and Greenery landing page with a lobby of preserved planters, an intro with two photographs and four feature pills
Lead capture

Enquiries that arrive with their context.

One inquiry form serves every business page, so one change updates them all. It suggests US addresses as you type, and lets the visitor drop a map pin where the free address data misses a Manhattan building. It has its own date picker, and its scope, budget and product options are settings the studio can edit.

Every form now sends the form’s name, the page and its URL with the enquiry. Each accepted submission is also recorded in Klaviyo as an event, without subscribing anyone to marketing. All but one of the old forms on a third-party form service now post through Shopify’s own contact form. Downloadable resources open a short request dialog that keeps working alongside Shopify’s spam challenge.

Nordblooms workplace project inquiry form with company, office location, scope, project type, budget range, timeline and product checkboxes
Proof of work

Project case studies the studio can publish from the theme editor.

Business buyers want to see finished spaces. Each project gets its own page: an opening photograph, the project facts, the brief in four short passages, then before and after photo sets. A blank template lets the studio start the next one without a developer.

For the Energy Plus office, I prepared the photographs (resized, straightened, location data removed, alt text on each) and wrote the page only from what the photos show.

Nordblooms Energy Plus case study page: preserved moss and florals hero, project facts, reasons the client chose Nordblooms and the brief in four passages
Gallery and homepage

Built from the studio’s designs, section by section.

The studio sent each homepage section as two screenshots, the current state and the design. I built it as a set of reusable sections: an industries strip, gift and business split panels, solution rows, press quotes, a logo wall that reserves its height before the logos load, and reviews linked to the product each customer bought.

Nordblooms gallery page opening with a biophilic restaurant installation beside the heading The future of biophilic design, then a Bespoke Environments quote form
Nordblooms homepage solutions rows on dark green panels: architectural planters and preserved trees, each with a photograph and a link
Nordblooms homepage logo wall above customer reviews, each review with a circular photo, stars and a linked product card
Nordblooms best sellers row: product cards with tag badges, wishlist hearts, star ratings with review counts and colour swatches
Shopping

Product cards and pages that answer the next question.

Product cards regained the tag badges and wishlist heart the theme update had dropped. They also gained a star rating read straight from the review data, so nothing loads late or shifts the grid. A sold-out piece no longer turns grey; it offers a Notify me link like any other card.

On product pages, numbered steps walk through colour, vase and add-ons. The sticky add-to-cart bar was rebuilt to the studio’s spec on every product template.

Nordblooms product page for a pink preserved rose in a ceramic bud vase, with rating, numbered colour and vase type steps
New catalogue

113 vases and a planter range, imported by script.

The studio added a range of vases, bowls and sets from a dropship supplier. I imported all 113 with clean handles, SEO titles, 669 image descriptions and product categories. Prices and stock come from the supplier’s data, and every run keeps a record that can be rolled back.

The vase template restates the supplier’s tear sheet as a specification band with the technical drawing and a PDF download. Vases sold in two sizes switch instantly, like a variant. A second range of fiberglass planters followed, with a drainage-hole option carried as a line item property.

Nordblooms vase specification band listing material, dimensions, weight and carton beside a technical drawing, with the sticky add to cart bar below
Performance

Faster pages, and scores that describe what customers load.

The menu photos nobody saw

Fourteen mega-menu card photographs loaded eagerly at full page width: 2.4 MB on every phone visit, for a menu phones never draw. They now load lazily at the size they render, and switch to eager on desktop only once the page is idle, so the menu still opens with its photographs in place.

Originals behind 48px swatches

Variant thumbnails asked for the full-size file, so four 1.5 MB originals filled four finish swatches. Gallery images all loaded eagerly at high priority. Fixing both took a planter page from 13.8 MB to 5.3 MB and its Largest Contentful Paint from 4.3 s to 1.6 s on a phone.

Layout shift, site-wide

Search Console flagged 129 desktop URLs for layout shift. The causes were structural: a header height measured late, CSS streamed after its markup, sliders sized only by JavaScript. Shop All went from a CLS of 0.700 to 0.002, and the report moved to 135 good URLs and none poor.

Video off the first load

Autoplaying section videos downloaded with the page wherever they sat. Below the first section they now wait until they are about to scroll into view: 5.9 MB off the homepage and 6.7 MB off every flower product page.

Removing a fake score

The previous theme carried obfuscated scripts that switched off images and scripts for speed-testing tools, plus an invisible full-width glyph to game Largest Contentful Paint. I removed them. Real visitors get a faster store, and the scores now describe what customers actually load.

Measured, not assumed

Every change was checked in headless Chrome against the page before it: weight per resource type, CLS while scrolling, and the settled layout compared rectangle by rectangle, so a speed fix could not quietly change the design.

Technical SEO

Making the store readable to Google and to shopping listings.

Content Google could not see

Four sections printed collection headings and descriptions through document.write, and only for non-Linux browsers. The raw HTML, and Linux crawlers, saw none of it. The gate is gone, so collection pages now serve their heading and copy in the HTML.

Structured data that agrees with itself

One brand entity for the whole site, breadcrumbs on every page, Service markup on the business pages and corrected article dates. Review stars broke when two ratings landed on one product, so the theme now leaves the rating to the review app.

Shopping listings

Variant descriptions, availability and condition tags, and corrected Google product categories. Merchant Center approves 368 of 370 products, and a free shipping claim that did not match the checkout was removed from the product markup.

Every product photo described

An app had stamped the product title onto 350 of the 379 product images as alt text, and 29 had none. Each photograph now has a description written from the image itself, and the gallery template no longer overwrites it.

Links that go somewhere

97 broken links repaired across 45 blog articles (43 of them pointed at Google search result pages) and more than 45 redirects for dead URLs. Duplicate service pages were merged onto the URL that already ranked, with permanent redirects from the rest.

Metadata and indexing

New titles and descriptions across dozens of collections, articles and pages, the first sitemap the store ever submitted, noindex on search, cart and empty collections, and feeds kept out of the crawl.

Content

Gift guides written to sell, and checked before they publish.

The studio wanted blog posts that sell high-end pieces around real occasions. I designed a guide format with a contents box, stat tiles, comparison tables, product cards with live prices, order-by deadlines and a FAQ with matching structured data. Each guide is built from one source file and published on a schedule.

Before a guide publishes, a script checks every link against the store, every printed price against the live one, and how much text it shares with the other guides. A product is only featured after the checkout confirms it actually ships nationwide.

Product pick cards inside a Nordblooms gift guide, each with a photograph, a short description, the live price and a Ships nationwide label
On a phone

Checked at phone widths, in Chrome and in Safari’s engine.

Chrome’s phone emulation is not an iPhone. Layouts that only break in Safari were reproduced in WebKit and fixed there, like a featured photograph that collapsed to zero height on every iPhone and iPad.

Nordblooms homepage on a phone with the hero headline Gifts That Last for Years
Nordblooms mobile menu with the Corporate panel open on Industries, Solutions, Work With Us and Resources
Nordblooms workplace project inquiry form on a phone

How I worked

  • One item at a time: build it, push it, compare it with the live page in the browser, commit it.
  • A fix is done when the measurements match, not when the CSS looks right.
  • Every catalogue or SEO write keeps a before-image, so any run can be rolled back.
  • The studio edits pages in the theme editor daily, so I pull before working and never overwrite their edits.
  • Facts only the studio can give stay in brackets on a draft page. Nothing is invented for a client page.

A live store, edited every day, changed without surprises.

Nordblooms is trading while all of this happens, and the studio edits its own pages. The work had to be invisible except where it was meant to show. Speed and SEO changes were proven to leave the layout untouched, and every bulk change kept a way back. The studio’s AI shopping concierge has its own write-up in the Dahlia AI case study.

“Saad handled everything from Shopify store development and creating custom sections that are easily editable, to improving site speed, basic SEO, product uploads, and meta object creation.”
Isabelle Back, Founder & CEO, Nordblooms
Under the hood

The tools behind the work.

  • Shopify Online Store 2.0
  • Liquid
  • Theme sections & blocks
  • Vanilla JavaScript
  • CSS
  • Admin GraphQL API
  • Storefront API
  • Node.js scripts
  • Puppeteer
  • Playwright (WebKit)
  • Klaviyo
  • Leaflet
  • Search Console
  • Merchant Center
  • Schema.org

Planning a theme rebuild or a speed review?

Bring your store’s URL and the pages that matter most to sales. We can look at what a theme update would keep or lose, where page weight comes from, and which fixes are worth doing first.

Discuss a Shopify storefront project

Practical guides