Skip to content

Sell Digital Products, Services and Events From Your EmDash Site

Vendwick is a commerce plugin for EmDash CMS. You can sell plugins, themes, downloads, services and events with it. It takes the payment, issues license keys for software and delivers every update, all on Cloudflare Workers with D1 and R2.

Get lifetime access for $249

Or $59 per year. Version 0.1.0 is out, and theinstall guide covers setup.

Illustration of the Vendwick checkout page: choosing a plan, applying a coupon and confirming an EU VAT number updates the order summary to a reverse-charge total.Illustration of the Vendwick checkout page: choosing a plan, applying a coupon and confirming an EU VAT number updates the order summary to a reverse-charge total.
The checkout page working out a quote as the buyer changes it. Illustration with sample data.

Checkout and Payments

Your checkout page works out the plan, coupon and tax before the buyer pays. The buyer then continues to the payment gateway you connected.

Products and plans
6 product types: WordPress plugin, WordPress theme, EmDash plugin, digital download, service and event. Each product can carry several plans.
4 payment gateways
Stripe, PayPal, Razorpay and Polar handle one-time payments and recurring subscriptions. The gateway takes the card details, so they never touch your site.
Subscriptions
Vendwick handles renewals and prorated upgrades between plans. A refund reverses what the order granted.
Coupons
The checkout page applies a discount code to the quote before payment.
Tax and EU VAT
Tax rates by country, prices with or without tax and reverse charge for confirmed EU VAT numbers.
Webhooks that fulfill once
Vendwick fulfills orders from gateway webhooks. Fulfillment is idempotent, so a repeated event never grants an order twice.

License Keys and Activations

Every sale can come with a license key, and Vendwick runs the license server too. Each key knows which sites it’s active on and how many it’s allowed.

Keys
Vendwick issues a key with the order. You set the format: characters, length, prefix and grouping.
Site activations
Vendwick records each site that activates and when it was last seen. A site can be deactivated from the admin or the customer portal.
Seat limits
A plan sets how many sites a key covers, from 1 to unlimited. Staging and local sites can be left out of the count.
EDD-style clients
The license API also answers requests in the Easy Digital Downloads (EDD) format, so updater code written for that convention can talk to it.
Illustration of a license in the Vendwick admin: a third site activates and the license shows 3 of 3 sites in use. A staging site is marked and does not use a seat.Illustration of a license in the Vendwick admin: a third site activates and the license shows 3 of 3 sites in use. A staging site is marked and does not use a seat.
A third site activates on a 3-site license. Illustration with sample data.

Releases and Updates

You publish a release once and licensed sites get it. In the admin, you upload a build, check the version and hash, then publish. How the release reaches the buyer depends on what you sell.

Illustration of a release: version 1.5.0 is published in the Vendwick admin, then a buyer runs pnpm update and receives it from the store's npm registry.Illustration of a release: version 1.5.0 is published in the Vendwick admin, then a buyer runs pnpm update and receives it from the store's npm registry.
A release is published, then a buyer’s project updates from the store’s registry. Illustration with sample data.

WordPress plugins and themes

Buyers download signed ZIP files from their account. Installed copies see new versions in the WordPress dashboard through a drop-in PHP updater you ship with the product.

your-plugin.php

require_once __DIR__ . '/includes/class-vendwick-updater.php';

vendwick_updater( array(
    'store_url' => 'https://store.example.com',
    'item_slug' => 'acme-forms',
    'file'      => __FILE__,
    'version'   => '1.5.0',
) );

EmDash plugins

Vendwick serves a private, npm-compatible registry from your store. Buyers point their project at it, use their license key as the token and install with pnpm.

.npmrc

@acme:registry=https://store.example.com/_vendwick/npm/
//store.example.com/_vendwick/npm/:_authToken=${VENDWICK_LICENSE_KEY}

Terminal

pnpm add @acme/forms
pnpm update @acme/forms
Illustration of the Vendwick customer portal: a license card with a masked key, its version, expiry and sites, next to the email sign-in form that sends a private link.Illustration of the Vendwick customer portal: a license card with a masked key, its version, expiry and sites, next to the email sign-in form that sends a private link.
A license in the customer portal, and the email sign-in. Illustration with sample data.

Customer Portal

Buyers help themselves in the portal. It signs them in with a private link sent to their email, so there are no passwords to store or reset.

Purchases
Every order with its date, items, status and total.
Subscriptions
When the current term ends and how it renews.
Licenses
Keys to copy, sites to review and deactivate.
Downloads
The latest release of each product, with install steps for EmDash plugins.
Profile
Account and billing details the buyer can update.

