'Feedify' Your Shop for FREE using page templates

Highlighted
Shopify Partner
113 0 4

I've been playing around with creating an app that I've really needed. But I don't have time to do it so I'm hoping we can work on it together. The idea is to take your shop products and repackage them to create feeds for use elsewhere, like Google Base, Amazon, NextTag etc.

I'm hoping this will end up as an "open source" forum thread where you can share your own feed format you've created so we all can benefit.

Basic How To:
  1) Make an alternate version of [page] (for example called googlefeed)
  2) Create a new page
  3) Name whatever you'd like: google-base-product-feed
  4) Once the page is created change the Template to googlefeed

Step By Step How To:
  - http://forums.shopify.com/categories/2/posts/29008#comment-29549

Collaborators, Thanks:
  - Michael Larkin:   http://www.pixallent.com
  - Caroline Schnapp:   http://www.11heavens.com
  - Jamie:   http://www.charlestoncreative.com

 

Google Base Product Feed (RSS 2.0)      UPDATED Oct. 19 2009

Feed Specs:
  - http://base.google.com/support/bin/answer.py?answer=58085

Snippets Used:
 
- shopdesc: a short description of your shop

Important Notes:
  - If you're in the UK, you have to include VAT one way or another, by either putting "(including VAT)" or "(excluding VAT)" in the price field of your products (in Shopify, not the feed) and making the appropriate tax setup in your Google Base Settings.

{% layout none %}<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>{{shop.name | escape }} Products</title>
<description>{% include 'shopdesc' %}</description>
<link>{{shop.url}}</link>
{% paginate collections.all-products.products by 1000 %}{% for product in collections.all-products.products %}
<!-- Item #{{ forloop.index }} -->
<item>
<title><![CDATA[{{ product.title | strip_html | strip_newlines | escape | replace: 'amp;', 'and' | replace: '&#38;', 'and' | replace: "é", "e" | replace: "à ", "a" }}]]></title>
<g:brand>{{product.vendor | escape }}</g:brand>
<g:product_type>{{product.type | escape }}</g:product_type>
<g:id>{{product.id}}</g:id>
<g:condition>New</g:condition>
<description><![CDATA[{{ product.description | strip_html | strip_newlines | replace: 'amp;', 'and' | replace: '&#38;', 'and' | replace: "..", ". " | replace: " ", " " | replace: "‘", "&#39;" | replace: "’", "&#39;" | replace: "&#8216;", "&#39;" | replace: "&#8217;", "&#39;" | replace: "&#8217;", "&#39;" | replace: "’", "&#39;" | replace: "“", "&#39;" | replace: "‘", "&#39;" | replace: "´", "&#39;" | replace: "“", "&#34;" | replace: "”", "&#34;" | replace: "&#8211;", "-" | replace: "–", "-" | replace: "—", "-" | replace: "–", "&mdash;" | replace: "—", "&mdash;" | replace: "%", "&#37;" | replace: "©", "&copy;" | replace: "®", "&reg;" | replace: "â„¢", "&trade;" | replace: "£", "&pound;" | replace: "ï¿­", "&#42;" | replace: "•", "&#42;" | replace: "”", "&#39;" | replace: "&#233;", "e" | replace: "é", "e" | replace: "à ", "a" | replace: "ó", "o" | replace: "ê", "e" | replace: "Ø", "O" | replace: "&#8482;", "" | replace: "&#174;", "" }}]]></description>
<g:image_link>{{product.featured_image | product_img_url: 'large'}}</g:image_link>
<link>{{shop.url}}{{product.url}}</link>
<g:price>{{product.price | money_without_currency}}</g:price>
<g:quantity>1</g:quantity>
<g:payment_accepted>Visa</g:payment_accepted>
<g:payment_accepted>MasterCard</g:payment_accepted>
<g:payment_accepted>AmericanExpress</g:payment_accepted>
<g:payment_accepted>Discover</g:payment_accepted>
<g:payment_notes>We also accept Paypal and Google Checkout</g:payment_notes>
</item>
{% endfor %}{% endpaginate %}
</channel>
</rss>

See it in action:
  - http://www.fortunecookiesoap.com/pages/google-base-product-feed


For tab delimited formats like the yahoo product feed, each product must be on only one (1) line. The problem is that if the any product descriptions have line breaks in them that will break the formatting.

Solution!

{{ product.description | strip_newlines | strip_html }}
Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
1 Like
Shopify Partner
113 0 4

Yahoo Product Feed
—feed specs: http://searchmarketing.yahoo.com/shopsb/shpsb_specs.php

Snippets This Feed Uses:
—yahoocat: map your products to a yahoo category (can extend this to support multiple)


{% layout none %}code    name    description    price    product-url    merchant-site-category    medium    image-url    upc    isbn    brand    manufacturer    manufacturer-part-no    model-no    ean    classification    condition    gender    age-group    age-range    size    nrf-size    color    nrf-color    msrp    in-stock    availability    promo-text    shipping-price    shipping-weight    shipping-surcharge    shipping-class{% paginate collections.all-products.products by 200 %}{% for product in collections.all-products.products %}{% if product.type != 'Sample' %}
{{product.id}}    {{product.title | strip_html | replace: '&#8211;', '' | replace: '&#8212;', '' | replace: '&#8216;', '' | replace: '&#8217;', '' | replace: '&#8220;', '' | replace: '&#8221;', '' | replace: '&#8230;', '' }}    {{ product.description | strip_html | replace: '&#8211;', '' | replace: '&#8212;', '' | replace: '&#8216;', '' | replace: '&#8217;', '' | replace: '&#8220;', '' | replace: '&#8221;', '' | replace: '&#8230;', '' }}    {{ product.price | money_without_currency }}    {{shop.url}}{{product.url}}    {% include 'yahoocat' %}        {{product.featured_image | product_img_url: 'large'}}                {{product.vendor}}                New    New                                    Yes    1    Free shipping for orders over $49                {% endif %}{% endfor %}{% endpaginate %}

