The other day we informed the 120 active participants in our affiliate program that it was being suspended. Our assumption was that they would understand that we made a decision based on a valid assessment of the program, so the email was brief and didn’t go into a lot of detail. The original draft was more transparent, but we let embarrassment dictate that the email should just be a concise summary. In hindsight, it deserved further explanation.
Affiliate programs serve a single purpose: to drive new business. They are not lotteries for existing customers to randomly reward other existing customers for purchases. To our chagrin, this is what was happening in the majority of cases. It turns out that most sales logged as affiliate purchases were made by buyers who already owned ExpressionEngine.
Affiliate programs aren’t bad, ours was just flawed. When a new ExpressionEngine user starts regularly visiting community sites, the next time that ExpressionEngine user buys another license, the last affiliate whose link that user happened to click got rewarded. The reward was based largely on a combination of timing and chance. In fact, a significant percentage of affiliate commissions were logged to purchasers who were customers before the affiliate even signed up. These two factors resulted in a system where the vast quantity of commission payouts were never the result of the affiliate’s influence.
Like I said, embarrassing. So why did we just now realize this and why not just fix it? Frankly, it’s been in automated operation for six years. We launched it, then didn’t give it much thought afterward. Affiliate commission payouts grew along side our overall company growth, so there was never any reason to suspect there was a problem. In our email we indicated that we are working on a new shopping experience for our users. Since our affiliate system was going to be affected by the changes, we began looking at it more closely. This revealed that only a small percentage of sales were actually from new customers.
In light of this, we asked ourselves whether paying commissions under these conditions is a better choice than, say, hiring another developer (look for this very soon)? Perhaps instead we should have rewritten the affiliate code with better logic, but the end result was going to be a drastic reduction in commission payouts and still not address the program’s shortcomings for attracting new users. So in the end, we opted to suspend the program while we finish development on our new shopping experience.
These types of decisions are not fun to make when you’re in business because they affect people in real ways. We know that a handful of people benefited a great deal by putting affiliate links on their sites, and we truly feel bad for taking the program away. I’d love to keep writing them checks. We didn’t take the program away because we are greedy fat cats, nobody’s getting a raise. We took it away because it was not creating enough new users to justify, especially when compared to using those funds to grow our team, improve our product, and try other forms of advertising. The fact is that we are a very small company–smaller than many who use our software–with tight budgets that we operate within. So while an extra 10% payout on an ExpressionEngine sale (that may already be discounted to the customer) might seem insignificant to some, for us it’s actually a significant amount that can be used to more effectively and directly move ExpressionEngine forward.
In the long run, we are sure the decision will have a positive effect. High quality sites like Devot:ee and EE Insider don’t need financing from EllisLab to be viable, nor do commercial add-on developers or professional trainers. After all, a sustainable ecosystem is not built by a provider paying for participation. It’s our earnest hope that redirecting resources will improve the product, draw in new users, and ultimately increase the quality and quantity of the traffic these sites see, supporting whatever monetization or business model they have. The end result will be a better ExpressionEngine, and that’s really what matters.