If there is the slightest mistake, error or any kind of issue with the Product Identifier field your feeds wont get processed So naturally when we saw this we got very concerned.
But figuring out the issue was another story. Google provided us with a link to learn more about Unique Product Identifiers. Our issue was with our MPN. But we couldn't figure out what the issue was. Here is what google says you should use if you are going to use MPN as your Unique Product Identifiers.
"Manufacturer Part Number (MPN): Alphanumeric digits (various lengths)"
That is very short an sweat. Not much room to leave for error. So we couldn't figure out what was wrong
The issue that Google was showing us in the "Data Quality" tab was with MPN's like "-39" "H-9" "8-8"
That fits the description that Google provides for "MPN", what exactly is wrong with those MPNs?
We did a quick query to search for MPN that have less then 4 characters and include a "-". The number of results we got was an exact match to the number of products that had Invalid Unique Product Identifiers.
The theory is that google removes the dash from the MPN's for processing purposes. When Google displays the MPN they will still show it with a dash, but when they proccess your feed they remove it. So our MPN with a dash like this "H-9" was being converted to "H9". Although in Google's description they state "various lengths" we think that the data in the MPN field needs to be a bit larger then 2 characters, which after removing the dashes our ID's are not.
The fix we came up with was to add the first 2 letter of the brand name to any MPN that was being flagged by Google. Many retailers already add the first 2 letters of the brand name to the MPN, but we don't
For example a Nikon D300, the brand is "Nikon" and the MPN is "D300". By adding the first 2 letters of the brand to the MPN the new MPN would be "NI-D300".
In our case we got "SO-H-9"
Here is the Mysql query we wrote that does this fix.
WHEN LENGTH(MPN) < 4 AND MPN LIKE '%-%' THEN CONCAT(LEFT(brand,2),MPN)