I opened ald.kitchen the way a crawler does — fetched the raw HTML of the home page, a collection page, the content pages and a random sample of 25 of the 304 products in your sitemap, then ran every JSON-LD block through a standard JSON parser. Below is what came back. Every number on this page is reproducible on the live site right now.
Sample: 25 product pages picked at random from sitemap_products_1.xml (304 URLs), plus the home page.
A product description that happens to end with a newline is pasted straight into JSON-LD. JSON strings cannot contain a raw line break, so the parser stops at that byte and the entire Product object is discarded — not just the description.
from /products/bubble-waffle-rotated-type-electric-waffle-maker-1-egg-waffle
"description": "This new professional Bubble
Waffler Maker ... or chocolate↵
",
"sku": "ALD-311",
"offers": [{
"price" : "379.99",
"priceCurrency" : "USD"
}]
the value is escaped before it is written into the template
"description": "This new professional Bubble
Waffler Maker ... or chocolate\n",
"sku": "ALD-311",
"offers": [{
"price" : "379.99",
"priceCurrency" : "USD"
}]
Do not take my word for it — the two buttons below run your browser's own JSON parser on the two fragments above.
These appear on all 25 sampled products, valid ones included. Nothing errors out; the data simply does not qualify, so the rich result is thinner than it could be.
| What is in the page | What happens | Fix |
|---|---|---|
"GTIN": "766150733754" |
ignored schema.org defines gtin / gtin12, not GTIN. Case matters. The barcode never arrives. |
rename to gtin12 (12 digits → UPC) |
"url": "https://ald.kitchen" inside every offer |
wrong target every offer of every product points at the home page instead of its own variant | emit the product / variant URL |
"image": "http://ald.kitchen/cdn/..." |
mixed scheme plain http on an https store that itself sends block-all-mixed-content |
protocol-correct absolute URL |
"review" with a rating but no author |
dropped author is required on Review; without it the review is discarded and can take the rating with it | real author, or drop Review and keep aggregateRating |
"seller": "ald.kitchen" |
wrong type seller expects an Organization object, not a plain string | Organization with name + url |
The header and footer show +1 (754) 225-5253 on every page. The contact
page shows that one and +1 (323) 218-7818, and the Organization markup declares
both as "contactType": "sales". Which number a customer calls depends on where he landed.
/pages/about-us and /pages/about-us-new are both in the sitemap,
both self-canonical, both crawlable. The newer one has no h1 and no meta description at all,
so the two compete for the same query and neither wins cleanly.
Name, e-mail, phone and message carry no required and no
autocomplete. An empty form still submits and reloads the page, and a phone typed on
mobile gets typed by hand every time.
h1 on the home page“Commercial Restaurant Equipment” and “Featured by”. The second one is a section caption wearing a page-title tag, which splits the signal the home page sends about itself.
No promise of positions attached — markup does not move rankings. It changes what the listing shows, and a listing with a price and stars gets clicked more often than the one next to it.