Click here to close this tab and return to the app.

Do you have code/specifications to create the Yahoo Store Export file?

Use the information below to generate a Yahoo Store export file in XML format from your product database. This XML file can be plugged directly into our system.

Here are some sample store export files:

Here is an important note from the objinfo.xml files:

"Note that although the native encoding of this store's content is iso-8859-1, all the text in this XML export format has been converted to UTF-8"

We suggest sticking to UTF-8; our system uses that too.

You should set the published date in the XML tag:
<Published timestamp="1228928138"/>
and also in the 'Last-Modified' header of the HTTP request. (Our system uses the latter for caching purposes.) If it is not easy to calculate the timestamp, just set it to the current time. All the other elements in the settings section are not needed for our system.

Here is the high-level documentation on the Yahoo Store Export format.

Here are the links to the XML Document Type Definitions (DTD):

You do not need to implement every possible field. Our system will work even if just the main ones are implemented, like title, url, image, price, and description. Path is a bit tricky, and can be left out. The catalog.xml file is entirely optional, but should be implemented in order to get all the attributes into Google and maintain ranking.

Sample code to add the 'Last Modified' HTTP header is below.

$lastModified = time();
// OR SOMETHING LIKE $lastModified = "SELECT MAX(DateModified) FROM Product";

$gmdate_mod = gmdate('D, d M Y H:i:s', $lastModified) . ' GMT';
$expiresDate = gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT';
header("Expires: $expiresDate");
header("Last-Modified: $gmdate_mod");
header("Cache-Control: max-age=3600, private");

Note that in the objinfo.xml file, 'Description' is actually the title, and 'Caption' is actually the long description.

We recommend to flush output as it is generated. Our system has a built-in timeout if a page does not respond for a long time, so the script might not work for a larger store unless it sends the data continuously rather than buffering it before sending it. Your script might also run into memory limits if it is being buffered.