Condition survey lifeinadollhouseshop.com 6 Sep 2026

The photography is doing all the work. The build is not helping.

A measured design audit of a 1:12 scale miniatures shop — 24 findings, taken from the live DOM rather than by eye.

Surveyed
Home · Product · Shop · About · Featured In · Custom Inquiries
Viewports
1440 × 900 · 390 × 844
Method
Headless Chrome — Resource Timing, PerformanceObserver, computed styles
Catalogue
249 products · prices ₱500 – ₱174,900
2,951KB
One heading font — 64% of the whole page
1.84:1
Contrast on every primary button. AA wants 4.5:1
3,441px
Homepage gallery with no text and no links — 36% of the scroll
0.0001
Cumulative layout shift. Genuinely excellent

Where this stands

Twenty-four findings: five critical, ten serious, nine polish.

Almost every problem below is a case of the site failing to spend its best asset. The product photography is excellent; the build repeatedly gets in its way — a watermark placed over the merchandise, a press wall flattened into a raster, three thousand pixels of unclickable gallery.

Three findings account for most of the damage: a 2.95 MB heading font, a button colour at 41% of the required contrast, and a custom-work page with no inquiry form on a business whose headline product is listed at ₱174,900.

None of this needs a redesign. Six of the fifteen critical and serious items are theme settings or copy.

What is already working

  • CLS 0.0001 — effectively zero layout shift, which most Shopify storefronts do not manage.
  • FCP 352 ms, LCP 1.3 s on a fast connection, despite the font.
  • 30 :focus rules and 3 prefers-reduced-motion blocks — keyboard and motion accessibility were considered.
  • Valid Product JSON-LD on the product page.
  • No horizontal overflow at 390pxscrollWidth equals the viewport exactly.
  • Filtering, sorting and pagination all present and functional on collections.

Critical

Costing money or excluding customers right now.

C1
Critical

The heading typeface ships 2.95 MB — 64% of the page

shipporimincho_n4.woff2 transfers at 2,951 KB decoded. Total uncached page weight is 4.6 MB across 194 requests, so this one file is nearly two-thirds of everything the browser downloads.

Shippori Mincho is a Japanese Mincho carrying the full JIS kanji set. The store renders roughly 100 Latin glyphs. The other ~7,000 are paid for on every first visit.

Five @font-face rules declare it — four at weight 400, one at 700. None declares font-display, so the browser defaults to auto: a flash of invisible text while a 2.95 MB file downloads. On 4G that is several seconds of blank headings.

Fix

Switch to a Latin-subset face in the theme's typography settings, or self-host a subset built with pyftsubset (Latin, punctuation, and the ₱ sign). Add font-display: swap. Expected result: 2,951 KB → 20–30 KB — the single largest win available anywhere on the site.

C2
Critical

Every primary button fails WCAG AA at 1.84:1

White text on #B0C0DE measures 1.84:1. AA requires 4.5:1 at these sizes, so the buttons sit at 41% of the requirement.

Measured contrast, homepage and product page
ElementTextGroundRatioNeeds
SHOP — the only homepage CTA#FFFFFF#B0C0DE1.84:14.5:1
Add to cart#FFFFFF#B0C0DE1.84:14.5:1
View Cart#FFFFFF#B0C0DE1.84:14.5:1
Sale badge#FFFFFF#B0C0DE1.84:14.5:1
View all link#B0C0DE#FFFFFF1.84:14.5:1
Sale price, 24px#E2BBC4#FFFFFF1.73:14.5:1

The sale price is the worst of these. On a kitchen discounted from ₱31,800 to ₱19,100, the discounted figure renders in pale pink at 1.73:1 — the number most likely to close the sale is the least legible thing on the card.

Fix

Either darken the button fill to roughly #4A6491 and keep white text (≈4.6:1), or keep the periwinkle fill and set the label to the ink colour #16202E (≈9.6:1). Both preserve the brand. For sale prices, use a saturated red or the body ink, and keep the compare-at figure struck through in grey.

C3
Critical

The custom-work page has no inquiry form

/pages/custom-inquiries contains zero <form> elements and zero email inputs. The only conversion path is a mailto: link rendered as body text:

Email: lifeinadollhouse.shop@gmail.com

This is the store's highest-value offer. The homepage lists a one-of-a-kind dollhouse at ₱174,900, and "Kitchens | Custom" is a top-level collection. The page runs 5,720 px and 168 words to arrive at a Gmail address typed into a paragraph.

A mailto: link does nothing for anyone on webmail without a configured default client — which is most people on a phone. Nothing is captured, no response time is stated, and there is no button.

Fix

