<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/wordpress-mu-1.0" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>ChannelAdvisor Blog</title>
	<link>http://blog.channeladvisor.com</link>
	<description>Opinions. Insights. Discoveries.</description>
	<pubDate>Sat, 30 May 2009 11:10:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=wordpress-mu-1.0</generator>
	<language>en</language>
			<item>
		<title>The Feed Doctor on Shipping</title>
		<link>http://blog.channeladvisor.com/blog/2009/05/30/the-feed-doctor-on-shipping/</link>
		<comments>http://blog.channeladvisor.com/blog/2009/05/30/the-feed-doctor-on-shipping/#comments</comments>
		<pubDate>Sat, 30 May 2009 11:10:08 +0000</pubDate>
		<dc:creator>Anthony Alford</dc:creator>
		
		<category>Comparison Shopping</category>

		<guid isPermaLink="false">http://blog.channeladvisor.com/blog/2009/05/30/the-feed-doctor-on-shipping/</guid>
		<description><![CDATA[A while back (good grief, it was nearly 2 years ago!) I got asked a question about using a lookup list to calculate shipping from a table.  Back then, I said it couldn&#8217;t be done with a lookup list.  Then a few days ago when I started thinking of a topic for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while back (good grief, it was nearly 2 years ago!) I got asked a question about <a href="http://blog.channeladvisor.com/blog/2007/08/06/feed-doctor-on-not-a-lookup-list/">using a lookup list to calculate shipping from a table</a>.  Back then, I said it couldn&#8217;t be done with a lookup list.  Then a few days ago when I started thinking of a topic for a blog post, I realized that now that we have the <a href="http://blog.channeladvisor.com/blog/2009/04/20/the-feed-doctor-returns/">REDUCELIST</a> function, we CAN use a lookup list to do it.</p>
<p>I don&#8217;t want to spoil the surprise, so click below to see the whole thing.<br />
 <a href="http://blog.channeladvisor.com/blog/2009/05/30/the-feed-doctor-on-shipping/#more-591" class="more-link">(more&#8230;)</a>
</p>
<p class="akst_link"><a href="http://blog.channeladvisor.com/?p=591&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_591" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.channeladvisor.com/blog/2009/05/30/the-feed-doctor-on-shipping/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A guide to eBay&#8217;s June 15 changes</title>
		<link>http://blog.channeladvisor.com/blog/2009/04/23/590/</link>
		<comments>http://blog.channeladvisor.com/blog/2009/04/23/590/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 15:55:29 +0000</pubDate>
		<dc:creator>Scott Hurff</dc:creator>
		
		<category>Uncategorized</category>

		<category>eBay</category>

		<category>Education</category>

		<guid isPermaLink="false">http://blog.channeladvisor.com/blog/2009/04/23/590/</guid>
		<description><![CDATA[At ChannelAdvisor, we&#8217;ve been diligently studying the Spring Changes that eBay announced last week and talking to both sellers and eBay for more information.  Since we have Catalyst next week we aren&#8217;t able to do our customary webinar so we decided to get the information out in the form of a detailed white paper [...]]]></description>
			<content:encoded><![CDATA[<p>At ChannelAdvisor, we&#8217;ve been diligently studying the Spring Changes that eBay <a href="http://ebaystrategies.blogs.com/ebay_strategies/2009/04/ebay-announces-spring-changes.html">announced last week</a> and talking to both sellers and eBay for more information.  Since we have <a href="http://www.channeladvisor.com/catalyst">Catalyst</a> next week we aren&#8217;t able to do our customary webinar so we decided to get the information out in the form of <a href="http://www.channeladvisor.com/ebayspring09">a detailed white paper that you can find here</a>.</p>
<p>Also, at the end of the document is a calendar that outlines when all the changes will be happening for quick reference.</p>
<p>What we&#8217;ve done in the white paper is try to give everyone a jump on the changes that will come mid-June with some actionable things you can (and should) start doing now.  I think the biggest change is multi-sku/variations and I&#8217;m excited to announce that in partnership with eBay at Catalyst they will be showing the feature live for sellers in their QA environment before it hits the live site. We saw a sneak peek of this and think that of all the features in the last 18 months it has the potential to have the most impact (positive for those that adopt and negative for those that don&#8217;t) on sellers and, of course, the buying experience.</p>
<p>We&#8217;ll have more on multi-sku here after Catalyst, but this whitepaper has the next chunk of information and some thoughts on how to prepare for multi-sku today.  Also if you are using the eBay selling tools (TurboLister, Blackthorne, Seller Manager, etc.) you will want to really think about the implications of multi-sku and how you use those tools today.  <a href="http://www.channeladvisor.com/ebayspring09">More details are available in the white paper</a>.
</p>
<p class="akst_link"><a href="http://blog.channeladvisor.com/?p=590&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_590" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.channeladvisor.com/blog/2009/04/23/590/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Feed Doctor Returns</title>
		<link>http://blog.channeladvisor.com/blog/2009/04/20/the-feed-doctor-returns/</link>
		<comments>http://blog.channeladvisor.com/blog/2009/04/20/the-feed-doctor-returns/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:30:24 +0000</pubDate>
		<dc:creator>Anthony Alford</dc:creator>
		
		<category>Comparison Shopping</category>

		<guid isPermaLink="false">http://blog.channeladvisor.com/blog/2009/04/20/the-feed-doctor-returns/</guid>
		<description><![CDATA[I know it&#8217;s been a while.  At the rate I&#8217;m going, I probably won&#8217;t write another blog post until Thanksgiving!  Also, just a warning: the new function I&#8217;m writing about today won&#8217;t ship until our next release.  I just can&#8217;t wait to write about it!
As a software developer, I find that one [...]]]></description>
			<content:encoded><![CDATA[<p>I know it&#8217;s been a while.  At the rate I&#8217;m going, I probably won&#8217;t write another blog post until Thanksgiving!  Also, just a warning: the new function I&#8217;m writing about today won&#8217;t ship until our next release.  I just can&#8217;t wait to write about it!</p>
<p>As a software developer, I find that one of the great things about working here is that there are lots of <a href="http://blog.channeladvisor.com/blog/2008/12/03/dog-food-holiday-shopping-deals-and-rich-technology/">taste-testers for the dog food I create</a>.  In fact, our services team often comes up with great ideas for new functions.</p>
<p>The other day, Dan in the UK asked me for help writing a business rule for the following problem.  He&#8217;s got a lookup list of colors:</p>
<table border="1">
<tr>
<th>name</th>
<th>value</th>
</tr>
<tr>
<td>black</td>
<td>Black</td>
</tr>
<tr>
<td>white</td>
<td>White</td>
</tr>
<tr>
<td>blue</td>
<td>Blue</td>
</tr>
<tr>
<td>red</td>
<td>Red</td>
</tr>
</table>
<p>Just as an aside, notice how the &#8220;value&#8221; column is &#8220;proper-cased.&#8221;  That is, the first letter is capitalized.  The &#8220;name&#8221; column is case-insensitive, so a lookup will match any casing and output the proper-cased form.  But that&#8217;s not the story.  What Dan needed was a rule that would look for all these colors in his items&#8217; descriptions and output a comma separated list of the colors that were found:</p>
<table border="1">
<tr>
<th>Item Description</th>
<th>Rule Output</th>
</tr>
<tr>
<td>Big red thing with blue spots</td>
<td>Blue, Red</td>
</tr>
<tr>
<td>Shiny red toy with white and blue stripes</td>
<td>White, Blue, Red</td>
</tr>
<tr>
<td>Blue-black crayon</td>
<td>Black, Blue</td>
</tr>
</table>
<p>The bad news is: you can&#8217;t really do this with a lookup list, so I wound up writing an extremely large rule that was a bunch of REGEXREPLACE functions all jammed together.  It worked, but it was ugly.  And there&#8217;s nothing that a software guy hates more than ugly code.</p>
<p>A few days later, Vanessa here in RTP came by for help with this situation:  she&#8217;s got item titles with &#8220;accented&#8221; characters, such as á and é, that she wanted to replace with their un-accented version.  She was hoping to create a lookup list, like this:</p>
<table border="1">
<tr>
<th>name</th>
<th>value</th>
</tr>
<tr>
<td>á</td>
<td>a</td>
</tr>
<tr>
<td>é</td>
<td>e</td>
</tr>
</table>
<p>You may recall that I wrote about a function called &#8220;<a href="http://blog.channeladvisor.com/blog/2008/03/12/the-feed-doctor-on-another-new-function/">REPLACEWORDLIST</a>&#8221; that will replace entire <em>words</em> like this, but it won&#8217;t work on characters that are inside of words.  Again, I suggested she use a bunch of REPLACE functions.</p>
<p>This got me to thinking: the <a href="http://blog.channeladvisor.com/blog/2008/02/29/song-of-the-feed-doctor/">whole reason I came up with REPLACEWORDLIST</a> in the first place was that Mark asked if he could use a lookup list as an input to the <a href="http://blog.channeladvisor.com/blog/2008/02/10/the-feed-doctor-reductio-ad-absurdum/">REDUCE function</a>.  Since he couldn&#8217;t, I wrote a whole new custom function to solve his problem.</p>
<p>Now, however, I&#8217;m starting to recognize a pattern.  Users are essentially asking for the ability to &#8220;loop over&#8221; lookup lists, as REPLACEWORDLIST does, but to do something besides replace words.  In hindsight, this should have been obvious; Mark originally asked for a version of REDUCE that would loop over a lookup list instead of an array of child-item attributes.  So, I&#8217;m finally creating it.</p>
<p>The new function is called REDUCELIST.  The syntax looks like this:<br />
<code>REDUCELIST(f(x,y,z), list name, seed value)</code></p>
<p>This is a lot like REDUCE, except the &#8220;mini-rule&#8221;&#8211;<em>f(x,y,z)</em>&#8211;has three parameters instead of two.  The first (&#8221;x&#8221;) is still the &#8220;intermediate&#8221; value, but the 2nd and 3rd, &#8220;y&#8221; and &#8220;z,&#8221; are the &#8220;name&#8221; and &#8220;value&#8221; from each row in the lookup list, in turn.  Here&#8217;s how it might work on Dan&#8217;s problem I mentioned above.  Let&#8217;s say our description is &#8220;What&#8217;s black and white and red all over?&#8221; and that the lookup list is called &#8220;color list.&#8221;  Here&#8217;s the rule:</p>
<p><code>REDUCELIST(FUNCTION(VARS(@X,@Y,@Z),<br />
IF(CONTAINS($offerdescription,@Y),JOIN(",",@X,@Z),@X)),"color lookup","")</code></p>
<p>The key to the whole thing is the &#8220;mini-rule:&#8221;<br />
<code>IF(CONTAINS($offerdescription,@Y),JOIN(",",@X,@Z),@X)</code></p>
<p>Remember the way this works:  We take each row in the lookup list and evaluate this mini-rule.  &#8220;X&#8221; is the intermediate value&#8211;it starts out as the &#8220;seed value&#8221; we pass in (which is blank), and gets set to the output of the mini-rule each time we evaluate it.  &#8220;Y&#8221; and &#8220;Z&#8221; are the &#8220;name&#8221; and &#8220;value&#8221; columns from the row of the lookup list.  Here we go:</p>
<ol>
<li>X=&#8221;" (initial value), Y=&#8221;black&#8221; Z=&#8221;Black&#8221;,  output = &#8220;,Black&#8221;</li>
<li>X=&#8221;,Black&#8221; Y=white Z=&#8221;White&#8221;, output = &#8220;,Black,White&#8221;</li>
<li>X=&#8221;,Black,White&#8221; Y=&#8221;blue&#8221; Z=&#8221;Blue&#8221;, output = &#8220;,Black,White&#8221; (note: unchanged since blue wasn&#8217;t in the description)</li>
<li>X=&#8221;,Black,White&#8221; Y=&#8221;red&#8221; Z=&#8221;Red&#8221;, output = &#8220;,Black,White,Red&#8221;</li>
</ol>
<p>Pretty close!  As usual, we can put a REGEXREPLACE around the whole thing to strip off that leading comma.</p>
<p>Now, as a software developer, I love creating things that are general-purpose; writing code that can only be used for one thing is like&#8230;well, it&#8217;s cheating.  So I&#8217;m really happy with this new function.  The downside is: it&#8217;s a little bit harder to use.  This is a tension that&#8217;s always going to exist, I think.  The good news is, I&#8217;m always on the lookout for patterns, and if we can find a pattern of use with REDUCELIST, there&#8217;s a good chance we&#8217;ll wrap it up in its own function&#8212;just like we did with REPLACEWORDLIST, even though it technically came first.</p>
<p>One final note: if you&#8217;re coming to our <a href="http://www.channeladvisor.com/catalyst/">Catalyst event</a>, stop by one of the &#8220;Ask the Expert&#8221; roundtables and say hello.  Hope to see you there!
</p>
<p class="akst_link"><a href="http://blog.channeladvisor.com/?p=589&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_589" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.channeladvisor.com/blog/2009/04/20/the-feed-doctor-returns/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Feed Doctor&#8217;s Secret Encoder Pin</title>
		<link>http://blog.channeladvisor.com/blog/2009/01/15/the-feed-doctors-secret-encoder-pin/</link>
		<comments>http://blog.channeladvisor.com/blog/2009/01/15/the-feed-doctors-secret-encoder-pin/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 01:55:54 +0000</pubDate>
		<dc:creator>Anthony Alford</dc:creator>
		
		<category>Comparison Shopping</category>

		<guid isPermaLink="false">http://blog.channeladvisor.com/blog/2009/01/15/the-feed-doctors-secret-encoder-pin/</guid>
		<description><![CDATA[I&#8217;m a bit late with this pop culture reference, but if you&#8217;ve seen That Movie with the Leg Lamp, you&#8217;re probably familiar with the concept of the Secret Decoder Pin that translates a series of seemingly nonsensical letters into a brilliant marketing campaign.  
ShoppingAdvisor lets you do just the opposite.
Probably you&#8217;re using some kind [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a bit late with this pop culture reference, but if you&#8217;ve seen <a href="http://en.wikipedia.org/wiki/A_Christmas_Story">That Movie with the Leg Lamp</a>, you&#8217;re probably familiar with the concept of the Secret Decoder Pin that translates a series of seemingly nonsensical letters into a brilliant marketing campaign.  </p>
<p>ShoppingAdvisor lets you do just the opposite.</p>
<p>Probably you&#8217;re using some kind of analytics package to measure your products&#8217; performance on comparison shopping sites.  Typically when you do this, you modify your products&#8217; urls to include some kind of &#8220;tags.&#8221;  So, for example, you might take your regular product url that looks like this:</p>
<p><code>http://www.mysite.com/products/somesku</code></p>
<p>and put in a tag indicating what engine you&#8217;re listing the item on:</p>
<p><code>http://www.mysite.com/products/somesku?cse=google</code></p>
<p>Remember, this is just an example; the tags you use will of course depend on your analytics package.  Anyway, some packages let you get really detailed with your tags.  For example, you might put the name of the manufacturer in the url as a tag:</p>
<p><code>http://www.mysite.com/products/somesku?cse=google&amp;man=Acme, Inc</code></p>
<p>Well, now you have a problem, because a url can&#8217;t contain a comma.  In fact, there&#8217;s <a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm">whole list</a> of characters that can&#8217;t be in a url (include the space character, which is also in Acme, Inc).  To solve this, we <em>url encode</em> those special characters.  Here&#8217;s what the Acme, Inc url should look like:</p>
<p><code>http://www.mysite.com/products/somesku?cse=google&amp;man=Acme%2c%20Inc</code></p>
<p>The comma gets turned into &#8220;%2c&#8221; and the space into %20.  With the release last week, we shipped a new ShoppingAdvisor function to help you out with this:  URLENCODE.  It takes in a single text item and outputs that text with all the special characters converted to their url-safe version.</p>
<p>Here&#8217;s how you might write a business rule to get this url:</p>
<p><code>CONCATENATE($actionurl,"?cse=google&amp;man=",URLENCODE($manufacturer))</code></p>
<p>Notice that you don&#8217;t want to put <em>everything</em> inside the URLENCODE.  That&#8217;s because the colon and slash and other things that are already in your base product url would be converted by the URLENCODE.  So instead of &#8220;http://&#8221; your url would start with &#8220;http%3a%2f%2f.&#8221;  Yuck!</p>
<p>That&#8217;s all for now.  Tune in next time, and until then, remember to drink your Ovaltine!
</p>
<p class="akst_link"><a href="http://blog.channeladvisor.com/?p=588&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_588" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.channeladvisor.com/blog/2009/01/15/the-feed-doctors-secret-encoder-pin/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
