sfw/fix
Invalid object type for field medium

Invalid Object Type for Field (Structured Data)

A schema property got the wrong value type — a string where an object or URL is expected — so Google can't parse it and drops the rich result.

What you see

Invalid object type for field "brand"
or: Invalid object type for field "author"
Item: Product

What’s actually happening

The markup parses as valid JSON, but a property holds the wrong kind of value for what the schema expects. The usual culprits: 'brand' or 'author' supplied as a plain string ("Acme") instead of a nested Brand or Person object, a 'price' written with a currency symbol so it isn't a clean number, or a field given a number where a URL belongs. Google reads the field, can't reconcile the type, and either ignores that property or disqualifies the rich result for the whole item.

Common causes

  • brand or author output as a bare string ("author": "Jane Doe") instead of a typed object with @type Person/Organization/Brand.
  • A property that expects a nested object handed a string, or vice versa — e.g. offers as a string instead of an Offer object.
  • price including a currency symbol or comma ("$1,299") so it fails as a number; price should be "1299.00" with priceCurrency separate.
  • A URL field given plain text, or a text field given a number, because a template concatenated values without typing them.
  • An array expected (multiple authors/images) but a single string emitted, or a single value where the schema requires a typed object.

How to fix it

  1. Read the error — it names the exact fieldThe Rich Results Test message 'Invalid object type for field "X"' tells you precisely which property is wrong. Start there rather than re-checking the whole block; the rest of the markup is usually fine.
  2. Wrap string values in their proper typed objectbrand and author want objects, not strings: "author": { "@type": "Person", "name": "Jane Doe" } and "brand": { "@type": "Brand", "name": "Acme" } . Check schema.org for each property's expected type — many that read like simple text actually require a nested @type.
  3. Format numbers and URLs as their real typesprice is a number-as-string with no symbol or thousands separator ("1299.00"), and priceCurrency carries the "USD" separately. URL fields take an absolute https URL, not a label. Don't let a template glue a currency sign or stray text into a numeric or URL field.
  4. Use arrays where multiples are allowedIf a Product has several images or an Article several authors, emit a JSON array — ["https://.../1.jpg", "https://.../2.jpg"] or an array of Person objects — rather than cramming them into one string.
  5. Re-validate, then Validate FixRe-run the Rich Results Test and the schema.org Markup Validator until the type error is gone and the item is eligible, then click Validate Fix in Search Console. Reprocessing runs over a crawl cycle.

Stop it recurring

Build structured data from typed data objects you JSON-encode in code, so a field that schema.org defines as a Person or a number can't be emitted as a loose string.

Related errors