If you make any changes to the table, your monetization{' '}
link will change. Be sure to replace your old{' '}
- link element with the updated version. Check out{' '}
-
- Add Web Monetization to a page
- {' '}
- if you need help.
+ link element with the updated version.
>
diff --git a/src/components/pages/ProbRevshare/components/_link-tag.jsx b/src/components/pages/ProbRevshare/components/_link-tag.jsx
index da547296..de919d56 100644
--- a/src/components/pages/ProbRevshare/components/_link-tag.jsx
+++ b/src/components/pages/ProbRevshare/components/_link-tag.jsx
@@ -16,7 +16,7 @@ export function SharesLinkTag() {
}
if (!pointer) {
- return
Enter shares with valid payment pointers and weights.
+ return
Enter shares with valid wallet addresses and/or payment pointers and weights.
}
return (
diff --git a/src/components/pages/ProbRevshare/components/_share-input-container.jsx b/src/components/pages/ProbRevshare/components/_share-input-container.jsx
index 9bfc5b5d..ff3674f2 100644
--- a/src/components/pages/ProbRevshare/components/_share-input-container.jsx
+++ b/src/components/pages/ProbRevshare/components/_share-input-container.jsx
@@ -7,7 +7,7 @@ export function ShareInputContainer({ children }) {
Name
-
Pointer
+
Wallet Address/Payment Pointer
Weight
Percent
diff --git a/src/components/pages/ProbRevshare/lib/_index.js b/src/components/pages/ProbRevshare/lib/_index.js
index 719eb150..26cf7c0b 100644
--- a/src/components/pages/ProbRevshare/lib/_index.js
+++ b/src/components/pages/ProbRevshare/lib/_index.js
@@ -77,7 +77,7 @@ export function pointerToShares(pointer) {
if (!encodedList) {
throw new Error(
- 'No share data found. Make sure you copy the whole "content" field from your meta tag.',
+ 'No share data found. Make sure you copy the whole "content" field from your link tag.',
)
}
@@ -85,16 +85,16 @@ export function pointerToShares(pointer) {
if (!validatePointerList(pointerList)) {
throw new Error(
- 'Share data is invalid. Make sure you copy the whole "content" from your meta tag.',
+ 'Share data is invalid. Make sure you copy the whole "content" from your link tag.',
)
}
return sharesFromPointerList(pointerList)
} catch (err) {
if (err.name === 'TypeError') {
- throw new Error('Meta tag or payment pointer is malformed')
+ throw new Error('Link tag, wallet address, or payment pointer is malformed')
} else if (err.name === 'SyntaxError') {
throw new Error(
- 'Payment pointer has malformed share data. Make sure to copy the entire pointer.',
+ 'Wallet address or payment pointer has malformed share data. Make sure to copy the entire address.',
)
} else {
throw err
diff --git a/src/content/docs/docs.mdx b/src/content/docs/docs.mdx
index fb2a83f3..db0f691f 100644
--- a/src/content/docs/docs.mdx
+++ b/src/content/docs/docs.mdx
@@ -2,67 +2,51 @@
title: Intro to Web Monetization
---
-import { LargeImg, LinkOut, Tooltip } from '@interledger/docs-design-system'
+import { LinkCard, CardGrid } from '@astrojs/starlight/components';
-As a website user, it’s common to encounter a headline that captures your attention, only to find the article locked behind a paywall. How often do you pay for a subscription to read a single article? What if you could pay a fraction of the subscription price to access the article and avoid the subscription altogether?
+
Need help with this page
-As a website owner, you anticipate losing a few visitors due to paywalled content. Even if you offer weekly subscriptions, the price may be more than a visitor is willing to pay. But instead of subscriptions, what if you could generate revenue per piece of content, or even based on the amount of time a visitor spends on the content?
+People already think they know what WM is when they see the words. Ads, affiliate marketing, etc.
-These are just two ways in which Web Monetization can make payments easier. With Web Monetization, website visitors can send payments directly to websites using a browser extension or any browser that natively implements the Web Monetization specification.
+Need an overview to WM that's appropriate for users and developers.
-## Current payments infrastructure
+## Support web monetized content
-It can take a bit of work to implement payments on a website. If your site already accepts payments, you may be familiar with what it takes to accept multiple payment methods and currencies. The process typically looks something like this:
+
Just playing around with Starlight components here
-1. You sign up with one or more payment providers, depending on the payment methods and currencies you want to accept.
-2. You integrate their service(s) into your site. For example, you may create and host your own payment form that is connected to the service, or you use a form supplied by the payment provider.
-3. Depending on the payment method your visitor wants to use, they may need to create an account with you or the payment provider.
-4. Your visitor fills out the payment form. Ideally, they remain on your site to complete the transaction but may be required to access the provider’s site instead.
+
-## Introducing Web Monetization
-
-Web Monetization (WM) aims to simplify the payment experience for you and your website visitors. It’s an open technology that allows websites to automatically receive payments from visitors, facilitated by the visitor’s browser and their preferred WM provider.
-
-It’s a proposed standard that allows your visitors to pay an amount of their choosing with little to no user interaction. It enables a website to automatically signal to web browsers that it can accept payments and enables web browsers to facilitate a payment by:
-
-- Obtaining authorization to initiate the payment.
-- Gathering details and issuing instructions to start the money movement process.
-- Creating a payment session.
-- Communicating payment events to the site so the site can optionally respond. For example, the site could [remove ads](/docs/guides/remove-ads) or provide [access to exclusive content](/docs/guides/provide-exclusive-content) for paying visitors.
-
-### High-level flow
-
-The following image shows the Web Monetization flow at a high level. Some steps have been combined or excluded. A more in-depth explanation is provided in the [Web Monetization flow](/docs/intro/web-monetization-flow) page.
-
-
-1. Bob visits a [web monetized page](/docs/guides/monetize-page). The monetization `` element is how the website signals its acceptance of payments to the browser.
-2. Bob’s browser, either natively or via a browser extension, parses the `` element to get the wallet address for Alice, the site owner.
-3. Bob’s browser/extension sends requests to Alice’s wallet address to obtain authorization and instructions for sending a payment.
-4. With authorization granted and payment instructions received, the browser/extension sends requests to Bob’s wallet address to initiate the outgoing payment.
-5. The Web Monetization flow ends. Payment processing, currency exchange, and settlement occurs between the two accounts via a common payment rail.
-
-### Specifying payment amounts and currencies
-
-Web Monetization doesn’t allow a website to specify a payment amount or currency. It only allows the site to tell the browser it can accept payments.
-
-With the help of a WM provider, your visitor decides whether to make a payment, how much and how often to pay, and in which currency. Your WM receiver can then exchange the currency of incoming payments based on what you want to receive. This flexibility allows you and your visitors to choose the monetization methods that best suit your needs.
-
-### Processing and settling payments
-
-Web Monetization’s role is to help coordinate payments. It does not process or settle payments.
+
-At each end of Web Monetization is an account that supports Open Payments. The WM provider supplies your visitor with a funded sending account. In some cases, the visitor could even act as their own WM provider. The WM receiver supplies you with a receiving account.
+
-Web Monetization communicates with the sending and receiving accounts to obtain the necessary authorizations and instructions for a payment to be sent and received. Payment processing and settlement then occurs between the sending and receiving accounts, outside of the Web Monetization flow.
+
-## Prior specification version
+## Web monetize your content
-A new version of the Web Monetization specification was published in June 2023. Users of the previous version should be aware of the following:
+
+
+
-- The previous version only used Interledger's Simple Payment Setup Protocol (SPSP). The new version uses Open Payments.
-- The `` element is deprecated in favor of the [``](/docs/references/html-link-rel-monetization/) element.
-- The `` element does not support the shorthand form of a payment pointer (e.g., `$wallet.example/alice`). You must use the endpoint URL that the payment pointer resolves to (e.g., `https://wallet.example/alice`). If you need help converting a payment pointer from shorthand to its equivalent URL, enter your payment pointer into the input field on paymentpointers.org. In most cases, you can simply replace the `$` with `https://`.
+
+
\ No newline at end of file
diff --git a/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx b/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx
deleted file mode 100644
index a25b4c61..00000000
--- a/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Add a streaming payments counter
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Web Monetization allows you to know exactly how much a web monetized visitor has sent to you. In cases where a web monetized visitor has chosen to pay you in time-based increments (such as per second or per minute), a streaming payments counter can be a helpful tool to show your visitor how much they've sent. The amount updates in real time as more payments come in during the session.
-
-## Example
-
-The example below illustrates how to use the `monetization` event to show a web monetized visitor how much they've sent you during their current browsing session.
-
-```html
-
-
-
-
-
-
-
-
-
- Thanks to you, I've made
- 0.00 USD
-
-
-
-```
-
-## How it works
-
-First, we'll bind the `monetization` event if the visitor is web monetized (`window.MonetizationEvent` is defined).
-
-The `monetization` event contains details about the payments that occur. The `amountSent` attribute of the event returns the amount (`value`) and currency code of the sent payment. A currency code is a three-letter code, like USD, EUR, or GBP.
-
-```js
- if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]');
-
- link.addEventListener("monetization", (event) => {
- const {
- amountSent: { value, currency },
- } = event;
- console.log(`Browser sent ${currency} ${value}.`);
-```
-
-The `currency` is set on the first payment and doesn't change. Remember, it represents the sent payment's currency, which may be different from the currency you receive (depending on how your receiving account is set up with your WM receiver).
-
-```js
-// initialize currency on first progress event
-if (total === 0) {
- document.getElementById('currency').innerText = currency
-}
-```
-
-The amount in `value` is an integer, which we add to our total.
-
-```js
-total += Number(value)
-```
-
-Finally, we update the text on the page with the new total. We want the total to be in a readable format, so we convert the number to a string and round it to a specified number of decimals, which is `9` in this example. This formatted version of the amount gets written to the `total` span on the page.
-
-```js
-document.getElementById('total').innerText = total.toFixed(9)
-```
-
-## Interactive example
-
-This example simulates showing a visitor how much they are sending you based off how long they remain on your web monetized page.
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/monetize-page.mdx b/src/content/docs/docs/guides/monetize-page.mdx
deleted file mode 100644
index bd79b5c5..00000000
--- a/src/content/docs/docs/guides/monetize-page.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Add Web Monetization to a page
----
-
-import { LinkOut } from '@interledger/docs-design-system'
-
-This page provides basic instructions for adding Web Monetization to a web page. If you're new to web monetizing content, this guide is a great place to start.
-
-## Prerequisites
-
-- Web monetized pages must be secure and served over HTTPS.
-- You must have the wallet address assigned to you by your WM receiver.
-
-## Monetize a page
-
-To add Web Monetization to a page, add the monetization `` element to the page's ``.
-
-The element’s `rel` value is always `monetization`. The `href` value is your wallet address. If your wallet address is a payment pointer, it must be entered in URL format.
-
-For example:
-
-```html
-
-
- My Site
-
-
-
-```
-
-### Multiple monetization links
-
-A single HTML document can contain multiple monetization `` elements; however, it's up to each WM provider to decide how they want to handle this scenario. We recommend WM providers split the payments evenly between the links.
-
-## Next steps
-
-Now that you've web monetized your page, you can choose to [remove ads](/docs/guides/remove-ads), [provide exclusive content](/docs/guides/provide-exclusive-content), or respond to [`monetization` events](/docs/references/monetizationevent) in some other way when a web monetized visitor accesses your page.
diff --git a/src/content/docs/docs/guides/provide-exclusive-content.mdx b/src/content/docs/docs/guides/provide-exclusive-content.mdx
deleted file mode 100644
index 8bb0beb8..00000000
--- a/src/content/docs/docs/guides/provide-exclusive-content.mdx
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: Provide exclusive content
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Give your paying visitors access to exclusive content when the `monetization` event fires. Since the `monetization` event only fires when an outgoing payment request is successfully created, your exclusive content only appears to web monetized visitors.
-
-## Example 1 - Simple
-
-The example below illustrates a simple way to show exclusive content to web monetized visitors.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
Content will appear below here if you are Web monetized.
-
-
Here's some exclusive content!
-
-```
-
-### How it works
-
-First, we want to check whether Web Monetization is supported. We do this by calling `supports()` on a link element's `relList` and passing `"monetization"` as a parameter. If this check doesn't exist, we can't listen for the `monetization` event to tell us when Web Monetization initializes.
-
-```jsx
-const link = document.querySelector('link[rel="monetization"]')
-if (link.relList.supports('monetization')) {
-```
-
-Next, we add an event listener to the `link` element. The `monetization` event is emitted when Web Monetization initializes.
-
-```jsx
-link.addEventListener('monetization', (ev) => {
-```
-
-Finally, we select the exclusive content element we want to make available to web monetized visitors. Since we defined a CSS class to hide the content, removing the class will make the content appear.
-
-```js
-document.getElementById('exclusive').classList.remove('hidden')
-```
-
-### Interactive example
-
-This example simulates hiding and showing exclusive content based on a visitor's Web Monetization state.
-
-
-
-
-
-
-
-## Example 2 - Complex
-
-In reality, you'll probably want your site to do more than simply show and hide content. In this example, we illustrate how to:
-
-- Show web monetized visitors an indicator while they wait for Web Monetization to initialize
-- Tell non-web monetized visitors that there's exclusive content they're missing out on
-
-The example below covers three states for showing:
-
-- A call-to-action to non-web monetized visitors
-- A loading message to web monetized visitors
-- Exclusive content to web monetized visitors
-
-```html
-
-
-
-
-
-
-
-
-
-
-
Loading exclusive content...
-
Here's some exclusive content!
-
- Please install a Web Monetization extension to support me!
-
-
-```
-
-### How it works
-
-There are three functions to activate the three states:
-
-- `showLoading` displays the loader
-- `showCTA` displays the call-to-action to non-web monetized users
-- `showExclusiveContent` displays the exclusive content to web monetized users
-
-These functions work just like the [simple example](#example-1---simple) where we turn the `hidden` class on/off for our `div`s.
-
-When the page loads, we'll check whether the visitor is web monetized.
-
-```js
-window.addEventListener('load', () => {
- if (!window.MonetizationEvent) {
-```
-
-The loader will appear to web monetized visitors and the CTA will appear to everyone else.
-
-```js
-if (!window.MonetizationEvent) {
- showCTA()
-} else {
- showLoading()
-}
-```
-
-If the visitor is web monetized, we'll listen for the `monetization` event that occurs when an outgoing payment request is successfully created. When this event fires, the exclusive content will appear and the other `div`s will be hidden.
-
-```js
-if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]')
- link.addEventListener('monetization', (ev) => {
- showExclusiveContent()
-```
-
-### Interactive example
-
-This example simulates hiding and showing exclusive content based on a visitor's Web Monetization state. Web monetized visitors will see exclusive content while non-web monetized users will not. Conversely, non-web monetized users will see the message, "Please install a Web Monetization extension to support me!".
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/remove-ads.mdx b/src/content/docs/docs/guides/remove-ads.mdx
deleted file mode 100644
index 62020cf4..00000000
--- a/src/content/docs/docs/guides/remove-ads.mdx
+++ /dev/null
@@ -1,128 +0,0 @@
----
-title: Remove ads
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Give your web monetized visitors an ad-free experience by hiding ads when the `monetization` event fires. Since the `monetization` event only fires when an outgoing payment request is successfully created, your ads will continue to appear to non-web monetized visitors.
-
-## Before you begin
-
-For visitors without Web Monetization, ads will appear as soon as the page loads.
-
-For visitors with Web Monetization in their browser, there's a three-second grace period before ads are shown. This gives Web Monetization a chance to initialize and prevent ads from briefly appearing to paying visitors.
-
-**If Web Monetization...**
-
-- Initializes within the grace period, then ads are removed
-- Fails to initialize within the grace period, then ads are shown
-- Initializes any time after the grace period, then ads are removed
-
-## Example
-
-The example below shows how to remove ads from web monetized visitors.
-
-```html
-
-
-
-
-
-
-
-
-
- Here's where your site's content will go!
-
-```
-
-## How it works
-
-Let's start with the code for showing an ad.
-
-```jsx
-const adCode =
- '
Ad! Buy product A! Ad!
'
-function showAds() {
- document.getElementById('ad').innerHTML = adCode
-}
-```
-
-We want to bind the `monetization` event to its respective event handler if the visitor is web monetized. This prevents the ad from loading on the page once Web Monetization initializes. Assuming it initializes within the grace period, the ad isn't added to the page at all. This means any related images and trackers aren't loaded either.
-
-The `hasPaid` variable in the timer is for when/if Web Monetization starts after the grace period.
-
-```jsx
-let hasPaid = false
-if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]')
- link.addEventListener('monetization', () => {
- hasPaid = true
- removeAds()
- })
-}
-```
-
-As soon as the page loads, the ad will immediately appear to any visitor who isn't web monetized. This is handled via `!window.MonetizationEvent`, shown below.
-
-If the visitor has Web Monetization in their browser, then the `monetization` event must fire within 3 seconds (3000ms) to indicate that Web Monetization has initialized. If it doesn't initialize by the timeout, the ad is shown to the visitor.
-
-```jsx
-window.addEventListener('load', () => {
- if (!window.MonetizationEvent) {
- showAds()
- } else {
- setTimeout(() => {
- if (!hasPaid) {
- showAds()
- }
- }, 3000)
- }
-})
-```
-
-## Interactive example
-
-This example simulates showing and hiding an ad based on a visitor's Web Monetization state.
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx b/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx
deleted file mode 100644
index 3765131c..00000000
--- a/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx
+++ /dev/null
@@ -1,120 +0,0 @@
----
-title: Set up probabilistic revenue sharing
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-
-How do you share a portion of a web monetized page's earnings when a monetization `` element only supports one wallet address as its `href` value?
-
-One way is through probabilistic revenue sharing. Probabilistic revenue sharing works by choosing from a list of predefined wallet addresses each time a web monetized visitor loads the page. Payments are sent to the chosen wallet address until the visitor reloads or closes the page.
-
-The chance of a wallet address being chosen is based on its assigned weight. For example, if Alice's wallet address has a weight of 50 (out of 100), then her wallet address has a 50% chance of being chosen. The laws of probability state that Alice's share of the page's total revenue will approach 50% as more web monetized visitors access the page.
-
-## Example
-
-This example shows how to use probabilistic revenue sharing by including a script on your web monetized page. It also uses payment pointers, but you can use any Open Payments-enabled wallet addresses.
-
-:::note
-If you don't want to include a script on your page, you can use our [Probabilistic Revshare Generator](/prob-revshare). After entering your payment pointers and/or other Open Payments-enabled wallet addresses, along with weights, the generator will provide you with a monetization `` element that contains a unique `href` URL hosted on `https://webmonetization.org/prob-revshare/`.
-:::
-
-The example below shows a list of weighted [payment pointers](/docs/resources/glossary#payment-pointer). The easiest way to establish weight is to assign values that add up to 100.
-
-```html
-
-
-
-```
-
-### How it works
-
-First, we list the payment pointers and assign each one a weight.
-
-If the combined weights equal 100, then each weight represents the percentage at which each payment pointer will be chosen. For example, `$wallet.example.com/connie` has a 9.5% chance of being chosen, resulting in Connie's share approaching 9.5% of the page's total revenue as more web monetized visitors access the site.
-
-```js
-const pointers = {
- '$wallet.example.com/alice': 50,
- '$wallet.example.com/bob': 40,
- '$wallet.example.com/connie': 9.5,
- '$wallet.example.com/dave': 0.5,
-}
-```
-
-:::info
-Since this method bypasses the need to include a monetization `` element, you can choose to use a payment pointer's shorthand form (e.g., `$wallet.example.com/alice`) rather than the endpoint URL that the payment pointer resolves to (e.g. `https://wallet.example.com/alice`).
-:::
-
-Next, we define the function to cause payment pointers to be chosen based on weight.
-
-```jsx
-function pickPointer() {
- const sum = Object.values(pointers).reduce((sum, weight) => sum + weight, 0)
- let choice = Math.random() * sum
-
- for (const pointer in pointers) {
- const weight = pointers[pointer]
- if ((choice -= weight) <= 0) {
- return pointer
- }
- }
-}
-```
-
-Finally, we add the code that dynamically inserts the randomly chosen payment pointer into the page on each load/refresh.
-
-```jsx
-window.addEventListener('load', () => {
- const monetizationTag = document.createElement('link')
- monetizationTag.rel = 'monetization'
- monetizationTag.href = pickPointer()
-
- document.head.appendChild(monetizationTag)
-})
-```
-
-### Interactive example
-
-This example shows how the random choices will approach the correct percentages over enough tries. You can customize the number of times to randomly choose a pointer and it will show you the results.
-
-
-
-If you see the source files instead of the example, click **View App** in the bottom right.
-
-
diff --git a/src/content/docs/docs/intro/receiving-payments.mdx b/src/content/docs/docs/intro/receiving-payments.mdx
deleted file mode 100644
index ba326c36..00000000
--- a/src/content/docs/docs/intro/receiving-payments.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Receiving payments
----
-
-import { LinkOut } from '@interledger/docs-design-system'
-
-Two key components of receiving a Web Monetization (WM) payment are WM receivers and Open Payments-enabled accounts.
-
-:::note
-This page describes the role of WM receivers within the Web Monetization ecosystem. It does not explain how to become a receiver.
-:::
-
-## WM receivers
-
-A WM receiver is an entity that provides an Open Payments-enabled account into which payments can be received. Individuals interested in receiving Web Monetization payments can establish a relationship with a WM receiver of their choice by signing up for an account.
-
-We anticipate most WM receivers to offer some form of digital wallet to their users. Many digital wallet providers, not just WM receivers, are often required to verify their users’ identities before allowing funds to be withdrawn.
-
-## Open Payments and wallet addresses
-
-Open Payments enables open and interoperable payments between WM providers and WM receivers. As such, accounts supplied by both WM providers and WM receivers must implement the Open Payments (OP) specification.
-
-The OP specification defines standards for **_access_** to accounts. When granted access, applications and other entities can integrate payments into their feature sets by connecting to their users’ accounts. The ability to then **_execute_** payments between OP-enabled accounts relies on the availability of a common payment rail between the accounts.
-
-### Wallet addresses
-
-Access to an OP-enabled account, whether for sending or receiving, always starts with a wallet address. In this context, a wallet address is a unique URL that identifies an OP account and provides an entry point for the Open Payments API.
-
-When an individual establishes an account with a WM receiver, the receiver assigns the account one or more wallet addresses. Wallet addresses allow certain account details to be safely shared with third-parties. Third-parties use the details to initiate payments to or from the account. A WM agent is an example of a third-party.
-
-A wallet address is required to web monetize a page and must be added as the `href` value within the monetization `` element.
-
-For example:
-
-```html
-
-```
-
-The WM agent uses the wallet address to begin the money movement process.
-
-## Receiving a payment
-
-When an individual visits a web monetized page, their WM agent detects the monetization `` element and associated wallet address. The WM agent sends a request to the wallet address, which is the beginning of a series of API calls needed to:
-
-1. Get the details about the underlying receiving account
-2. Receive permission to send a payment to the account
-3. Create a monetization session within the site visitor's browser tab/window
-4. Create the outgoing payment request
-
-When the payment is successful, the funds are deducted from the WM provider’s account and deposited into the WM receiver’s account.
-
-For more information, visit the [Web Monetization flow](/docs/intro/web-monetization-flow) page.
-
-## Specifying a payment amount
-
-Web Monetization does not enable a site to specify the amount it wants to receive. The amount, frequency, and other payment parameters are controlled by the web monetized visitor, through their relationship with their WM provider.
-
-If a site should specify a price, then integration with the W3C’s Payment Request API may be a better alternative to Web Monetization. The Payment Request API allows sites to ask to be paid a certain amount, then the browser (typically with the user’s approval) pays that amount.
diff --git a/src/content/docs/docs/intro/sending-payments.mdx b/src/content/docs/docs/intro/sending-payments.mdx
deleted file mode 100644
index 634f1379..00000000
--- a/src/content/docs/docs/intro/sending-payments.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Sending payments
----
-
-import { LinkOut, Tooltip } from '@interledger/docs-design-system'
-
-Three key components of sending a Web Monetization (WM) payment are:
-
-- WM providers
-- Open Payments-enabled accounts
-- WM agents
-
-:::note
-This page describes the roles of WM providers and WM agents within the Web Monetization ecosystem. It does not explain how to become a provider or develop an agent.
-:::
-
-## WM providers
-
-For a site visitor to send a Web Monetization payment, the visitor must have some kind of relationship with a WM provider. A WM provider is an entity that provides a funded Open Payments-enabled account from which payments can be sent. A provider can take a number of different forms, such as:
-
-- A company that uses its own account to make payments on behalf of its customers
-- An app that’s authorized to hook directly into a user’s personal account
-- An individual that hooks their personal account up to a WM agent
-
-In addition to providing funded accounts, WM providers are responsible for defining the payment models they support and implementing business logic and rules. For example, a WM provider might:
-
-- Only send payments in fiat currencies
-- Support one-time payments and micropayments, but not real-time streaming payments
-- Stream real-time payments at a fixed rate, for example $0.006 per minute
-- Allow user-defined payout rates, frequencies, limits, and so on
-
-For a provider to send a Web Monetization payment on behalf of an individual, the provider must support the Open Payments specification.
-
-## Open Payments and wallet addresses
-
-Open Payments enables open and interoperable payments between WM providers and WM receivers. As such, accounts supplied by both WM providers and WM receivers must implement the Open Payments (OP) specification.
-
-The OP specification defines standards for **_access_** to accounts. When granted access, applications and other entities can integrate payments into their feature sets by connecting to their users’ accounts. The ability to then **_execute_** payments between OP-enabled accounts relies on the availability of a common payment rail between the accounts.
-
-### Wallet addresses
-
-Access to an OP-enabled account, whether for sending or receiving, always starts with a wallet address. In this context, a wallet address is a unique URL that identifies an OP account and provides an entry point for the Open Payments API.
-
-A wallet address allows certain account details to be safely shared with third-parties. Third-parties use the details to initiate payments to or from the account. A WM agent is an example of a third-party.
-
-Depending on the form a WM provider takes, the provider's user may not know, nor have a need to know, any details about the sending account's wallet address.
-
-## WM agents
-
-One goal of Web Monetization is for vendors to natively build the standard into web browsers. But we aren’t there yet. For now, users must install a separate WM agent, such as an extension, into their browsers.
-
-The WM agent is code that discovers web monetized pages, exposes the Web Monetization API, and communicates via the Open Payments APIs to obtain authorization and issue instructions for making a payment.
-
-### How it works
-
-The WM agent checks each page an individual visits for a monetization `` element. A monetization `` element must contain a valid Open Payments wallet address. For example:
-
-```html
-
-```
-
-When detected, the WM agent begins a series of API calls to:
-
-1. Get the details about the underlying account
-2. Receive permission to send a payment to the account
-3. Create a monetization session within the site visitor's browser tab/window
-4. Create the outgoing payment request
-
-Visit the [Add Web Monetization to a page](/docs/guides/monetize-page) and [Web Monetization flow](/docs/intro/web-monetization-flow) pages for more information.
-
-### Link a WM agent to a WM provider
-
-The Interledger Foundation is currently developing an open-source WM agent for users (release date TBD). WM providers could also choose to develop their own WM agents. Regardless of who supplies the WM agent, the agent must have a way to link to a provider. For example, a browser extension could allow individuals to select and sign in to their provider from within the extension UI. By signing in, the individual authorizes the extension to obtain settings from the provider and send payments on their behalf.
-
-Note that the Web Monetization specification itself doesn’t define the interface between the browser and the WM provider. This is intentional. How a browser ultimately chooses to allow WM providers to integrate is up to the browser. We feel that a browser’s extension system is the ideal way to support integration.
diff --git a/src/content/docs/docs/intro/web-monetization-flow.mdx b/src/content/docs/docs/intro/web-monetization-flow.mdx
deleted file mode 100644
index 4eb7faa8..00000000
--- a/src/content/docs/docs/intro/web-monetization-flow.mdx
+++ /dev/null
@@ -1,270 +0,0 @@
----
-title: Web Monetization flow
----
-
-import { Tabs, TabItem } from '@astrojs/starlight/components'
-import {
- CodeBlock,
- LinkOut,
- Mermaid,
- MermaidWrapper,
- Tooltip,
-} from '@interledger/docs-design-system'
-
-Web Monetization (WM) relies on Open Payments (OP) and OP-enabled accounts to coordinate payments.
-
-The WM agent first issues a series of API calls to the receiving account's wallet address, then to the sending account's wallet address, to obtain the necessary authorization and instructions for sending a payment.
-
-## Sequence diagram
-
-
-
-sending account
- end
- participant WMA as WM agent
- participant page as Web page
- box aliceblue WM receiver
- participant OPR as Open Payments receiving account
- participant AS as Auth server
- end
- note over AS,OPR: The auth server can be located outside of the WM receiver's domain
- WMA->>page: Detects monetization element, extracts wallet address
- WMA->>OPR: Requests the public info for the wallet address
- OPR->>WMA: Returns info, including auth server URL
- WMA->>AS: Requests access rights
- AS->>WMA: Returns access token
- WMA->>OPR: Requests creation of an incoming payment resource
- OPR->>WMA: Responds with unique payment details for addressing the payment to the account
- WMA->>+OPS: Requests an outgoing payment be created against the sending account
- note left of OPS: Connection persists until request moves from 'pending' state to 'sending' state
- OPS->>-WMA: Responds with details about the 'receive', 'send', and 'sent' amounts
- WMA->>WMA: Fires monetization event
- note over OPS,OPR: Payment processing and settlement occurs between the WM provider and WM receiver, outside of the WM flow
-`}
-/>
-
-
-
-## Web Monetization flow example
-
-This section provides an example of the API calls that occur when a web monetized user visits a web monetized site.
-
-There's a few points to keep in mind as you review the example.
-
-- It's up to the site visitor, not the web monetized site, to decide how often and how much to pay, as well as the currency in which to send a payment.
-- While Web Monetization and Open Payments work together to coordinate payments, neither moves money. Payment processing and settlement must occur between the sending and receiving accounts over a common payment rail.
-
-### Scenario
-
-Alice adds the monetization `` element to her website. Included within the `` is her wallet address, `https://wallet.example/alice`, assigned to her by her WM receiver.
-
-Bob signs up with a WM provider who supplies him with a funded sending account. The sending account's wallet address is `https://anotherwallet.example/bob`. After installing a WM agent in his browser and linking the WM agent to his WM provider, his WM agent now has permission to request payments be sent from his account.
-
-:::note
-This example assumes the WM provider and WM receiver have already peered with each other and share a common payment rail over which transactions can be processed and settled.
-:::
-
-### 1 - Check for Web Monetization
-
-As Bob browses Alice's site, his WM agent detects a monetization `` element.
-
-```html
-
-```
-
-### 2 - Send request to wallet address (receiving account)
-
-
-
- The WM agent issues a request to Alice's wallet address to discover the Open Payments service endpoint.
-
-
- ```http
- GET /alice HTTP/1.1
- Accept: application/json
- Host: wallet.example
- ```
-
-
-
- The response includes, among other details, the URL for her WM receiver's grant request endpoint (authorization server).
-
-
- ```http
- HTTP/1.1 200 Success
- Content-Type: application/json
-
- {
- "id":"https://wallet.example/alice",
- "assetCode":"USD",
- "assetScale":2,
- "authServer":"https://wallet.example/auth"
- }
- ```
-
-
-
-
-
-### 3 - Send grant request to WM receiver's auth server
-
-
-
- The WM agent issues a request to the WM receiver's grant request endpoint (authorization server) to get an access token.
-
- In this example, the WM agent requests access to create and read incoming payments (i.e., payments coming in to Alice's WM receiver).
-
-
- ```http
- POST /auth/ HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Host: wallet.example
- Content-Length: 218
-
- {
- "access_token":{
- "access":[
- {
- "type":"incoming-payment",
- "actions":[
- "create",
- "read"
- ],
- "identifier":"https://wallet.example/alice"
- }
- ]
- },
- "interact":{
- "finish":{
- "method":"redirect"
- }
- },
- "client":"https://anotherwallet.example/bob"
- }
- ```
-
-
-
- The grant request is non-interactive, so the WM receiver grants the request and issues an access token.
-
-
- ```http
- {
- "access_token":{
- "value":"OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0",
- "manage":"https://wallet.example/auth/token/dd17a202-9982-4ed9-ae31-564947fb6379",
- "access":[
- {
- "type":"incoming-payment",
- "actions":[
- "create",
- "read"
- ],
- "identifier":"https://wallet.example/alice"
- }
- ]
- }
- }
- ```
-
-
-
-
-### 4 - Send incoming payment request to wallet address (receiving account)
-
-
-
- The WM agent creates an incoming payment for the session (e.g., the open browser tab) by issuing an incoming payment request to Alice's wallet address. The request uses details obtained from the previous API calls.
-
-:::note
-The request is for an _incoming_ payment because the WM agent is requesting that Alice's account accept an incoming payment. The payment itself has not been sent yet.
-:::
-
-
- ```http
- POST /alice/incoming-payments HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Authorization: OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0
- Host: wallet.example
- ```
-
-
-
-
- Alice's WM receiver (who hosts her account and wallet address) approves the request by supplying unique payment details for the WM agent to use to address the payment to Alice's account.
-
-
- ```http
- {
- "id":"https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
- "walletAddress":"https://wallet.example/alice",
- "receivedAmount":{
- "value":"0",
- "assetCode":"USD",
- "assetScale":2
- },
- "completed":false,
- "createdAt":"2022-03-12T23:20:50.52Z",
- "updatedAt":"2022-03-12T23:20:50.52Z"
- }
- ```
-
-
-
-
-### 5 - Send outgoing payment request to wallet address (sending account)
-
-
-
- The WM agent uses the details obtained thus far to create an outgoing payment request against Bob's account (via his wallet address). Note that this is just a request to send a payment. The payment itself has not been sent and the request is in a pending state.
-
-
- ```http
- POST /bob/outgoing-payment HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Authorization: {{ outgoingPaymentGrant.accessToken.value }}
- Host: anotherwallet.example
- ```
-
-
-
- A successful response indicates the request has moved from a pending state to a sending state. This means Bob's account has the funds to cover the payment. Note that the payment itself has still not been sent (`"sentAmount":{"value":"0"}`).
-
-
- ```http
- {
- "id":"https://anotherwallet.example/bob/outgoing-payments/8c68d3cc-0a0f-4216-98b4-4fa44a6c88cf",
- "walletAddress":"https://anotherwallet.example/bob/",
- "receiver":"https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
- "receiveAmount":{
- "value":"2",
- "assetCode":"USD",
- "assetScale":2
- },
- "sendAmount":{
- "value":"2",
- "assetCode":"USD",
- "assetScale":2
- },
- "sentAmount":{
- "value":"0",
- "assetCode":"USD",
- "assetScale":2
- },
- "createdAt":"2022-03-12T23:20:55.52Z",
- "updatedAt":"2022-03-12T23:20:55.52Z"
- }
- ```
-
-
- The Web Monetization flow is complete. It's now up to the WM provider to process the payment and settle with the WM receiver.
-
-
-
diff --git a/src/content/docs/docs/references/attributes/amount.mdx b/src/content/docs/docs/references/attributes/amount.mdx
deleted file mode 100644
index 7ac493f5..00000000
--- a/src/content/docs/docs/references/attributes/amount.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: amount
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/amount.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `amount` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `amount` attribute returned the amount of money that was successfully received on the last payment.
-
-### Value
-
-An integer representing the amount of money received.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/amountsent.mdx b/src/content/docs/docs/references/attributes/amountsent.mdx
deleted file mode 100644
index 4dbd94cb..00000000
--- a/src/content/docs/docs/references/attributes/amountsent.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: amountSent
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/amountSent.json'
-import { LinkOut, Tooltip } from '@interledger/docs-design-system'
-
-The `monetization` event's `amountSent` attribute returns you the amount (`value`) and currency code (`currency`) of the Web Monetization payment sent to you.
-
-## Value
-
-The `value` uses the same data structure as the `PaymentCurrencyAmount` dictionary in the Payment Request API. The returned value is the value it was initialized with.
-
-## Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/assetcode.mdx b/src/content/docs/docs/references/attributes/assetcode.mdx
deleted file mode 100644
index b05c8bf7..00000000
--- a/src/content/docs/docs/references/attributes/assetcode.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: assetCode
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/assetCode.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `assetCode` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `assetCode` attribute returned the currency code of the last payment received.
-
-### Value
-
-A string representing the three-character currency code on the last payment received.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/assetscale.mdx b/src/content/docs/docs/references/attributes/assetscale.mdx
deleted file mode 100644
index 261f056d..00000000
--- a/src/content/docs/docs/references/attributes/assetscale.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: assetScale
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/assetScale.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `assetScale` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `assetScale` attribute returned the scale of the paid amount
-
-### Value
-
-An integer that represents the scale on the amount of money received in the last payment.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/incomingpayment.mdx b/src/content/docs/docs/references/attributes/incomingpayment.mdx
deleted file mode 100644
index 06645da7..00000000
--- a/src/content/docs/docs/references/attributes/incomingpayment.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: incomingPayment
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/incomingPayment.json'
-import { LinkOut, Hidden } from '@interledger/docs-design-system'
-
-:::tip[Experimental Attribute]
-`incomingPayment` is an experimental technology.
-:::
-
-The `monetization` event's `incomingPayment` attribute can be used to verify the receipt of a payment. Today, the `monetization` event fires when the WM agent successfully creates an outgoing payment request at the WM provider. Since it's only a request to send an outgoing payment, there's no guarantee at this point that a payment has been received.
-
-The `incomingPayment` attribute returns the URL that represents the incoming payment at the WM receiver. The returned value is the value it was initialized with. By querying the URL, you can get the `receivedAmount`.
-
-## Example
-
-```jsx
-/** @type {MonetizationEvent} event */
-async function verifyPayment(event) {
- // Legacy receivers don't support returning incoming payment URLs
- if (!event.incomingPayment) {
- throw new Error('No incoming payment URL')
- }
-
- const response = await fetch(event.incomingPayment, {
- method: 'GET',
- credentials: 'same-origin',
- mode: 'same-origin',
- cache: 'no-cache',
- headers: {
- 'Content-Type': 'application/json',
- },
- })
-
- if (response.ok) {
- // The incoming payment was fetched successfully
- const { receivedAmount } = await response.json()
- const { amount, assetCode, assetScale } = receivedAmount
- console.log(`Received ${assetCode}${amount / Math.pow(10, assetScale)}.`)
- }
-}
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/paymentpointer.mdx b/src/content/docs/docs/references/attributes/paymentpointer.mdx
deleted file mode 100644
index 32ab3cf4..00000000
--- a/src/content/docs/docs/references/attributes/paymentpointer.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: paymentPointer
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/paymentPointer.json'
-
-The `monetization` event's `paymentPointer` attribute returns the URL representing the payment endpoint used by the incoming Web Monetization payment. The returned value is the value it was initialized with.
-
-## Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/receipt.mdx b/src/content/docs/docs/references/attributes/receipt.mdx
deleted file mode 100644
index 4b417e63..00000000
--- a/src/content/docs/docs/references/attributes/receipt.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: receipt
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/receipt.json'
-
-:::danger[Caution - Deprecated Attribute]
-Receipts and its associated `receipt` attribute are deprecated. Consider using the [incomingPayment](/docs/references/attributes/incomingpayment) attribute instead.
-:::
-
-The `MonetizationEvent` `receipt` attribute returned an optional proof-of-payment receipt. It was issued from the monetization receiver to the monetization provider as proof of the total current amount received in a stream.
-
-### Value
-
-A base64-encoded STREAM receipt. Returned null if receipts were not enabled on the payment pointer. The receipt had the total running amount streamed in the current session.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/csp-monetization-src.mdx b/src/content/docs/docs/references/csp-monetization-src.mdx
deleted file mode 100644
index 699068a2..00000000
--- a/src/content/docs/docs/references/csp-monetization-src.mdx
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: 'Content-Security-Policy: monetization-src'
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/csp-monetization-src.json'
-import { LinkOut } from '@interledger/docs-design-system'
-
-The `monetization-src` directive within the HTTP Content-Security-Policy (CSP) allows you to restrict the URLs from which an Open Payments-enabled wallet address, such as a payment pointer, can be loaded.
-
-
-
-
-
- CSP version
-
-
3
-
-
-
- Directive type
-
-
-
- Fetch directive
-
-
-
-
-
-
-## Syntax
-
-The basic syntax is as follows, where `source` is a serialized source list. More than one source can be allowed for the `monetization-src` policy:
-
-```http
-Content-Security-Policy: monetization-src