Medusa
Medusa v2 plugin for eBook, PDF and audiobook watermarking (social DRM): a personal copy for every buyer, EPUB check on real e-readers, download links and leak search.
@pageseal/medusa
eBook, PDF and audiobook watermarking (social DRM) for Medusa v2. Sell eBooks, PDFs and audiobooks in your Medusa store and give every buyer a personal copy: their name and order number on a page of the book plus an invisible mark that leads back to the order if the file turns up online. Pageseal checks each file on Apple Books, Kindle, Kobo/Android and Readium before you sell it, hosts the download page with download limits, and finds the order behind a leaked copy.
Same service as the Pageseal Shopify app (https://pageseal.app), connected through an API key.
What the plugin does
| When | What happens |
|---|---|
| Payment captured (, or with auto-capture) | Pageseal creates one personal copy per eBook line, mails the buyer the download link (optional) and returns the links; the plugin stores them in |
| Order canceled / fully refunded | The download links of the order stop |
| Customer deleted | Pageseal removes the buyer's name and email (the mark still leads to the order) |
| Product page in the admin | Widget: upload an EPUB, PDF or audiobook, see the device check, link the book, put it live |
| Order page in the admin | Widget: personal copies with download link, downloads used, block/unblock, send the mail again |
| Admin menu Pageseal | Plan and usage, all books with their check, leak search (paste text or drop a found file) |
| Plan card on the Pageseal page | Choose a plan (Stripe Checkout), switch plans, manage cancellation, payment method and invoices (Stripe customer portal) |
| Storefront | returns the download links for the order confirmation page and the customer account |
Installation
-
Create an account at https://pageseal.app/signup and add a Medusa store: it shows the API key and the webhook secret once. As long as sign-up is closed there, write to support@pageseal.app.
-
Install the plugin:
-
Add it to :
-
Restart Medusa. Open a product, upload the book in the Pageseal widget, wait for the check, click Put live.
The plugin needs no database migration and no extra module. Every option can also come from the environment (, , , , , , ).
Plans and billing
Plans, prices and limits are the same as in the Shopify app (Free, Starter, Pro, Scale). Billing runs through Stripe: pick a plan on the Pageseal page in the admin, pay in Stripe Checkout and you are back in Medusa. Copies above the included amount are billed per copy with the monthly invoice. Switching plans happens on the plan card (prorated); cancellation, payment method and invoices are in the Stripe customer portal behind Manage billing. Stores in test mode are never billed.
Download links in the storefront
The Next.js starter example in shows the links on the order confirmation page () and in the customer account (). Customers with an account see the links of their own orders only; guests see them on the confirmation page for , afterwards in the delivery mail.
Your own order confirmation mail can read the links from (, ). Payment is captured after the mail? Set to (Pageseal mails the links when they exist).
Security
- The API key goes only from your Medusa server to Pageseal, never to the browser. Pageseal stores only its hash.
- Order events (delivery, revoke, GDPR) are signed with HMAC-SHA256 ( over , at most 5 minutes old). A leaked API key alone cannot create or block copies.
- Each store's data lives in its own database at Pageseal; the store is taken from the key, never from the request.
Development
Changelog
- 0.1.1 – The default is now (0.1.0 pointed to a host that does not exist, so the plugin worked only with set).
- 0.1.0 – First release.
Licence
MIT. The Pageseal service is billed separately through Stripe (see Plans and billing).

