Occam’s Razor Meets The Internet Sales Tax

I was reading a post on internet sales when one of commenters compared internet sales to the problem with liquor sales across state borders. Here was my reply as I make the argument internet sales tax will fail because it is too complex. Simplicity is typically the best solution and the internet sales tax is not simple. The internet sales tax plan is a recipe for failure.

Since I grew up in Northern VA the reason the residents went to DC to purchase liquor was because the prices were cheaper. Virginia sold liquor via state run alcohol beverage control stores(ABC). DC had private businesses selling liquor who drummed up business by aggressively promoting their products. Over a period of years Virginia decided it was wiser and simpler to allow VA grocery stores to competitively price beer and wine and to allow the ABC stores to competitively price their liquor than to ask police officers to monitor liquor sales at the border. The simple solution won but it took many years and a lot of complaining by local residents and grocery stores.

If we try to look for a simple solution to internet sales tax we do not have one for either the small businesses or the smaller states. If I had a choice of creating a small business that was tax exempt or expand one that would pay internet sales taxes, I would choose to create a tax exempt business. Internet retailing is brutal so any advantage I get on Amazon is good! What can California do? Sue me in civil court!? Good luck with that!

Does anyone think it will be cost effective for Alaska and the other smaller states to collect internet sales tax? I am sure there are state employees who are dreading the thought of thousands of sales tax applications that will result in little to no tax revenue. All that work for so little money. Isn’t this the same situation as posting police officers at the border to catch out of state liquor sales? Customers are amazingly adaptive. I would not be surprised if we create a new market for package forwarding from states that do not collect sales tax. If the internet sales tax is not as simple to implement as the payroll tax, it will fail. Simplicity wins in the end.

RE:All Your Tax-Free Internet Shopping Is About To End

From the Business Insider we have this article about the demise of tax-free Internet Shopping.

"Supporters of this online sales tax bill are trying to muscle it through before senators find out how disastrous it would be for businesses in their states," Ayotte said. "I will fight this power grab every step of the way to protect small online businesses in New Hampshire and across the nation."

Baucus said the bill would require relatively small Internet retailers to comply with sales tax laws in thousands of jurisdictions.
"This legislation doesn’t help businesses expand and grow and hire more employees," Baucus said. "Instead, it forces small businesses to hire expensive lawyers and accountants to deal with the burdensome paperwork and added complexity of tax rules and filings across multiple states."

But Sen. Dick Durbin, D-Ill., said the bill requires participating states to make it relatively easy for Internet retailers to comply. States must provide free computer software to help retailers calculate sales taxes, based on where shoppers live. States must also establish a single entity to receive Internet sales tax revenue, so retailers don’t have to send them to individual counties or cities.

"We’re way beyond the quill pen and leger days," Durbin said. "Thanks to computers and thanks to software it is not that complex."

As a computer professional and a person who has tried to figure out which sales tax numbers to use in Ohio, I am skeptical that we can implement this system without a lot of small business pain. Here are some of my questions:

  1. If participating states are providing software to help retailers calculate sales, does that mean I will have to integrate fifty different sales tax calculators into our online order entry system so that I can show the customer the correct sales tax when they are checking out? Yes, Senator Durbin, fifty different sales tax calculators destroys productivity as much as going back to a quill pen and ledger. In a perfect IT world I would use a single number for the entire state and I would not have to worry with county and city taxes or exempt products. Getting the states to agree to a generic sales tax like this is probably like herding cats.
  2. I assume the states will want the sales tax to be paid monthly with annual reconciliations. This may not be that hard for Amazon but for our small business with a part time accountant this could be a lot of extra work that contributes nothing to the bottom line. If a part time accountant makes a mistake on one form, that is a problem. If more than one form has a problem, that is an accounting disaster and it may take a full time  accountant to fix the problem. Now just imagine if a state wants to audit your books. Multiplying the opportunity to fail by 50 does not sound like a plan to encourage and grow small businesses.
  3. If we had a test environment it might be interesting to see if small businesses opt to not sell merchandise in certain states or set up sales tax exempt subsidiaries.
  4. If you opt to pay sales tax electronically, you will have fifty or more userids you will need to keep up with. This problem could be reduced with a national clearing house organization to consolidate payments and record keeping but I don’t see that in the law.
  5. If you are a small business exempt for sales tax collection and you market  some of your products through Amazon, are you required to collect and report sales tax because Amazon is required to collect and report sales tax?
  6. If the legislators were serious about this internet tax, the legislators should convince Amazon and Google to take the lead with an open source project to standardize the code used for sales tax calculations and reporting. Amazon and Google have a lot of small businesses as customers and it would be nice if we came up with the same sales tax for an order. Small businesses view the changes required to support an internet sales tax as all risk and no reward. For those who believe in the law of unintended consequences, there is an incentive for a business to stay small so they can stay tax exempt.

