BEATSTORE

How to Auto-Fill Beat License Contracts on Your Own WordPress Store

If you've sold beats from your own site for a while, you know the routine. A sale comes in, you open last month's contract, swap in the new buyer's name, fix the beat title, double-check the price, export a PDF, and email it. That's fine at two sales a month. At twenty, it's a chore. It's also easy to send someone a contract with the last buyer's name still in it.

Marketplaces like BeatStars and Airbit generate a contract for every sale automatically. If you've moved to your own WordPress store to keep 100% of your sales, you can still have that. This post covers how auto-filled license contracts work, what goes into them, and how to set one up with BeatStore Contracts.

What "auto-filled" actually means

An auto-filled contract starts as a template: your license agreement written once, with placeholders where the sale details go. A placeholder looks like {CUSTOMER_FULLNAME} or {TRACK_TITLE}.

When someone buys, the store swaps each placeholder for the real value from that order and saves the result as a PDF. The buyer gets their own copy. You don't touch it.

So you write the legal language once per license tier (say, Basic Lease, Premium Lease, Unlimited, and Exclusive), and every sale after that gets a correct, personalized agreement.

What gets filled in

With BeatStore Contracts, these are the main placeholders and where each value comes from:

  • Buyer's name: {CUSTOMER_FULLNAME} (billing first and last name)
  • Buyer's email: {CUSTOMER_EMAIL}
  • Buyer's address: {CUSTOMER_ADDRESS}, from a legal-address field the buyer fills in at checkout
  • Beat title: {TRACK_TITLE}, the name of the item on the order
  • License name: {LICENSE_NAME}, the name of the contract template mapped to that license tier
  • Price: {TRACK_PRICE}, the amount on that order line, with {CURRENCY_SYMBOL} or {CURRENCY_WORD}
  • Date: {CONTRACT_DATE}, the date the PDF is generated, in your site's date format. This is not a stored order date, and there is no separate order-date placeholder.
  • Your details: {PRODUCER_ALIAS} (your producer name), {PRODUCER_FULLNAME} (your legal name), {PRODUCER_EMAIL}, and {PRODUCER_ADDRESS}
  • Governing region: {STATE_PROVINCE_COUNTRY}

Then there are the usage terms, which you set once on each template:

  • distribution copies ({DISTRIBUTE_COPIES})
  • audio streams ({AUDIO_STREAMS})
  • for-profit and not-for-profit performances
  • radio stations
  • music videos
  • monetized and non-monetized video streams
  • your publishing percentage ({PUBLISHING_PERCENTAGE})

The order number is not a placeholder inside the agreement. Every PDF prints it in a fixed header above your template: your site name, then Order: and the Easy Digital Downloads payment ID or the WooCommerce order ID. That header is omitted when the WordPress site name is empty. You and the buyer can still match the contract to the sale from that header when the site name is set.

You can see the full list on the placeholders doc.

How it works in BeatStore, step by step

BeatStore Contracts is an add-on for WordPress. It works with Easy Digital Downloads or WooCommerce, whichever one your store already uses. You can run it with the BeatStore Player Plugin or on its own. A Player Plugin license on its own does not unlock the PDFs.

1. Create your templates. Go to BeatStore → Contracts. The plugin includes starter templates for exclusive and non-exclusive agreements. Edit the wording, then fill in the usage fields for that tier. To add a placeholder, drag a chip into the text or click it.

2. Map each template to a license. Your license tiers and prices stay where they already live: EDD variable prices or WooCommerce license variations. For each one, pick which contract template it uses. A tier with no template still sells; it just doesn't get a PDF. The templates and offer mapping doc walks through both EDD and WooCommerce.

3. Buyers agree before they pay. At checkout, the buyer has to tick a box saying they've reviewed the license and agree to the terms. They also enter the address that goes on the contract. If either is missing, the order won't go through. Before checkout, the cart shows a View license link so buyers can read a preview of the agreement first. On WooCommerce, use classic checkout. Checkout blocks do not show the agree box or the address field yet. (Checkout details.)

4. The PDF is created after payment. Once the order is fulfilled, BeatStore fills the template and saves one PDF per beat on the order. Each order line gets exactly one file, even if the payment hook fires twice.

5. The buyer gets a private download link. The PDFs are stored privately, not at a public URL anyone could guess. The buyer gets a token download link on the receipt or thank-you page. You can also add it to the receipt email. (After-purchase details.)

A few honest notes before you start

  • Have a lawyer look at your contract. The starter templates are a starting point. They are not lawyer-reviewed legal advice. Your license terms are a real agreement with real money behind them, so it's worth getting someone qualified to read your final wording.
  • Name templates after your tiers. {LICENSE_NAME} prints the template's name. If the template is called "Premium Lease", that's what the buyer sees. It is not read from the EDD price name or the WooCommerce license term.
  • Agreement, not e-signature. The buyer agrees with a required checkbox at checkout. It's a clear record that they accepted your terms before paying, but it isn't a drawn or typed signature. Nothing on the PDF is signed.
  • Prices still live in your shop. You don't set beat prices twice. {TRACK_PRICE} is the amount on that order line.
  • Upgrading from Licenses & Contracts? If you bought the older Licenses & Contracts plugin for EDD or WooCommerce, your license key still unlocks BeatStore Contracts, and your templates and mappings copy over when you activate it. See upgrading.

Why bother, if you only sell a few beats?

Even at low volume, auto-filling fixes three problems:

  1. No copy-paste mistakes. Every contract has the right buyer, beat, and price.
  2. Buyers get their paperwork right away, not whenever you get around to it.
  3. You have a record. Every sale has a matching PDF, the order number is in the PDF header when your site name is set, and the buyer agreed to the terms before paying.

Also, a clear written agreement tells serious artists you run a real business.

Getting started

BeatStore Contracts starts at $4.99/month, with annual ($19) and lifetime ($49) options. You can also get it bundled with the BeatStore Player Plugin from $9.99/month or $129 lifetime. See pricing or the Contracts product page.

If you're still setting up your store, start with How to Make a Beat-Selling Website with WordPress, then come back to add contracts.