Atlas Digital Design

Case study · Shopify

Intertwine House Plans.

Full-stack Shopify development, analytics and conversion work for a residential designer’s plan store. One engineer on every layer of the store since July 2024, full time since spring 2026.

At a glance

The store and the scope

ClientAngela, Intertwine House Plans: elevated coastal house plans, sold direct and through the national plan marketplaces. 430+ plans sold, the figure her store carries on every page.
PlatformShopify, Pipeline theme, heavily customized in Liquid. Shopify Flow, Forms, Email, metafields, Admin GraphQL API
Catalog66 house and garage plans, each sold as PDF, PDF with CAD, or Chief Architect files, with foundation options and a $75 study set
RoleLead developer and growth engineer: theme, structured data, feeds, analytics, ads, email and the sales data underneath

Measured

Where the store stands now

MeasureResultSource
Core Web VitalsPassed. LCP 1.5 s, INP 128 ms, CLS 0, TTFB 0.6 s on phonesChrome UX Report field data, 28 days to Oct 23, 2026
Site health98% with 0 errors across 254 crawled pagesSemrush Site Audit, crawl of Oct 12, 2026
LighthouseSEO 100, Accessibility 100, Best Practices 92PageSpeed Insights, Oct 23, 2026
Visits3.5×: 31,359 sessions June to September 2026 against 8,982 in the same months of 2025Shopify Analytics
PinterestMore than half of those visits. Catalog feed accepted for 66 of 66 plans with no errors or warningsShopify Analytics; Pinterest catalog report
Sales dataJuly 2026 ledger total matched the marketplace’s own statement to the centThe store’s sales ledger

Full-stack Shopify development

Theme, data and the Admin API

  • Rebuilt the store on a new Pipeline theme in June 2026, then shipped eight releases in September alone. Each was staged on an unpublished copy and verified by checksum before the client published it.
  • Custom Liquid throughout: product and collection templates, plan spec tables driven by metafields, a self-expiring sale skin that needed no theme publish, and an llms.txt template for AI crawlers.
  • Repriced 327 variants across 64 products for a sitewide sale through the Admin GraphQL API. The rollback file was written and tested before the first price changed, and every write was re-read and diffed.
  • Found a theme update had silently stopped loading the store’s custom JavaScript, which had disabled image zoom, anchor scrolling and a combined add-to-cart. Restored it with a guard against the next update.
  • Fixed a crawl block and a noindex tag set on the same 44 pages, which had cancelled each other out and left the pages indexed without titles.

Structured data

A schema layer for a product schema.org does not cover

House plans have no type of their own in schema.org, so each plan is a Product whose specifications go out as numbers: square footage, bedrooms, width and depth in feet with UN/CEFACT unit codes, foundation and framing. Every variant is its own Offer with shipping and return terms. Product, collection, organization and breadcrumb markup share stable ids, so search engines and AI assistants read one connected graph of the store.

The product and collection snippets are available as code samples, with client data removed.

Analytics

Tracking that counts each sale once and knows where it came from

  • Traced duplicated conversions across the whole funnel to a custom Measurement Protocol pixel firing beside Google’s tag, removed it, and confirmed single counting with test orders.
  • Added campaign tagging that lets Shopify separate paid Google orders from organic at the order. 42 tagged sessions arrived on the first day.
  • Instrumented the save-for-later list in GA4 and fixed a reporting gap: GA4 offers no item-level metric for wishlist events, so the plan now travels as event-scoped parameters with registered custom dimensions.
  • Built the store’s sales ledger in Python from six years of order and marketplace emails across five channels, regression-tested against a frozen baseline before every release.

Conversion work

Fewer obstacles between a visitor and a plan set

  • Introduced a $75 study set, cut from each full construction set and credited in full toward the plans, as the first purchase offered to new visitors.
  • On the paid landing page, moved the first plan from 920 px to 456 px down the screen, and took layout shift on the modification request form from 0.463 to 0.000.
  • Removed the arrival popups and the automatic welcome discount, and replaced them with a save-for-later list that needs no account. Each sign-up records the plan the visitor was viewing.
  • Fixed a mobile defect where the add-to-cart button collapsed to text width below the 600 px breakpoint, found from a user’s screenshot and verified by forcing the stacked layout on the live page.

Email and Pinterest

Two channels built from the store’s own data

  • Replaced the native Pinterest feed, which advertised variant prices well above each plan’s entry price, with a Liquid feed to the Google Merchant specification: one row per plan, tagged links, validated with a strict XML parser before cutover.
  • Built a pin composer in Python that renders four layouts per plan from its renders and floor plans, and a Pinterest API client over OAuth 2.0 with no delete calls anywhere in it.
  • Set up email marketing in August 2026: hand-coded launch and sale emails in Shopify Email, Shopify Forms for sign-ups, and Flow automations whose customer metafields carry the plan each subscriber wanted.
  • Repaired the modification request notification email, whose plan image broke in email clients because of a protocol-relative image URL, with a fix that also repaired past submissions without touching the live theme.

How changes ship

Every change ships with a way back

Every change is proposed before it is made, checked on the live store after it ships, and logged with how to undo it. Errors in this work are recorded beside everything else, including the ones caught in my own code, on the work log.