MX Learn ยท Lesson 5 of 6

Common mistakes

Seven anti-patterns that break Machine Experience, each shown as a spot-the-problem example with the fix. Reading time about six minutes; the full lesson text is on this page even with scripting off.

Good intentions are not enough

Even well-intentioned implementations fail if you do not know the pitfalls. Teams add structured data, sprinkle ARIA attributes, and ship - then wonder why agents still misread the site.

These are the most common mistakes we see when organisations adopt Machine Experience. Each one looks like progress from the inside. Each one fails a machine in a specific, predictable way. Learn to spot the problem before an agent does.

Markup mistakes

Three ways structured data goes wrong before an agent ever acts on it. Open each mistake to see why it fails:

Mistake: structure without validation open

The team implements Schema.org markup but never validates it. Syntax errors, wrong types, or missing required properties make the structured data useless - agents ignore invalid markup, so the effort earns nothing.

The fix: validate every page with the Google Rich Results Test and the Schema.org validator, and then test with actual agents - ask ChatGPT questions about your page and see what it reports back.

Mistake: hidden structured data open

Bad: a price that never appears on the visible page

<!-- BAD: Price not shown on page -->
<div itemscope itemtype="https://schema.org/Product">
  <meta itemprop="price" content="99.99">
</div>

Markup for content that is not visible to users is treated as deceptive. Search engines and agents penalise hidden content because it lets a page tell machines one story and humans another.

The fix: only mark up content that is visible to users. If humans cannot see it, do not mark it up.

Mistake: generic schema types open

Bad: Thing where Product belongs

{
  "@type": "Thing",  // Too generic
  "name": "Widget"
}

Agents cannot take specific actions on generic types. Thing tells them nothing useful: no price to quote, no availability to check, no offer to act on.

The fix: use the most specific type available - Product not Thing, Article not CreativeWork, LocalBusiness not Organization.

Open all three mistakes to continue.

Data and state mistakes

Markup that was right when it shipped can still lie today. Open both mistakes:

Mistake: stale data open

The structured data drifts out of sync with the page: prices that changed, products marked InStock but sold out, old phone numbers, outdated business hours.

It fails because agents confidently share wrong information. The agent quotes the stale price to a customer, the customer arrives to a different one, and it is your trust that pays for the gap.

The fix: update structured data whenever the content changes, and automate it from the database wherever possible so the two cannot drift.

Mistake: accessibility theater open

Bad: contradictory attributes on one element

<!-- BAD: Contradictory attributes -->
<button disabled aria-disabled="false">Submit</button>

ARIA attributes added without understanding them send conflicting signals: the button says disabled and not-disabled at once. Conflicting signals confuse assistive technology and agents alike - neither knows which declaration to believe.

The fix: use ARIA correctly or do not use it. Native HTML often beats ARIA: <button disabled> beats <div role="button" aria-disabled="true">, and <nav> beats <div role="navigation">.

Open both mistakes to continue.

Structure mistakes

Two ways the page's own structure misleads a machine. Open both:

Mistake: over-reliance on visual cues open

Bad: a red border is the only signal the field is required

<!-- BAD: Only visual indication -->
<input type="text" class="required-field" style="border: red">

A red border does not equal required. Agents do not see visual styling - colour, position, and icons carry no meaning to a machine parsing the served HTML. They need explicit markup.

Good: the requirement declared in markup

<input type="text" required aria-required="true">
Mistake: broken heading hierarchy open

Bad: skipped levels and out-of-order headings

<h1>Page Title</h1>
<h4>Section</h4>  <!-- Skipped h2 and h3 -->
<h2>Subsection</h2>  <!-- Out of order -->

Agents use the heading hierarchy to understand how content is organised. Skipped levels break agent understanding: the outline the machine builds from these headings no longer matches the structure you meant.

The fix: maintain proper order - h1 then h2 then h3, and never skip levels. Headings declare structure; they are not a styling tool.

Open both mistakes to continue.

Quick check

A developer adds Schema.org Product markup with a price in a hidden meta tag that never appears on the visible page. Why is this a mistake?

Right: markup for content users cannot see is treated as deceptive, and search engines and agents penalise it. If humans cannot see it, do not mark it up.
Not quite. Think about what it means when the machine-readable story and the visible page tell two different stories, then try again.

Answer the quick check to continue.

What you now know

  • Unvalidated markup is wasted markup: agents ignore invalid structured data, so validate with the Rich Results Test and the Schema.org validator, then test with actual agents.
  • Hidden structured data is treated as deceptive, and generic types like Thing give agents nothing to act on - mark up only what is visible, with the most specific type available.
  • Stale data makes agents confidently share wrong information, and contradictory ARIA is accessibility theater - keep data in sync and prefer native HTML.
  • Machines do not see visual cues or forgive broken outlines: declare required fields in markup and never skip heading levels.
Next: Lesson 6: Benefits and next steps - what a site gains once the mistakes are fixed. Prefer the article form? The companion page is Common mistakes.