For WooCommerce, WordPress, Shopify, SaaS and JUCE

Signed licenses for
every demo and sale.

A signed, device-locked key for every sale and every demo. Refunds revoke it automatically.

Free to start, no time limit. Selling on Shopify? Get the Shopify app.

ORDER #1042 $49.00 · 1 item Paid Order paidWooCommerce or Shopify LICENSE KEY ACME-7F3K-9QPD-2MXR Signed · Ed25519 Key mintedSigned, device-locked buyer@example.com Your license key Saved to order DeliveredEmailed and saved Verifiedoffline, on the device 2 of 3 devices in use VerifiedNo connection needed LICENSE KEY ACME-7F3K-9QPD-2MXR Active Revoked Refund issued Revoked on refundAutomatically, no cleanup EVERY STEP RUNS ITSELF Order paid WooCommerce or Shopify ORDER #1042 $49.00 · 1 item Paid Key minted Signed, device-locked LICENSE KEY ACME-7F3K-9QPD-2MXR Signed · Ed25519 Delivered Emailed and saved buyer@example.com Your license key Saved to order Verified No connection needed Verifiedoffline, on the device 2 of 3 devices in use Revoked on refund Automatically, no cleanup LICENSE KEY ACME-7F3K-9QPD-2MXR Active Revoked Refund issued

Features

Licensing that runs itself.

From the moment an order is paid to the day a refund lands, nothing in the loop needs a person.

01 · Issued on payment

A signed key, the moment an order is paid.

Every paid order mints a license key, emails it to the buyer and saves it to the order.

ORDER #1042 $49.00 · 1 item Paid LICENSE KEY ACME-7F3K-9QPD-2MXR Signed · Ed25519 Locked to the buyer's devices Deliveredbuyer@example.com Saved to order
ORDER #1042 $49.00 Paid LICENSE KEY ACME-7F3K- 9QPD-2MXR Signed Emailed to buyer

02 · Revoked automatically

Refund the order. The key goes with it.

A refund marks the key revoked, so it stops working with no manual cleanup.

Refund issued LICENSE KEY ACME-7F3K-9QPD-2MXR Active Revoked No manual cleanup.

03 · Verified offline

Checked on the device. No connection.

The signed key is verified on the customer's machine, so it works with no network.

LICENSE KEY ACME-7F3K-9QPD-2MXR ed25519 · sig 9b1f4c…c04e Signature valid Checked at launch, offline

04 · Device limits

Each activation is bound to one machine.

Set a limit per product. A fourth device is turned away, and the buyer releases one to make room.

Studio MacActivated LaptopActivated Desktop PCActivated New device Activating… Limit reached 3 of 3 devices in use
Studio Mac Laptop Desktop PC 3 of 3 devices in use New device Limit reached

05 · Buyer self-service

Buyers free up a device themselves.

A My Licenses page shows every key and lets the buyer release a device.

MY LICENSES 3 of 3 devices 2 of 3 devices Studio MacRelease LaptopRelease Home PCRelease 1 seat free
MY LICENSES 3 of 3 devices 2 of 3 devices Studio MacRelease LaptopRelease Home PCRelease

06 · Support tools

One click to fix a customer's day.

Release a seat or grant an extra activation straight from the order.

ORDER #1042 Support 3 of 3 2 of 3 2 of 4 devices in use Release seat Grant activation
ORDER #1042 Support 3 of 3 2 of 3 2 of 4 devices in use Release seat Grant activation

Platform agnostic

Switch stores. Keep every license.

A license belongs to your product, not to the store that sold it. Start on WooCommerce and move to Shopify later, or the other way around, and every key you have already issued keeps working.

Your customers change nothing

Keys already in customers' hands stay valid. There is nothing to reinstall, re-enter or buy again.

Your software changes nothing

Your plugin or app only ever talks to the license service. It sees a key and the API, so it cannot tell which store made the sale.

Sell on both at once

Run a WooCommerce store and a Shopify store side by side. Both issue keys from one account, for the same product.

Adding the second store takes one step: link its product to the one you already have. The Shopify app matches them by SKU, and asks you once if it cannot tell.

Audio plugins

Easy JUCE integration.

A drop-in licensing kit for JUCE plugins and standalone apps. Add it with CMake, fill in a short config, and you get a finished activation screen, a free demo period, and license checks that work offline.

  • CMake, no Projucer step

    Link one imported target. Releases are pinned to an exact version.

  • A finished activation screen

    Activate, start a demo, name the device and manage seats in one ready-made component. Re-skin it to match your plugin.

  • Stays off the audio thread

    Your processBlock only reads a flag. All license checking runs on the message thread.

  • Bound to the machine

    Signed licenses are checked on the device, tied to one machine, and protected against clock rollback.

Read the JUCE guide

CMakeLists.txt
# JUCE first: the kit's package needs its targets.
add_subdirectory(JUCE)

