3 tips for increasing the quality of your product feed

If you pick a software solution for automating your text ads (such as AdEngine), you may want to roll out high quality content as fast as possible without any annoying post processing. In this context, a crucial and determining contributor for a quick start – which is unfortunately often neglected – is the state of the product feed used for the automation solution. I have seen several pitfalls in that regard and therefore I want to share my experience with you so that you can save time and easily publish your ads without any delay.

Leave fields empty, if there is no value

Can you spot what is wrong here regarding the midtail ad below?

example of incorrect product feed

The advertised products had no category in the product feed but instead of leaving the field empty, the client wrote literally “no-category” in the corresponding field, resulting in an awkward ad. But why did we not exclude this non-existent category? For this, we have to understand how “no-category” differs from an actually empty field: If a field is empty and hence has no value (empty quotes, thus “”  already counts as a value), then it is – in the code of your data feed – syntactically different to a field which has a value and therefore can be easily detected. However, “no-category” is technically a value, syntactically it is a character sequence like legit categories (e.g. “Jeans” or “Carpets”). We – through our human eyes – can see that “no-category” is semantically a non-existing category, but a machine cannot see that while looping over your products without any further routine included in the code.

It is though to spot the error because it might appear in various fields and in various variants, such as “ “, “-”, “no value”, “no-brand”, or literally “NULL”. Needless to say, please don’t apply this to your feed, unless you want your customers to “Buy missing-category from – now!” – as the corresponding headline may look like this.

Provide consistent names for (sub-)brands

If you have sub-brands of a specific brand, make sure they have consistent names and apostrophes. But what do I mean specifically by that and why is it important?

Here is an example: A client once asked us to classify products based on a mapping as ‘Top Performers’ and thus treat them differently when structuring the ad groups. The mapping contained the brand “Colonel’s” (It doesn’t exist, the real brand is obfuscated for privacy’s sake), so if the brand of a product contained “Colonel’s” and therefore belonged to the main brand or was a sub-brand of “Colonel’s”, the product was labelled a ‘Top Performer’.

One day, the client disgruntledly complained why all seven sub-brands of “Colonel’s” where classified as top performers – except one of them. Somehow “Colonel`s Finest Selection” was ignored by the mapping. Can you fathom why? Because the entry “Colonel’s” in the mapping and the word “Colonel`s” in “Colonel`s Finest Selection” had different apostrophes – and therefore did not match. It almost sounds mundane but it took us a while to spot. But we for sure have learned that small differences might matter a lot.

Insert a link if possible

It is quite obvious: If you aim for serving Longtail Ads/Product Listed Ads, you have to link them to the product in your data source (in Merchant Center feeds this is implicit anyways)

However, when it comes to midtail ads, especially those with filters, the reasoning mentioned above does not apply for some strange reason. Instead of seeing the category links and URL parameters provided in the feed, we often find ourselves building the URL paths and parameters. Most of those cases are straightforward but some involve all intricacies of escaping and HTML encoding you can imagine – including inconsistent replacements of the ampersand (&) with either “_”, “and” or “-”.

Instead of taking a direct way, some prefer the detour by providing the links in a mapping which we fetch via a Google Spreadsheet – the AdEngine is capable of doing that with ease but we still have to implement the mapping since it is a custom solution, prolonging the rollout of the ads of course. 

And here is the weirdest case I have seen so far: Instead of getting the URL parameters for the color via a source, we got instructed how to apply a hashing on an array of fields in order to calculate the URL parameter for the color. Sounds confusing? But don’t get me wrong: We can solve nearly every problem but it hardly makes sense to invest time (and therefore our clients’ money) into elaborately crafting links and parameters, although they could simply be extracted from a client’s database into the product feed. 

A short summary

Overall, you now know what you can do in order to improve the quality of your product feed. You will save a lot of time – and therefore money – if you apply those tips in advance. We might cover more feed optimizations in the foreseeable future, though the ones we mentioned in this post are already a good primer paving the way for a quick start with the AdEngine.