Getting Updated Google Shopping Results

After I fixed my problem with Google Shopping I decided to see how long it would take for my browser to show correct shopping results. It has been almost a week and no change in the results. Today I decided to move on. I fixed the problem on Internet Explorer by deleting browsing history(cookies). Fixing the problem on Google Chrome was a bit more challenging. Here was the setting that worked.

Settings - Clear browsing data_2012-11-05_11-56-33

Fixing the Google Shopping problem where no products show up even though the product ads are searchable

I have been battling this problem with Product Ads for some time. Our Products Ads were supposedly search-able but we could not find them using Google Shopping. We could find our products via a standard Google search and via Google Shopper on my android phone. In the last email of this continuing saga of questionable product support I saw a telephone number. Previous phone calls by our marketing guy had Google support recommending that he increase the bid amount and open the server up for Google bot searches. None of those recommendations worked but I really did not have a choice. So I called Google and they recommended that I add a default product ad extension for all products. Hmm… Here’s the steps:

  1. Bring up your product listing ads campaign, My Product Listing Ads.
  2. Click on the Ad Extensions tab.
  3. In my case the Ad Extensions area of the screen was blank, so I clicked on the New Extension button.
  4. There was only one choice for me, All products, so I selected it. Now I have one Ad Extension on my screen for all products.
  5. The person from Google said it would take about 12 hours for it to process.

This morning our products are searchable in Google Shopping from most desktops and we are back into the comparisons. I guess that a default product extension is a necessary step. See the picture below for an example.

We still have the problem where we get different search results from different browsers and laptops. My desktop using Chrome seems to be using an old version of shopping results where as my Firefox browser on the same computer retrieves current shopping results. I guess Chrome uses a cached version and will eventually catch up. Another new change for Google Shopping is that  "site:" does not work any more. It is fascinating that Bing and Google have had so many problems with shopping search engines.

Campaign Management_2012-10-30_10-59-37a

Comparison Shopping Engines: Want to Compete with Amazon? Start Offering Remarkable Content

Here is a great post by Trinity Hartman, Managing Editor of Content Ping that argues that the best way to compete with Amazon is with great content and offers a few pointers on how to improve the content.

If CSEs want to compete with Amazon as places where online shoppers go to discover products and compare prices, they’ll need to improve their content.

…

Making Great Content Work

Here’s my advice to CSEs on how they can become go-to sites for product discovery and research:

  1. Obtain outstanding product descriptions
  2. Make room at the product page level for enhanced content (lifestyle images, video, 3D images, magnification, buying guides, etc.)
  3. Pay attention to product page design
  4. Include more consumer-generated content (product reviews) 

Comparison Shopping Engines: Want to Compete with Amazon? Start Offering Remarkable Content
CPC_Andrew
Fri, 28 Sep 2012 15:13:06 GMT

Amazon to Not Pay For Google Shopping Listings

Tien Nguyen wrote a nice article, Amazon to Not Pay For Google Shopping Listings, in which he said:

In all it’s good news for retailers, large or small to not have to compete with Amazon for eyeballs on their products, similar to an MLB team learning that the high budgeted Yankees are bowing out of the season. Since Google Shopping Ads’ costs will be determined by the market, similar to Adwords (which interestingly enough Amazon is still on), one less high spender should in theory lower costs and increase visiblity for the rest.

On one hand I agree with him that it is good to not be competing with Amazon in Google Shopping. Lower ad costs will be good, too. At one time it seemed that every time I looked at a Google Shopping price comparison Amazon was at the top of the list. In recent months I found more and more instances in which Amazon was not the low cost price leader. The bad news is that even when we were the price leader, we were not getting either the clicks or the conversions.

Our marketing guy is pretty skeptical about Google Shopping Ads. Our trial run with Google Shopping ended with terrible conversion rates compared to Google Adwords. We are getting a better bang for our advertising buck with Google Adwords.  Part of the problem is that Google Shopping and Adwords are competing against each other for the same sale rather than being complimentary or additive. When I look at the potential for this channel, I am pretty dismayed. Google Shopping has the most comprehensive comparison shopping list out there and we are getting about the same sales from Google Shopping as we are getting from Shopzilla.  Our Nextag sales are even better. I don’t get it.