A real inquiry form with five or six qualifying fields — project type, whether an existing dollhouse is involved, budget band, target date, description, image upload — plus an autoresponder that sets an expected reply window. This is the highest-revenue item on the list.

C4
Critical

The mobile hero is a 168px unreadable strip with no alt text

The hero is one flattened PNG — New_Website_Main_Photo_collage_3_1296x.png, 1238 × 533 — showing three interiors side by side, inside a slideshow that holds a single slide. At 390px it renders 390 × 168 and the three interiors become illegible thumbnails. Its alt is empty.

The section contains exactly four characters of text: "SHOP". No headline, no statement of what the store sells, no reason to stay.

Above it the header measures 446 px on desktop — half a 900px viewport before any content — including a 38px empty announcement bar. On mobile a visitor scrolls roughly 370 px of chrome before the first product appears.

Fix

Replace the flattened collage with real markup: a headline, one line of copy, a CTA, over a single responsive image. Art-direct the mobile crop separately instead of scaling the desktop composition down. Give the image descriptive alt text, and trim the header — the logo does not need 230 px on a phone.

C5
Critical

There is no email capture anywhere on the site

querySelectorAll('input[type=email]').length returns 0 on the homepage, About, Featured In and Custom Inquiries. No newsletter, no back-in-stock alert, no waitlist.

The homepage currently features a sold-out product — Scalloped Pendant Light Fixture, ₱1,600 — with no way to be told when it returns. For a maker-led store where stock is limited by hand production, every sold-out listing is a captured-demand signal being thrown away.

Fix

Back-in-stock notification on sold-out variants first — it converts demand that already exists and needs no new traffic. Then a footer capture with a concrete offer ("new pieces and restocks, roughly monthly") rather than a generic subscribe box.

Serious

Suppressing conversion, search visibility or usability.

S1
Serious

3,441 px of the homepage is a gallery with no text and no links

Section #shopify-section-1581385581139 measures 3,441 px tall on mobile with textLength: 0, links: 0, and nine images. Total mobile page height is 9,678 px — so this is 36% of the entire homepage: four phone screens of photography that cannot be clicked, captioned or bought from.

On desktop the same nine images sit in an uncontrolled grid. Measured left edges by row:

row 1   63px   328px   533px
row 2   62px   328px   604px
row 3   63px   306px   543px

Nothing aligns to anything, and widths differ within each row, so it reads as broken rather than as deliberate masonry.

Fix

Link every image to its product or project. Add a heading and short captions naming each build. Then either align to a real grid with a fixed aspect ratio or commit to proper masonry with consistent gutters — the current state is neither.

S2
Serious

The press wall is a single flat PNG

The "Featured In" block is one raster image — featured_in-01_360x.png, alt="Life In A Dollhouse Featured In graphic". Section stats: one image, zero characters of text, zero links.

It carries eight genuine trust signals — The Wall Street Journal, House Beautiful, Better Homes & Gardens, CNBC Make It, Apartment Therapy, Star Tribune, Localish, Vale Magazine — and not one is text, and not one links to the piece. They are invisible to search engines, invisible to screen readers, and unverifiable to a buyer deciding whether to send ₱174,900 to a small shop.

The logos are also optically unbalanced inside the raster: WSJ and Star Tribune dominate while Apartment Therapy nearly disappears.

Fix

One <img> per publication with its name in the alt, each wrapped in a link to the article, normalised to equal optical weight rather than equal pixel width. The /pages/new-featured-in page already holds 14 external links — the homepage block should inherit them.

S3
Serious

The watermark sits on top of the product

A large opaque "LIFE IN A DOLLHOUSE" house badge covers roughly a quarter of every catalogue image, placed over the merchandise rather than beside it.

On the rug range this is actively destructive. /collections/all opens on nine near-identical Anne Miniature Dollhouse Rug colourways at ₱700 each — Blue, Chai, Charcoal, Light Gray, Natural, Vintage Rose and more. The pattern and colour are the product, and they are exactly what the badge covers. The same badge repeats through the product gallery and the related-products row, so four different rugs read as four copies of one image.

Fix

Move the mark to a corner at 30–40% opacity and shrink it to no more than 8% of the frame — or drop it from catalogue images entirely and keep it only on lifestyle shots headed for Pinterest and Instagram.

S4
Serious

There is no type scale

Every visible character on the site is Shippori Mincho. Measured across the homepage:

Font size distribution, homepage text elements
SizeLine-heightElementsWhat uses it
18 px1.4106body, nav, buttons, product titles, prices, footer
25.2 px1.442H1, H2 and H5
23.4 px1.08
32.4 px1.43largest heading on the page

