Post navigation

#hackTO v2.0: WP InstaPaywall

#hackTO the second happened this past Saturday (Sept 26, 2010), and like the first one, it was awesome. We got a fresh batch of APIs (though, somereturning) to play with, way too much sugar, and a lot of new faces, but the formula was the same: 6-7 hours to hack together an app using one (or more) of the given APIs.

The pressure was on: as former champion of #hackTO, I had to defend my title. I decided to go big with an ambitious idea, not totally sure if I’d be able to finish in the given time. I had originally come up with the idea at the first #hackTO, but didn’t really have time to implement so I put it on my projects-for-the-future list. But this time around figured I’d give it a shot and so the WordPress InstaPaywall plugin was born.

Sadly, I didn’t reclaim my title but managed to score a third place entry. The judges apparently had a tough time deciding though, because there were a lot of really great apps developed.

Now, onto the plugin!

WP InstaPaywall

Premise

In its simplest form, the plugin lets you paywall your blog posts and make money by charging readers for full access to them. Paywalls are the new hotness these days and Freshbooks’ billing API seemed like a perfect fit for accomplishing this.

Caveat

I think it’s important to note that I hate paywalls. I hate freewalls even more (yes, NYTimes.com, I’m talking about you!). But, it’s a model that some people think will work (and are betting their futures on), and it clearly is working for some. So, while it pains me to build something that contributes to the paywall madness — I would much rather see everyone take a Guardian-like approach; the world would be a better place if we did — it doesn’t hurt to sip the kool-aid every once in a while.

Plugin Walk-through

The plugin basically takes a modified iTunes-like approach: 1-click buying that you’re billed for at the start of the month.

It’s a bit difficult to run a demo, so I’ll just use screenshots instead.

Note: The plugin is a bit rough around the edges and not quite as good-looking or elegant as I would like, but what do you expect in 6.5 hours?

Enable Paywall

WP InstaPaywall — Paywall Metabox

The plugin adds a new metabox to the Edit Post screen, which let’s you enable the paywall for any given post. Once enabled, you can specify the amount that you would like to charge for the post.

Users => Freshbooks

WP InstaPaywall - Clients in Freshbooks

All users in WordPress get an associated Client entry created in Freshbooks.

Recurring Invoice

All users in WordPress also get a Recurring Invoice entry created in Freshbooks. This is central to the application billing service in Freshbooks. This invoice is set to go out at the first of every month.

Rack up charges

WP InstaPaywall - A Paywalled Post

Whenever a user encounters a paywalled post, they’re shown a message indicating they can view the full content by paying a given amount. If the user agrees to pay, the amount indicated is added as an entry to their Recurring Invoice.

WP InstaPaywall - An Unlocked Post

WP InstaPaywall - Upcoming Payments

Charges for any given month add up. Users can view upcoming charges as well.

WP InstaPaywall - Monthly Recurring invoice

On the first day of the following month, Freshbooks automatically emails the invoice to the user (Freshbooks has snail mail support if you want to go old school — though, this wasn’t integrated). Then, thanks to the magic of webhooks (and a just-in-case cron job), the user’s invoice entries are cleared so they have a clean slate for the next month.

And then the cycle repeats.

The Pipe Dream (aka Potential Improvements)

My origin scope for the plugin was way bigger, but I just didn’t have enough time to implement everything. My main goal was to provide a three-pronged approach to paywalling to allow content creators the maximum flexibility. Some other ideas I had for payment models:

The Subscription Model: Pay a single fee on an ongoing basis (weekly? monthly?) and get access to all content on the site.

The Debit Model: Load up your account with money up-front and charge on a per-use basis

The (FB) Credit Model: Similar to The Debit Model, but using Facebook Credits instead of money.

The (True) Micropayments Model: Let users decide how much they want to pay, and allow content creators to set “suggested amounts”.

Other improvements and crazy ideas:

Various Payment Periods: Options to select how often the user should be billed: Weekly, Monthly, Instantly?

Auto-billing: Rather than waiting till the end of the month for people to pay, integrate with Freshbooks’ autobilling support to charge their credit cards instantly.

Track and Suspend Deadbeats: If working with the “Pay me at the end of the month” model, add safeguards to monitor, suspend and harass people who fall behind on payments.

Authenticated RSS Feeds: This would only work with the subscription model.

Analytics: Probably the most important thing next the actual payment piece. Graphs and other metrics that tell you what content is being paid for, when, where, why, by whom, and so on.

Ditch Freshbooks? I love Freshbooks, but it’s way too expensive for Joe Blogger. For this plugin to work effectively, you’d need to get one of the higher-priced accounts which start at $30/month, which means you’d have to “sell” at least $30 worth of blog posts per month just to break even. It might be easier just to integrate directly with something like PayPal. But then again, Joe Blogger probably shouldn’t be paywalling his posts anyway…

Code?

Like most of my work (e.g. WordPress projects), I’m always happy to openly release the course code. However, the code for InstaPaywall in its current state is way too “unclean” to be release-worthy. When I get a chance, I’ll clean it up and open it up to the world.