The Web Monetization specification creates a deliberately simple way of implementing a monetization stream, that is, a stream of continuous payments from the visitor to the owner of a web page.
The purpose of web monetization is generating passive income as a replacement for ads.Every second a visitor that is web-monetized remains on your website, Web Monetization will transfer a new, very small amount, to a maximum of, currently, $0.36 per hour. Thus the amount is closely tied to the time visitors spend on your site, and the more popular your site the more money you make.
Web Monetization is expressly designed not to require any user interaction. If a monetized user visits a monetized page, the monetization stream starts up automatically and only stops when the user leaves the page.
Web Monetization does not require a back-end. It can be implemented in static HTML pages even by newbie web developers. Site owners have the option of showing premium content to visitors that pay them, although at the moment this depends on JavaScript and the premium content mechanism can likely be subverted by web developers with some JavaScript knowledge.
Web Monetization is built on top of the Interledger protocol that connects ledgers (any organization holding money in accounts) and facilitates money transfers between accounts in those ledgers. It is currently only supported by the Coil extension, but browsers could start supporting it natively in the future.
Coil is a payment provider; a company that arranges for payments to be sent from site visitor to site owner. It is currently the only one, but it is likely that more payment providers will arrive on the scene.
Payment providers could offer a broader range of services than just a passive payment stream. For instance, they could support tipping; i.e. the one-time transfer of a specific amount of money. This is not a functionality that Web Monetization supports, though - that specification is only concerned with setting up passive, fixed monetization streams.
In order for Web Monetization to work, both visitor and page owner will have to have a digital wallet connected to the Interledger network, which is used for the actual transfer of money in a payment stream. Payment providers offer such a digital wallet as part of their service, but theoretically you could set up your own.
Visitors also need to subscribe to a payment provider. This payment provider manages the monetization stream.
Unfortunately, right now visitors will have to sign up for both a digital wallet and a payment provider. In addition, all current digital wallets are based on cryptocurrency. The web monetization world is aware that these two issues are a problem to some, and is working on solving them. Unfortunately that is going to take a while for reasons explained on the monetization stream page.
Visitors also need a web monetization agent: a piece of software that supports web monetization, provides the connection to the Interledger network, and can start up a monetization stream. Currently the only web monetization agent is Coil's browser extension. In the future browsers may support web monetization natively.
Site owners should add a <link>
tag to each page or asset they want to monetize. This tag contains a payment pointer: a link to a JSON file that defines a payment end point, an address of the digital wallet where visitors' payments should go. Visitors receive this payment pointer when they sign up for a wallet.
Site owners can listen to a monetization
event fired by the <link>
tag to determine if the monetization stream is running. They can react by, for instance, showing premium content to paying visitors — although right now this is only possible via JavaScript that is fairly easy to work around for web developers.
The details can be found on the documentation page, and there's also a glossary and an example script available.
Unfortunately no browser supports Web Monetization natively yet. The Gecko-based Puma browser for Android supports it partially, but does so by compiling the Coil extension along with the Gecko rendering engine.
There is also a Wordpress plugin, but it mainly helps you by creating link tags and hiding content automatically. It uses a display: none
that is triggered by the monetization
event. It, too, depends on the Coil extension.
That leaves the Coil extension the only full implementation at the moment. In addition to the current Web Monetization specification it will continue to support the deprecated previous version for a while, and it handles a few cases that the specification deliberately does not cover.