Google Shopping Problems

We finally gave up on Google Product Ads this week. We get a lot more traffic from Google Shopping than from the Product Ads so it made sense to turn Product Ads off until Google can get their act together. Our problems with Google Shopping seems to have started on June 28th when our search clicks fell off to almost nothing.  Despite all of our products showing available for Product Search only 934 products could be found using Google Shopping. We tried briefly to try and make our feed work for both Product Ads and Product Search but the progress was too little and too slow. So we unchecked the Product Ads box on the advanced feed settings and submitted the feed again. The disapproved Product Ads is zero and the products we can find using a generic Google Shopping search has climbed from 4390 to 5510 and our search clicks are back to where they were before this mess. This whole mess could have been avoided with some good diagnostic messages in Merchant Center and some decent customer support.

Dashboard_2012-07-09_16-31-12

Google Shopping is not listing products if the product-ads or product search is disapproved

In the Merchant Center Troubleshooting group Celebird said this in response to the question Google Product Ads Disapproved but Product Search Approved:

for a u.s. feed the two policies have now been combined —
if product-ads is disapproved the items will not be listed;
if product-search is disapproved the items will not be listed.

Although I have not seen this confirmed in any Google communication, it sure looks like this is what is happening. The big problem is that we do not know why our Product Ads are being disapproved. It is hard to fix a problem without an error report. Here is my previous post on this problem, Google Shopping Fail? Webmasters Report – CPC Strategy .

Google Shopping Fail? Webmasters Report – CPC Strategy

Andrew posted this article on random occasions Google has denied the Google Shopping ads for retailers that abide by all rules. Since I do not have a Facebook ID I will make my comments here.

We noticed a problem last week and it was more severe than Product Ads being disapproved. Only the products with "approved" Product Ads were actually searchable in Google Shopping. Only 934 of our 6652 products could be found using a generic search in Google Shopping despite the Merchant Center saying that all of the products were searchable. Removing the products from Product Ads seems to have fixed the problem.

Here is part of Andrew’s article.

A few hours ago we received word that on random occasions Google has denied the Google Shopping ads for retailers that abide by all rules. These retailers were given no notice on why their Google Shopping ads were disapproved, just a nasty looking graph in the Google Merchant Center:

Google Shopping Fail? Webmasters Report – CPC Strategy

The Saga of the Weekly Newsletter

Probably the main reason my employer hired me was because the Exchange server had crashed and they needed help immediately. A biweekly newsletter had a “problem” and the Exchange server had run out of disk space.  Since I arrived at the peak for the season and they had several high priority items for me to work on, the initial solution was to stop sending the newsletter.

About six months later we decided to restart the newsletter and the results were pretty ugly. Exchange did not crash but there were a lot of error messages. So I set about fixing the newsletter.

The configuration consisted of a Visual Basic application and a local SMTP server.  This configuration was in response to some severe problems encountered when the application ran directly off of the production server. The processing is simple. A Visual Basic application pulls the current newsletter and the mailing list from our data base and then sends individual emails to the SMTP server. When I started working on the newsletter, the mailing list had about 120,000 people on it. There was an automated program that was supposed to clean up the mailing list based on the error messages returned. Obviously this wasn’t working.

To start fixing the problems I adopted a check list that is very similar to what John Pollard of ReturnPath recommended recently in a post. Although we are not big enough to use their services, I appreciate the efforts that ReturnPath has made in the industry. Here is John’s list.

What should a marketer do to establish Sending Permanence and a good sending reputation on a new IP address?