Store Admin

Vendwick is a native EmDash plugin, so you run the store from the admin you already use.

Illustration of the Vendwick overview in the EmDash admin: counts for orders, customers, licenses and products above a revenue table, with the Commerce pages listed in the sidebar.Illustration of the Vendwick overview in the EmDash admin: counts for orders, customers, licenses and products above a revenue table, with the Commerce pages listed in the sidebar.
The store overview in the EmDash admin. Illustration with sample data.
Overview
Store totals and a setup checklist.
Products
Products, plans and checkout links.
Orders
Purchases, renewals, upgrades and refunds.
Customers
Everyone who bought or holds a license.
Licenses
Keys, activated sites and expiry.
Releases
WordPress ZIPs and EmDash npm tarballs.
Payments
Gateways, webhooks, test and live mode.
Deliveries
Fulfillment status and retries.
Settings
Store, license server and key format.

Version 0.1.0 Features and Limits

Version 0.1.0 is the first release. You download it from your account here after you buy. This is what it does today and where it stops.

In 0.1.0

  • Products and plans across 6 product types
  • Checkout with Stripe, PayPal, Razorpay and Polar
  • Subscriptions, renewals, prorated upgrades and refund reversal
  • Coupons, tax and EU VAT with reverse charge
  • Customer portal with email-link sign-in
  • License server with keys, activations and seat limits
  • Release delivery for WordPress products and EmDash plugins
  • Branded, editable customer emails and renewal reminders
  • Order invoices and credit notes, as printable pages
  • Client invoices with reminders and a pay page
  • Reports for revenue, MRR, renewals and refunds, with CSV export
  • Page access rules for paid content
  • Admin pages for the whole store

Known limits

  • No cart: each checkout buys 1 product on 1 plan, with a quantity
  • Refunds start at the payment gateway, and Vendwick reacts to its webhook
  • Invoices are printable pages, not PDF files
  • 1 file per release: a ZIP, an npm tarball or a download

Planned

  • Physical goods, with shipping, stock and delivery addresses

This is a first release. Each gateway you use should get a test-mode purchase, renewal and refund before you take money.

Pricing

There are two ways to buy, and both include unlimited site activations. The buttons go straight to checkout.

Lifetime License

$249 one time

One payment, no renewal.

  • Unlimited site activations
  • A single payment of $249

Yearly License

$59 per year

The lower price to start, paid once a year.

  • Unlimited site activations
  • Billed yearly at $59

The Yearly License costs less up front. If you expect to run the store past 4 years, the Lifetime License costs less overall, because 5 yearly payments come to $295.

After you buy, you download Vendwick 0.1.0 from your account here and follow the install guide. It is wise to read the known limits above before you buy, and the documentation has the rest of the detail.

FAQs on Vendwick

Is Vendwick released?

Yes. Version 0.1.0 is the first release. After you buy, you download it from your account here, and the install guide on vendwick.com walks through setup. Its known limits are listed above.

What can you sell with Vendwick?

6 product types: WordPress plugins, WordPress themes, EmDash plugins, digital downloads, services and events. Software and downloads can carry license keys, and services and events sell without them. Physical goods aren't in 0.1.0, which has no shipping, stock or delivery addresses. They're planned, so a store that depends on them should wait.

What is EmDash?

EmDash is Cloudflare's CMS built on Astro. Vendwick is a native EmDash plugin. It runs on Cloudflare Workers and keeps its data in the D1 database and its files in R2 storage, alongside your site.

Which payment gateways does it support?

Stripe, PayPal, Razorpay and Polar. All 4 handle one-time payments and recurring subscriptions, and you can run them in test mode before going live.

Can you sell WordPress plugins and themes from an EmDash site?

Yes. WordPress plugins and themes are product types. Buyers get signed ZIP downloads, and installed copies update from the WordPress dashboard through a drop-in PHP updater that you ship with your product.

How do buyers of an EmDash plugin get updates?

Vendwick serves a private, npm-compatible registry from your store. Buyers add 2 lines to their project's .npmrc, with their license key as the token. They run pnpm add to install and pnpm update when you publish a release.

How many sites does a license cover?

Both licenses include unlimited site activations. The Yearly License is $59 per year and the Lifetime License is $249 once.

Where does Vendwick come from?

Gaurav Tiwari makes Vendwick. It's a standalone port of the Core Commerce module in Core Forms, his WordPress plugin, rebuilt as a native plugin for EmDash.