Hurt SEO? No.
Not be as helpful? Yes.
Let's focus on (2).
If you look at the spec for
https://schema.org/CreativeWork you can see that it includes the important elements for
Offer which can allow it to behave much like a product, as well the
mainEntity property which has the expected type of
Thing - which is the parent of
Product (and, just about everything else).
What that means you can have a simple structure much like this to serve your product pages:
<body class="page-wrap" itemtype="https://schema.org/CreativeWork">
<div class="main" itemprop="mainEntity" itemscope itemtype="Product">
<!-- The main entity property is actually another item called Product, which is the primary focus of the page -->
So this is a simple way to include the product in the page.
In fact, wrapping the entire HTML or Body for a Schema.org ItemType should be, by default,
schema.org/WebPage or its various children - which are all children of the
CreativeWork item type.
There isn't anything inherently wrong with labeling a
WebPage as a
CreativeWork, because it is one.
The way its Schema.org should be optimised for a product page is as follows:
- Body or HTML tag marked as an
ItemPage - this is semantically the correct page for a product or item. This extends
WebPage, which extends
- In the relevant area where your product is listed (i.e. your main content), mark it as the
mainEntity property of your
ItemPage and set its itemType as
- Ensure that your
Offer is optimised properly. From a SERP appearance, this enitire area is the most important and relevant part of the product page. In fact, as long as
Offer is configured correctly in a parent type such as
CreativeWork, you may have rich snippets for properties like
availability. The property
offers with an expected type of
Offer and its child
AggregateOffer are the important elements there.
So don't be too fretted about that - a product page is preferred because it is a higher-level of fidelity, but CreativeWork is still semantically correct, just a lower level of fidelity.
Also to note: It is bad practice to label an entire page as a
Product. A webpage cannot be a product, it can be about a product. This is why we have children, inheritance of properties etc in Microdata - it helps break up the page.
It the above example, I used
ItemPage because it was appropriate. This allows flexibility for things like
BreadCrumbs* which are appropriate for a page, not a product.
I have seen zero evidence that appropriate markup of navigational elements to have a negative effect, though the net-gains from this are still unknown.
The only negative effects from Schema.org related Microdata are bugs (i.e. putting the wrong data on the wrong properties) and cloaking - using the
<meta> tag in excess puts your website at risk in that regard for trying to game relevance.
*Though there is a bug with the way Microdata of that property is handled, and it is best handled with the JSON-LD notation.