The answer to this question is to take the new IP address through a warm-up process that works within the ISP restrictions over a period of time. An ISP wants to protect its members from spammers, so working within their rules can help your IP establish a positive sending history and a good sending reputation. Below is a list of seven simple tips to help you get started warming up your IPs:

  1. Deploy from a sound infrastructure: A correctly configured DNS, such as reverse DNS (PTR) records and authenticating with SPF and DKIM tells an ISP that you are more likely a legitimate sender.
  2. Sign up your IP address with all available feedback loops: Maintaining a low complaint rate is a primary factor in determining your sending reputation. Spammers don’t care about complaints and IP addresses with high complaint rates experience ISP blocks and email being sent to the junk folder.
  3. Ensure your bounce process is set to remove unknown users after one bounce: Maintaining a low unknown user rate is another primary factor in determining your sending reputation. IP addresses sending to a large number of unknown users experience ISP blocks and email being sent to the junk folder.
  4. Clean up your email list of inactive and unengaged subscribers: Spam traps are inactive email addresses created by an ISP to catch spammers or marketers with bad list hygiene practices. IP addresses sending to a large number of spam traps experience ISP blocks and email being sent to the junk folder.
  5. Send to your best subscribers first: Your best subscribers are those that are actively engaged with your email program (e.g. high opens, click-throughs and conversions). These subscribers give your new IP address high engagement metrics which tells an ISP that your email is legitimate.
  6. Start slowly and increase volume over time: ISPs limit the amount of email they will accept from a new IP address (throttling). Start sending a small number of emails to each ISP and let their spam filters get used to the sending behavior of your new IP address before increasing volume.
  7. Monitor your Deliverability: Monitor how the ISPs are treating your email during the warm-up process using Return Path’s Mailbox Monitor. Your Inbox Placement Rate is a good indicator of when an ISP’s spam filter adjusts and can help identify other deliverability problems.

Here is my check list for fixing our newsletter problems.

  1. The first thing I did was to set up subdomains and reverse DNS (PTR) records for the static IPs we would be using to send out the mail. The reverse pointer record is a requirement for most feedback loops. Since we had ISP connections from two different ISP providers and we saturate the connection for several hours, I routed the newsletter to our backup internet gateway. That made the folks in the office happy.
  2. Next I set up feedback loops for those ISPs that did not require DKIM, AOL, Roadrunner, and Comcast.
  3. Then I ran our mailing list through a batch program to verify email addresses. This knocked off about 20,000 unknown or obsolete email addresses off our mailing list.
  4. Since the automated mailing list cleanup procedure did not work, I replaced it with two procedures. I used a semi-automatic procedure using a group of Regex expressions to categorize the SMTP errors I was getting off of the SMTP server. It seems that every ISP has a different way to tell the sender that an email address is unknown or inactive. The 5.1.1 and various flavors of the 5.5.0 code are the most common SMTP error codes for unknown or inactive users but I did find a couple of folks using the 5.7.1 code. I use this list to remove about 60 users off of the mailing list a week. I also used a semi-automatic procedure of examining the returned email in the newsletter inbox. Most of the 700 messages are mail box full messages and vacation replies which I eliminate quickly through the use of filters. Although this is tedious I chose to manually go through the remaining emails. This typically is about 250 emails and consist of miscellaneous error messages not caught by one of my filters, feedback loop replies, challenge and reply messages, some unknown user replies, and the occasional customer reply.
  5. My next trick was to install a second SMTP server(iRedMail) to sign the email and forward the email to the existing SMTP server. Yahoo likes DKIM and we needed to get back in Yahoo’s good graces. Once I confirmed that we were properly signing our emails, we could set up the feedback loop with Yahoo. 

So how has this worked out. In November of 2009 we went from biweekly to weekly mailings and our sales from the newsletter doubled. This surprised our marketing guy. Our mailing list which started out at 120,000 in 2009 is now down to 88,000. This drop has some benefits that are not obvious. Yahoo has not throttled us in over a year so we must be doing something right. Even when an ISP spam checking routine(e.g. Comcast) bans us, it is quickly resolved by filling out a form. Since we are complying with all of the best practices for senders, I can release the email in 24 hours. Even though our mailing list is down about 2.5% from 2011 and our sales are up 50%. These are pretty impressive numbers considering that our sales outside of the newsletter are flat compared to last year. For those of you who keep track of the sender score, our score went from 80 to 96. Here is our latest report.

senderscore

Goodbye Twenga

Recently we had a performance problem that I traced back to shopping site called www.twenga.com. They were generating a lot of requests so I updated the the robots.txt file to slow everyone down and updated the robots.pm file used by awstats to see how much traffic Twenga and a couple others were generating. After a couple of days I decided I had enough and banned Twenga via the robots.txt file. They had consumed over 1.6 GB in the first week of April which was several times more traffic than robots like Google and Bing. Since we do not get any sales from Twenga it was an easy decision.

Adventures with iRedMail – Part III