The largest heading is 1.8× body; most are 1.4×. H1, H2 and H5 all render at the same 25.2 px. Nothing in the typography tells the eye what matters, which is why the page reads as one undifferentiated column.

Body line-height is 1.4 — tight for any text, and serif body copy wants more room than sans, not less.

Fix

Set a real scale — 15 / 17 / 21 / 28 / 40 / 56 works for this content — and hold to it. Add one weight step for emphasis. Take body line-height to 1.6 minimum. This costs nothing but theme settings and changes how considered the whole store feels.

S5
Serious

Heading order is inverted and the H1 is wrong

Document order on the homepage:

H2   Hi, I'm Ella!
H1   Ella's Top Picks        ← the only H1 on the page
H2   Follow me on Instagram:
H5   Your Order

The single H1 on the store's most important page is a collection title. The brand statement above it is an H2, and the hero has no heading at all.

/collections/all — the main Shop destination, 249 products — has H1: "Products", no collection description, and the title "Products – Life In A Dollhouse".

Fix

One descriptive H1 per page, first in document order; demote section titles to H2. Give /collections/all a real name and two or three sentences of intro copy — it is the page most likely to rank for "1:12 scale dollhouse furniture".

S6
Serious

Nine images carry filename or empty alt text

alt="IMG_7182.jpg"
alt="IMG_6968.JPG"
alt="IMG_1590.jpg"
alt="photo_feb_15_3_34_34_pm.JPG"
alt="IMG_6018.JPG"
alt="IMG_7561.JPG"
alt=""   × 3   (including the hero collage)

All twelve Instagram tiles share one identical string: alt="Instagram life.in.a.dollhouse".

For a store whose photography is its main sales argument, this discards the descriptive text most likely to bring in image-search traffic.

S7
Serious

29 tap targets fall below 44 px on mobile

Measured at 390 × 844
ElementWidthHeight
Hamburger menu3030
Cart link9224
Social icons (× 3)2327
Footer links (× 5)27
Mobile nav rows28035
View all6933

The hamburger matters most: it is the only route to navigation on mobile, at 30 px square against a 44 px guideline.

Fix

Increase padding rather than font size — the touch area grows without the visual mark changing.

S8
Serious

Add to cart does not read as the primary action

On the product page the button measures 148 × 30 px in pale periwinkle with a white label at 1.84:1. It sits beside the quantity box and is visually lighter than the Size dropdown directly above it. The dropdown looks more important than the purchase.

On mobile it is neither full-width nor sticky, so on a 3,433 px page it scrolls out of view within one swipe.

There is no stock indicator, no shipping estimate, no returns line and no production-time note near it — on a store where "READY TO SHIP" versus custom is the central distinction, and lead time is the buyer's main question.

Fix

Full-width, high-contrast, minimum 48 px tall, sticky on mobile. Add one line beneath it covering stock, dispatch time and returns.

S9
Serious

An empty announcement bar renders on every page

<div class="notification header-announcement">

</div>

38 px tall, blush pink, containing only whitespace — present on the homepage, the product page and every collection. It reads as a broken component.

It matters more than a stray div normally would, because the Instagram feed in the footer is currently surfacing a "pre–black friday SALE — 20% off all ready to ship, 15% off all custom" post. Either a promotion is live and unannounced, or the feed is serving creative from last November. Both are worse than an empty bar.

Fix

Fill it with one live message or disable it in the theme editor, then audit the Instagram block for stale promotional creative.

S10
Serious

Instagram tiles ship at 6× their display size

Twelve tiles render at 180 × 240 CSS px and are sourced at 1080 × 1440 — a 6× oversample, from a third-party host outside Shopify's image pipeline, so no responsive srcset applies. The first tile is loading="eager".

Separately, every content image on the homepage is loading="auto" — effectively eager. Twenty images are fetched before first paint, including the nine-image gallery three screens down.

The same app throws a preload warning on every template:

The resource https://bucket.useifsapp.com/posts/…/3886191424753203197.jpg
was preloaded using link preload but not used within a few seconds
from the window's load event.
Fix

Add loading="lazy" below the fold. Check whether the Instagram app exposes a size setting; if not, weigh whether twelve tiles of duplicated content earn their bandwidth.

Polish

Worth fixing when the template is next open.

P1
Polish

Ragged product grid

Card images render at 165×141, 165×217, 165×165 and 165×155 — no fixed aspect ratio. Rows are uneven, Sale and Sold Out badges float at different heights, and prices never align across a row. Set one aspect ratio with object-fit: contain on a neutral ground.

P2
Polish

Unbounded product titles

