Why Splash shows nothing rather than something made up
Last checked against Splash 1.0.0 / 2026-08-15
Splash prints what you have supplied and removes what you have not. There is no filler: no dash standing in for a measurement you never entered, no star rating anyone can type by hand, no price on a job that has not been priced.
This one rule explains a whole class of behaviour that otherwise reads as a fault. A specification row vanishes. A section that looks complete in the theme editor is not on the live page. A logo you uploaded does not appear. In almost every case the theme is doing exactly what it was built to do, and the thing to fix is the input rather than the setting.
The rule, in two halves#
A missing value removes its element
Not an empty row, not a grey box, not a dash. The element is not drawn at all. A card whose product has no specifications is shorter than its neighbours rather than carrying three empty lines.
An empty container removes itself
When every item inside a group is missing, the group goes too, including its heading, caption and introduction. A heading over an empty table is worse than no table.
The rule holds for what shoppers see and for what search engines are told. The theme writes structured data only from values you have actually filled in, so an incomplete block of markup means an unfilled setting, never a placeholder sent out under your store's name.
Limit There is no setting anywhere in the theme that forces an empty element to render. If you want a row to appear, give it a value.
Specifications#
The specification table on a product page is the clearest case, because it is configured once on the template and then resolved separately for every product.
- A configured row whose metafield has no value on this product is dropped. It is not printed with a dash.
- A value consisting of nothing but a dash is read as "not applicable" and its row is dropped too. All three widths count: a plain hyphen, an en dash and an em dash are each treated the same way. A controller has no flow rate, and a row of noise says less than no row.
- When no configured row resolves to a value, the whole table disappears, heading and all. If the product page uses tabs, the Specifications tab disappears with it, because a tab with nothing behind it is worse than one tab fewer.
Spec bars are stricter, because a bar is a claim about proportion. A bar is drawn only when all three of these are true: the Row metafield is filled in, the Scale is greater than zero, and the product's value begins with a number. 80 GPM draws a bar and prints the figure. Variable speed draws nothing. A value that reads as zero draws nothing either, since a bar filled to nothing is not information. A value larger than the scale fills the bar completely rather than overflowing it.
Specification rows on product cards work almost the same way, with one extra condition and one difference. Show specifications on product cards in Theme settings has to be on, and a card drops a row only when the metafield is empty. The dash rule is the product page's alone, so a value of nothing but a dash prints on a card, under its label and of whatever width you typed, where the product page would drop the row. When the switch is on and a product carries none of the three configured metafields, the card drops the list rather than reserving space for it. The small product cards inside blog articles ignore the switch: they show the first specification whether it is on or off, and drop it when the product has no value for it.
Note The three card specification keys ship filled in with the demo store's own pool-pump measurements: specs.flow_rate, specs.head and specs.power. On your store those resolve to nothing, and a wrong key looks exactly like a product with no value. See Show your specifications.
Ratings#
There is no field anywhere in Splash for typing a rating. The two settings under Theme settings, Rating value metafield and Rating count metafield, read what a review app has written into product metafields, and nothing else.
Both settings must be filled in before either is used, the value must be on a 5-point scale, and the product must carry a real number in both metafields. Only then does a rating appear on the page, and only then is an aggregateRating sent to search engines. A rating that a merchant could type would be an unverifiable claim, and search engines treat review markup generated from marketing copy as a policy problem rather than a formatting one.
The home page testimonials section follows the same reasoning from the other direction. It has no star ratings and no place to enter one, and it emits no review structured data at all, so quotes there will never appear as ratings in search results.
Stock#
A product card prints a live count, In stock: 12, only when the variant is genuinely tracked: inventory tracking is on, the policy is set to stop selling when out of stock, and the quantity is above zero. In every other case the card says In stock with no number, because there is no number the store can vouch for.
The product page never prints a count at all. It says In stock, Sold out or Unavailable.
Home page blocks#
Every block on the home page has one field that decides whether it exists. Fill that field and the block appears; leave it empty and the block is skipped on the live storefront, whatever else is filled in.
| Block | What it needs | What is not enough |
|---|---|---|
| Quote, in Testimonials | The Quote field |
A name, a job detail and a linked product with no quote |
| Mark, in Certifications | A Name, a Caption or a Reference number |
An uploaded logo on its own |
| Highlight, in the home hero | The Heading |
An icon and a line of text with no heading |
| The quote band's button | Button label and Button link, both |
Either one alone |
When no block in a section is complete, the section removes itself: the certifications band, the testimonials ledger and the category directory all disappear from the live page rather than drawing a heading over nothing. All three stay visible in the theme editor so you can find and finish them, which is why a section can look present to you and be absent to a shopper.
The footer#
Three parts of the footer exist only because something real is behind them.
Social icons
There are no checkboxes. An icon is in the row because its URL field in Theme settings is filled, and gone because it is empty. A second control could only ever disagree with the links.
The country and language row
It shares a band with Shopify's Follow on Shop button. When neither has anything to show, the band is removed from the page entirely rather than drawing a rule and 32 pixels of padding around nothing. This is why the footer normally ends on a single rule above the copyright.
Payment icons
The row lists what your store genuinely accepts, read from Shopify. A store still running a test gateway shows an empty row, and that is correct rather than broken. Hardcoding a set of icons would advertise payment methods you do not take.
A social URL is tidied up but never guessed at: instagram.com/yourstore becomes https://instagram.com/yourstore. A single # is accepted on purpose so you can see the row before the accounts exist, and that placeholder is excluded from what the theme tells search engines. It is a legitimate link on a page and an illegitimate claim to Google. See Announcement bar, footer and cart.
FAQs#
A question appears only when all three of these hold: Show this question is ticked, the Question field has text, and the Answer has real text in it. Clearing a rich text answer often leaves an empty paragraph behind, which counts as empty, so the question disappears from the live store while still looking filled in the editor.
If no question in a set is complete, the whole block goes: caption, heading, introduction and all. See Add FAQs.
What search engines are told#
The same discipline governs structured data. Every empty setting produces no property rather than an empty one, so markup that looks thin is an unfilled setting rather than a defect.
- The Organization name falls back to your store name and the Organization logo falls back to your Brand logo, so leaving both blank is a valid choice. With no logo anywhere, no logo is claimed.
- Social profiles are sent only when they resolve to somewhere off site. A
#placeholder is dropped. - Contact details need the checkbox on and a phone number. Without the phone number the whole contact block is skipped, however much else is filled in.
- Shipping terms reach search engines only with both a flat rate and a list of real country codes.
WORLDprints "Ships worldwide" on the page and deliberately sends nothing, because there is no way to express "everywhere" in the format search engines require. - Return terms reach search engines only when
Return destinationis filled in. Nothing on the visible page depends on it, so it is easy to leave blank without noticing. - The 404 page emits no breadcrumb. A URL that resolves to nothing belongs to no trail.
The sharpest case is a quote-only product. Shopify records its price as zero, so an offer would tell Google that a job worth tens of thousands is free and out of stock, on a page whose only control is "Request a quote". A product node with no offer is not a quieter listing either, it is an invalid one: search engines require an offer, a review or a rating before a product can produce a result. So Splash publishes no product markup at all for quoted work. The page keeps its breadcrumbs, its FAQs, its title, its description and its social preview tags. The consequence, worth knowing before you tag anything: quoted products will not appear as rich results with a price. See Quote-only products and Shipping, returns and search engine details.
Where the theme does speak up#
Silence is the rule for values. It is not the rule for photographs. An image slot with nothing in it does not draw a grey rectangle; it draws a dashed panel naming the subject and the exact pixel size wanted, so whoever is sourcing the picture can read the brief off the page without opening the theme.
These are visible to shoppers, not only in the theme editor. They are a prompt to you, and they will be seen by anyone browsing an unfinished store.
| Where | What it says | Size asked for |
|---|---|---|
| Home hero | Outdoor pool, luxury imagery panel | 2560 x 1440 |
| Category tile | Category photograph | 1200 x 1500 |
| Quote request band | Custom pool build, outdoor living | 1600 x 1200 |
| Product page, lead frame | Product photograph | 1600 x 1200 |
| Product page, further views | View 1 to View 4 | 800 x 800 |
| Product card in a grid | Product photograph | 1200 x 900 |
| Blog card and article | Article photograph | 1600 x 1200 |
The four square slots under a product's lead frame are too small to carry a legible dimension line, so they print their label only. They still expect 800 x 800.
Notes only you can see#
The theme editor is allowed to say more than the storefront, because you are the person who can fix things. These notes are drawn in the editor and never reach a shopper.
Add the quote to complete this row.
A testimonial block with no quote.
Add a name, description, or reference number to show this credential.
A certification mark with none of the three.
No heading yet
A home hero highlight with no heading.
Add a question and an answer to show this item. / Hidden: …
An FAQ question that is half finished, or one that is complete but switched off.
This set is not shown on this page. Choose where it appears in the section settings.
An FAQ set that is not targeted at the page you happen to be previewing. It stays editable from anywhere, which is why it is drawn. It is not an error.
Give this field a label to show it.
A form field with an empty Label. On the live storefront the field is not rendered at all.
Choose a product to feature.
A Featured product section with no product chosen.
Enter a metafield with a value on this product, for example specs.package.
A Package contents block whose metafield is empty on this product.
Choose products to show here.
An Add-ons block with no products selected.
Add your shipping and return terms in theme settings, under SEO and structured data.
A Shipping and returns block on the product page with both toggles off in Theme settings.
One warning behaves differently, and it is worth knowing because it is the exception to the paragraph above. When a conditional form field watches a label that no field on the page carries, the field is drawn with a dashed red outline and the watched label printed beneath it. In the theme editor that is accompanied by the sentence No field on this page is labeled …. On the live storefront the sentence is absent but the outline and the label are not, so a mistyped condition is visible to shoppers. Fix the label rather than relying on the warning being private. See Conditional form fields.
When something does not appear, check the input first#
This is the practical payoff. Because the theme never fills a gap, an absence points straight at its cause, and the cause is nearly always upstream of the theme editor.
- Does the value exist on this product? A specification table missing on one product and present on another is a metafield question, not a template question. Open that product in Shopify admin and look.
- Is the key written as namespace, one dot, key?
specs.flow_rateis right.flow_rateandspecs/flow_rateread nothing, and a key with two dots reads the wrong place. There is no error message: a wrong key and a product with no value look identical. - Is the value only a dash? On the product page a lone dash of any width means "not applicable" and the row is dropped on purpose.
- Does the value start with a number? Spec bars need one, and a scale above zero.
- Are both halves of a paired setting filled? Button label and Button link. Rating value and rating count. Link label and Link on a mega menu panel. One alone draws nothing.
- Does the handle, key or menu belong to your store? Splash ships with the demo store's content in place, so a page handle, a metafield key or a collection that worked in the demo may resolve to nothing on yours. See Replace the demo content.
The corollary is worth stating too. If something did appear that you did not expect, some setting is filled in. Nothing on a Splash storefront is generated without an input behind it.
The same idea in the colour settings#
The rule has a mirror image in how the theme is themed. Splash exposes eight colour settings: Background, Foreground, Card background, Card text, Accent, Accent text, Band background and Band text.
Those are not the eight colours the theme uses. Every hairline, rule, muted grey, panel fill, sunken press state, focus ring and link colour is mixed from those eight rather than stored separately, so a recolour stays coherent instead of leaving a hundred fields to be kept in step by hand. Change Foreground to a mid grey and every rule in the store lightens with it. Set Band background to something light and the three contrasting grounds invert together: the announcement bar, the home page hero band and its claims row, and the testimonials section. The footer is not one of them. It is drawn on Card background, along with the header and the cart drawer.
It follows that the link colour is not the accent colour: links are mixed one step deeper toward the foreground so they stay readable on light grounds after any recolour. Matching a link by eye from the accent swatch will not produce what renders. See Apply your brand.
Derived rather than enumerated, stated rather than invented. It is the same preference in both places: fewer inputs, each one meaning something, and nothing produced that nobody supplied.
Something wrong here If a step does not match what you see, say so and it gets fixed. Documentation goes stale, which is why the line under the title carries a date.