License keys
Add license keys to a product, deliver them with each sale, and check which keys have been used. Includes quantity limits and setup tips.
Add your license keys to a product in FetchApp, and each unit sold receives one available key along with its download. License keys are included on every paid plan, with no per-key, per-activation or per-seat fee.
How keys are assigned
Each product has its own list, or pool, of keys. An order for three units takes three available keys in the order they were added. Keys are assigned when the order is created, rather than when the customer downloads the file.
A product that delivers keys also needs an attached file. A short text file with activation instructions works well if you have no other download to include. Products without files will not be delivered. See quickstart step 5.
Loading keys
Open the product and choose Edit License Keys → Add License Keys. Paste your keys one per line or separated by commas. You can copy them from a file, but there is no key-file upload button in the admin.
- Existing keys are skipped. Adding a key already in the product’s pool does not create a duplicate or show an error.
- Add large lists in smaller batches. If a paste is too large to accept, split the list and add one batch at a time.
A developer can also add keys in bulk through the API; see the details below.
Where the key shows up
Keys can appear in your delivery email and on the download page. Both use editable Liquid templates, which combine your text with details from the order.
If you are editing a template, the following example displays each product’s key when one is assigned. Support can help if you are unsure where to add it.
{% for product in order.products %}
{% if product.license_key %}
<li>License key: {{ product.license_key }}</li>
{% endif %}
{% endfor %}
Place a test order to check that the key appears in the email and download page as expected.
Knowing who has which key
In the product’s key list, used keys have been assigned to orders and unused keys are available for future sales. You can export assignments to a CSV spreadsheet to look up a customer’s key.
The unused count is also available in templates if you want to display it there. Check the count regularly, especially before a launch or a large order import.
Quantities and available keys
Up to 100 keys per Shopify line item. For example, one line with a quantity of 250 will deliver 100 keys without an error or warning. Split larger quantities into separate line items, each within the limit, or contact support before selling them. For large quantities through another store connection, ask support to check your setup.
When no keys are left, the file is delivered without a key. FetchApp does not send a low-stock or empty-pool alert, or mark the order history with a warning. Check your unused count and add more keys before they run out. If your store tracks stock, you can set its available quantity to match the keys you have left.
Your plan also has a key allowance. If you reach it, the Add Keys button is replaced with a message asking you to upgrade or delete keys. Contact support if you need a larger allowance. See limits for related settings.
Activation and validation
FetchApp stores, assigns and delivers keys you supply. Your software or licensing service handles generating keys, activating them, validating them and counting seats. FetchApp does not lock a file to a key; each customer receives the same product file.
For developers: managing keys through the API
On a plan with API access, use your account’s API key and token for HTTP Basic authentication. Send requests to your own account address:
curl -u "$API_KEY:$API_TOKEN" \
"https://$HANDLE.fetchapp.com/api/v3/products/EBOOK-01/license_keys"
Here, HANDLE is your account handle and EBOOK-01 is an example product SKU. Replace them
with your own values.
Keys can be listed by product or SKU, added in bulk, unassigned and deleted. To load a list,
send a JSON array to POST /api/v3/products/:id/license_keys. Split large requests into
batches.
When paging through keys, requests beyond the last page return the final page again rather than an empty list. Stop when you receive a repeated page or reach the expected key count. See the API guide for credentials and the full reference.
Next: add a few keys and send yourself a test order.