Recently I installed iRedmail at work so that we could include DKIM signatures in our newsletters. Every week we send out a newsletter to 96,000 former customers. It takes about 13 hours to send the newsletter. Yahoo is probably our most important email domain and they want us to implement DKIM. A couple of weeks ago we started seeing Yahoo limit our sending rate. Obviously they had a problem with something in our newsletter. So we re-analyzed the error codes we were getting during the newsletter mailing and implemented DKIM. The problem is fixed. Here is how I implemented this version of iRedMail.

I implemented a VMware version of iRedMail to sign newsletter emails using DKIM. I used Ubuntu 9 server version(optimized for VMware version) to build appliance.

  1. The server works as a mail proxy in front of the SMTP server we use exclusively for the newsletter. It signs and relays the email to the existing SMTP server. I kept the existing SMTP server so that I could continue to use my existing procedures for parsing the log files to identify old/obsolete mailboxes.
  2. I created iRedMail users in LDAP to relay local users to mailboxes on Exchange.
  3. My primary bottleneck is still my mail transmission to the Internet speed, 2 per second. I can create newsletter emails at about 8 per second.
  4. On an old Proliant DL350 G4 iRedMail consumes about 40% of the dual CPU computer for four hours.

Since I had experience installing iRedMail it went quickly. The biggest bug I had to fix was the AWStats/permissions problem on the mail.log file.

Cleaning up an existing newsletter mailing list

In December 2008 I was asked to clean up some problems with our newsletter at work.  We had over 100,000 people on the mailing list and over 90% of the people on the list have ordered from our website. After a little bit of analysis I determined that we were bouncing 30% of our newsletter emails because we had failed to follow the most basic rules of newsletter management and the automated newsletter cleanup procedures did not work. So here is my list of tasks I used to cleanup the newsletter and get the bounce rate down to 0.1%.   In our case we are sending the emails out from a dedicated server at our office.

  1. Use a static IP to send out the newsletter.  One of the first SPAM checks email providers use is to see whether the  IP you are using to send out the newsletter is coming from your domain.  This means that you need to set up a sub-domain(e.g. mailserver.mycompany.com) and a PTR record for the sub-domain.
    1. Set up a sub-domain for the static IP. Since our web server is hosted we had to ask our host provider to set up the sub-domain.
    2. Set up a PTR record for reverse DNS lookup. I asked the folks who provided us our static IP to set up the PTR record to the sub-domain.
    3. If everything is set up correctly you should be able to pass the reverse DNS lookup test. This is the site, Forward Confirmed Reverse DNS Lookup Test, I used to confirm it was working properly.
  2. Set up feedback loops if you can. Feedback loops are pretty dumb idea that email providers like. I dislike them since I have only feedback loop that is useful. I am grateful that AOL has made it reasonably easy for me to remove people who do not want to be on our mailing list. I was able to quickly modify our existing newsletter template to embed an unsubscribe link that would make it through the feedback loop processing. On the other hand I found I wasted a huge amount of time trying to set up a feedback loop with  Yahoo and Hotmail. Both Yahoo and Gmail  want you to sign your emails with DKIM or they will not talk to you. DKIM was supposed to reduce SPAM but I have not seen any reports showing it reducing SPAM. Implementing DKIM will require me to set up a new email server for the newsletter so it is pretty far down my priority list. So far I have been able to ignore this issue. Hotmail wanted me to get a letter from our local internet provider saying we were the only folks using the static IP. Our local internet provider, RoadRunner, told me several times that no customer had ever requested a letter like that and they were not going to provide it. I set up a feedback loop with Comcast but after a couple of months they increased the amount of information they redacted from the email and broke the unsubscribe loop in the feedback loop message. 
  3. Embed an unsubscribe link in your newsletter template that will unsubscribe the user but does not require the email address.  Since most feedback loops redact the email address, this will allow you click on the link in the Feedback loop message to unsubscribe the user.
  4. Go through the error log on your email server and look for the messages that indicate that email address is inactive or no longer used. Unfortunately there is a multitude of messages that are used to describe unknown users(5.1.1, 5.5.1, unknown user, alias not found).  This is one area that begs for a standard. This is where the feedback loop should have been.
  5. Manually go through your newsletter inbox and look for:
    1. Earthlink, PeoplePC, Zonealert, and other verification replies
    2. Unknown user messages.
    3. Feedback loop messages
    4. Changed addresses and unsubscribe messages.
    5. Other replies.
      1. Mailbox full, Out of office replies
      2. Customer service requests. About once a week we get a reply to the newsletter that asks a question about a product.
      3. Miscellaneous SMTP problems(e.g. DNS and email forwarding problems)