# The unpacked kit.
find_package(WaveformLicenseManager CONFIG REQUIRED
    PATHS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/waveform-license-manager"
    NO_DEFAULT_PATH)

# Link the imported target.
target_link_libraries(MyPlugin PRIVATE
    WaveformLicenseManager::WaveformLicenseManager)
PluginProcessor.cpp
waveform::Config cfg;
cfg.productId     = "<your productId>";
cfg.publicKeyB64  = "<your merchant public key>";
cfg.onLicenseChanged = [this] { publish(); };

// The audio thread reads one atomic, nothing else.
void processBlock(AudioBuffer<float>& buffer, ...) {
    if (licensed.load(std::memory_order_relaxed)) return;
    applyUnlicensedDegradation(buffer);
}

Update notifications

Tell customers when a new version ships.

Publish a release from the WooCommerce plugin or the Shopify app. Everyone running your plugin or app sees a notice inside it, with your release notes and a link to the right download for their platform.

Inside your software

A ready-made banner for JUCE plugins, and a single call in the SDK for other apps. It never blocks use.

Signed, so it can be trusted

Every notice is signed with your own key and verified before it is shown, so no one can point your customers at a fake update.

Notes and the right download

Add release notes, mark a release important, and give a link for each platform.

Beta and stable channels

Send a beta to your testers without bothering everyone else.

Skip this version

Customers can dismiss a release. The next one still reaches them.

A banner and an email

Customers see the notice inside your software, and you can email everyone who owns it. Both come from the same release.

Notices travel with the license check, so there is nothing extra to run, and a failed check never locks anyone out. They link to your download page or installer and never install anything on their own.

Version adoption

See who is on which version, then tell them.

The Releases page lists every version in the field with its device count and share, so you know how many customers are still on an old build before you retire it. In the Shopify app, you can then email everyone who owns the product from the same page.

The Releases page with example data. Published releases lists 2.4.0 and 2.3.2. Version adoption shows 168 devices across 5 versions, led by 2.3.2 at 51 percent. An Email owners panel shows 351 people will get the announcement and asks the owner to type SEND 351 to confirm.
Example data: a fictional product and addresses. The Releases page in the Shopify app.

Adoption at a glance

Licensed devices per version, as a count and a share, as of their last license check. Devices that have not reported a version are listed as Unknown. In the WooCommerce plugin and the Shopify app.

One email to every owner

Send the announcement to everyone who owns the product, including buyers who never joined your marketing list. It covers what changed, where to download, and where to find their license. In the Shopify app.

Careful by design

You see the recipient count first and can send yourself a test. Sending takes a typed confirmation, each release is emailed once, and anyone who unsubscribed or opted out is left out. Every email carries an unsubscribe link.

How it works

Three steps to protected sales.

  1. 01

    Install

    Add the WooCommerce plugin to your WordPress site (on Shopify, install the app from the Shopify App Store) and turn on licensing for a product.

  2. 02

    Integrate

    Add license verification to your software with the Waveform SDK, or drop the JUCE kit into your audio plugin.

  3. 03

    Sell

    Keys are delivered on every order and kept in sync for the life of the license.

See every screen in WooCommerce and Shopify Try the API in five minutes

Use cases

Audio plugins, sample libraries, desktop apps, games, WordPress plugins, SaaS, APIs, subscriptions and bundles. See how each one is licensed.

Browse use cases

Security

How every key is signed, bound to one machine and revoked on refund, what never leaves the customer's computer, and the honest limits.

How it is protected

Switching from another plugin?

Run Waveform beside your current licensing system, reuse the keys it already issued, and move over without asking a customer for anything.

Read the switching guide

Pricing

Start free. Scale when you sell.

Pay monthly, or yearly for two months free. Plan questions, answered.

Free

Try it out

$0

  • 1 product
  • Up to 50 active licenses
  • Offline and online modes
  • Email delivery

Starter

Your first products

$29/mo

or $290/yr, 2 months free

  • 3 products
  • 300 active licenses
  • Custom email branding
  • Device and session limits

Pro

Scale and automate

$249/mo

or $2,490/yr, 2 months free

  • Unlimited products
  • 15,000 active licenses
  • API access and webhooks
  • Everything in Growth

Enterprise

More than 15,000 active licenses?

We set up a plan for your volume, priced to fit and agreed up front.

  • Unlimited active licenses and products
  • Priority help from the team that built it
Talk to us

Checkout for WooCommerce and WordPress is opening soon, with the same plans and prices. Email us to hear the day it opens.

On Shopify?

Install the app from the Shopify App Store. Same plans and prices, billed through Shopify.

View in the Shopify App Store

Contact

Questions? We're here.

Reach the team at support@waveformanager.com.

Plan plan

Two details, then Paddle takes payment. Your account and keys are created as soon as it completes.

The WooCommerce or WordPress site the license manager will run on. You can change it later from your account.

On Shopify? Get the Shopify app from the App Store instead. It has its own plans and setup.

Already have a free account? Sign in and upgrade from your dashboard, so your key and products carry over.