See it in action: http://www.fortunecookiesoap.com/pages/yahoo-product-feed

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes
Shopify Partner
113 0 4

RSS Feed (2.0)
—feed specs: http://en.wikipedia.org/wiki/RSS

Snippets This Feed Uses:
—shopdesc: a short description of your shop


{% layout none %}<?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/css" href="rss.css" ?>
    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>{{ shop.name }}</title>
        <link>{{ shop.url }}</link>
        <description>{% include 'shopdesc' %}</description>
         <image>
            <link>{{ shop.url }}</link>
            <url>{{ shop.url }}/feedlogo.jpg</url>
            <title>{{ shop.name }}</title>
        </image>
        <language>en-us</language>
        <copyright>Copyright {{ "now" | date: "%Y" }} {{ shop.name }}</copyright>
        <atom:link href="{{shop.url}}/pages/rss" rel="self" type="application/rss+xml" />
        {% paginate collections.all-products.products by 200 %}{% for product in collections.all-products.products %}{% if product.type != 'Sample' %}<item>
            <title><![CDATA[{{ product.title | strip_html }}]]></title>
            <guid>{{ shop.url }}{{ product.url }}</guid>
            <description><![CDATA[{% for image in product.images limit: 1 %}<p><img src="{{ image | product_img_url: 'medium' }}" 
            alt="{{ product.title | strip_html }}" /></p>{% endfor %}<p><a href="{{ shop.url }}{{ product.url }}">
            {{ product.title | strip_html }}</a></p>
            <p><strong>{{ product.price_min | money }}{% if product.price_varies %} - 
            {{ product.price_max | money }}{% endif %}</strong></p>
            <p>{{product.description | strip_html | truncatewords: 150}}</p>]]></description>
        </item>
        {% endif %}{% endfor %}{% endpaginate %}
    </channel>
</rss>

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes
Shopify Partner
113 0 4

JSON Feed
—feed specs: http://www.json.org

FYI I wrapped the JSON in a ”.d” property to protect against a particularly nasty XSS vulnerability:
http://haacked.com/archive/2009/06/25/json-hijacking.aspx
(don’t really need to but it’s a good habit for js arrays)

Snippets This Feed Uses:
—none


{% layout none %}{d:[{% paginate collections.all-products.products by 200 %}{% for product in collections.all-products.products %}{% if product.type != 'Sample' %}{{ product | json }}{% unless forloop.last %},{% endunless %}{% endif %}{% endfor %}{% endpaginate %}]}

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes
Shopify Partner
494 0 1

We will be releasing a completely revamped version of http://www.synctobase.com soon that will address syncing with many product directories in the very near future, and will continually add new directories after the initial relaunch.

Jared Burns, CEO at Getsy (http://get.sy)
0 Likes
Shopify Partner
113 0 4

That’s fantastic! I use synctobase already, and I very happily to donate to keep it running. I use these ‘hacks’ to supply feeds to 14 different services. One thing I’d love you to support with synctobase is a way to filter/control what products get synced. It’s an awesome service you have created keep up the good work.

Glad I didn’t waste my time writing a “Feedify” app! :)

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes
Shopify Partner
494 0 1

Awesome!

Your request for product control is actually part of the next release, so I’m glad that will be of help to you. We also will be allowing you to control what product attributes are sent as well.

There are many other features as well, so stay tuned!

Jared Burns, CEO at Getsy (http://get.sy)
0 Likes
Shopify Partner
113 0 4

I had planned for my app that users could supply their own feed format and share it with others… crowdsourcing that work would ramp up list of supported directories very quickly (any plans for something like that?)

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes
Shopify Partner
494 0 1

Hadn’t thought of doing it that way primarily because our system has to be able to communicate with the directory service via their API first. So even with a provided feed format, there’s no way for us to validate and sync it yet.

We will be requesting what services you’d like integration for and we’ll handle the feed format on our end. Any in particular you’re looking for?

Make sense?

Jared Burns, CEO at Getsy (http://get.sy)
0 Likes
Shopify Partner
113 0 4

Synctobase was created as an automated process that uses the shopify api to distribute product information to a third party via their api. That is totally awesome, and needed – but there are many more services that while they do allow bulk updates they (for whatever reason) are not set up to automate the process in that way. For example Amazon, NextTag, Pronto and Yahoo allow for bulk uploads/changes but you have to manually login and upload them or FTP them to a server they maintain. So while you may need to manually upload it still saves you a lot of work. You can simply open Excel click on Data > Import External Data > New Web Query and navigate to your “feed” for that service and save the file. No cut-n-pasting hundreds of data points into the right columns – no mistakes.

With other services like Shopzilla.com, Become.com or Smarter.com all you need is to supply them with the url of the feed and they will take care of syncing it for you.

I think it’s very useful just to be able to format the data in a shopify store as needed.

It can even be useful for the shop owner… I know for me I use a “tag feed” where I get all the tags for each product so I can dynamically calculate what products to recommend for cross-selling (what products have the most matching tags to the product the customer is currently looking at).

Unique Bath Gifts by Fortune Cookie Soap ~ http://www.FortuneCookieSoap.com ~ @fortunefreak
0 Likes