"READY TO SHIP! Dollhouse Kitchen with Miniature Refrigerator and Double Ovens - 1:12 scale by Life In A Dollhouse" runs seven lines on a mobile card. Nearly every title repeats - 1:12 Scale by Life In A Dollhouse on a single-brand store whose scale is already in the site title. Clamp to two lines; move the suffix into product metadata.

P3
Polish

Shop opens sorted alphabetically

/collections/all (249 products) defaults to Alphabetically, A–Z, so the first two screens are nine near-identical Anne rugs. The first impression of the catalogue is repetition. Switch to Best Selling or a curated manual order.

P4
Polish

Currency label disagrees with prices

The picker reads USD while every price renders as ₱700.00 PHP. Shopify is geolocating correctly; the selector label is not following. Confusing at best, a checkout-abandonment risk at worst.

P5
Polish

No breadcrumb on the product page

[class*=breadcrumb] returns nothing. Navigation is a "Back to: Ella's Top Picks" link plus Previous / Next, which occupies the prime top-right position for very little value. A breadcrumb helps both wayfinding and search.

P6
Polish

Product specs are run-on paragraphs

Colour, sizes and materials arrive as separate one-line paragraphs — "Color: Mist", "Available Sizes:", "Small- 5 x 8 inches", "Large- 8 x 10 inches". This is tabular data; make it a definition list. And add the full-scale equivalent — a 5 × 8 inch rug at 1:12 is a 5 × 8 foot rug in a real room — because that conversion is what this audience actually buys on.

P7
Polish

jQuery 1.9.1 loaded from a third-party CDN

ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js, 32 KB, released 2013. jQuery before 3.5.0 carries known XSS issues (CVE-2020-11022, CVE-2020-11023), and it loads render-blocking from a domain the store does not control. Worth raising with the theme developer.

P8
Polish

Twitter bird share icon

Dated since the 2023 rebrand. A small signal, but it sits on every product page.

P9
Polish

Console errors on every page load

Two errors on every load — a blocked shop.app frame (CSP frame-ancestors, Shopify-side and benign) and the resulting 403. Worth confirming with Shopify that Shop Pay's messaging component is actually functioning, since it is being blocked.

Fix schedule

Ordered by return on effort, not by severity. Phases are sequential because each one clears the ground for the next.

Theme settings and copy

This week · ~3 hours

No development. Every item here is the theme editor or a content field.

#FixEffort
C1Swap the heading font to a Latin subset; add font-display: swap30 min
C2Darken the button fill and the sale-price colour30 min
S9Fill or disable the empty announcement bar5 min
P3Change the default collection sort5 min
S5Fix heading levels; write a collection intro1 hr
S4Set a type scale; take body line-height to 1.61 hr

Result: ~99% less font weight, WCAG AA on every call to action, and a visible typographic hierarchy — for about three hours and no code.

Content and merchandising

This month · ~4 days
#FixEffort
C3Build the custom inquiry form and autoresponder1 day
C5Back-in-stock notifications; footer email capture½ day
S3Re-export catalogue images with a corner watermark1 day
S2Rebuild the press wall as linked, individual logos½ day
S6Write alt text across the homepage2 hrs
S7Increase mobile tap-target padding2 hrs

Result: the two highest-value paths on the site — custom work and restock demand — finally have a way to convert.

Template work

Next quarter · ~6 days
#FixEffort
C4Rebuild the hero as real markup with mobile art direction2 days
S1Make the gallery linked, captioned and aligned1 day
S8Sticky, full-width Add to cart with a trust line1 day
S10Lazy-load below-fold images; review the Instagram app½ day
P1 · P2Fixed card aspect ratio; clamp titles½ day
P5 · P6Breadcrumbs; structured spec list with full-scale equivalents1 day

Measured reference

Everything above, as recorded.

Palette in use

#FAEEF4page ground
#B0C0DEbuttons — fails
#A6B2C9secondary
#E2BBC4sale price — fails
#5C5C5Fbody text
#222222headings
Typography
Families in useShippori Mincho — 100% of visible text; GTStandard-M
@font-face rules5 — four at weight 400, one at 700
font-displaynot declared
Body18 px / 25.2 px (1.4)
Largest heading32.4 px — 1.8× body
Homepage geometry, 390 × 844
Page height9,678 px
Untitled gallery section3,441 px — 36%
Header + empty bar, desktop446 px
DOM nodes995
Load, uncached, 390 px
Total4.6 MB · 194 requests
Fonts2,951 KB — 64%
JavaScript1,314 KB
Images230 KB
CSS64 KB
TTFB / FCP / LCP197 / 352 / 1,300 ms
CLS0.0001