Creating an online store to sell your product

Assume you built a product named “MagicalThing” and you think it’s ready to be sold. The only bit missing is how to license it and start selling. You can make that happen in a few minutes with the help of this guide.

First, go to Shopify and click on the Get started button. It’s free for 14 days so you have plenty of time to determine whether it’s a good fit for you:

Fill your basic details (no credit card needed):

Once you fill in your details the online store will be ready. The store administration panel should look like this:

From there, click products and create your product buy clicking on the add product button:

You will be taken to the product details page. Let’s create the “MagicalThing” product:

That’s pretty much it, but if you want to sell enterprise and professional licenses, or perpetual and yearly licenses at different prices you can scroll down to the variants section and click add variant:

You can provide an “option name” to describe your type of license. In the image below we used “License Type” as the option name, with values “Enterprise” and “Professional”. Each variant will come with different prices. In our example, “Enterprise” licenses will cost $100 and “Professional” licenses $75.

Let’s can get started with the actual licensing part.

Install the univocity license manager app

Now that you have your software products configured in Shopify, you can install our license manager app. To do that, hit this URL in your browser:

Replace YourCompanyName with the actual name of the store you created, and you should see the following confirmation screen:

After confirming the installation, you will be redirected to your store admin page. Click on Apps and you should see our license manager app listed, like below:

Click on the univocity license manager link to access our app. On the first access you will be asked to authorize the monthly and recurring billing terms listed:

You won’t be charged during the trial period so don’t worry too much about it just yet.

You can adjust the monthly amount the app can charge your store in total usage-based fees before proceeding. This limit can be updated at any time later on.

Once you are ready to go, click the Authorize billing button, which will redirect you to Shopify for confirmation:

After approving the charges via the Approve charge button, you will be redirected again to your shop admin page. Let’s get back to the Apps section, which should now display how many days free you have left to try our license management system.

Finally, the app becomes accessible and when you click on the univocity license manager link you should see its configuration panel.


The Settings tab gives you options to configure the behavior of your licensing system. Let’s quickly introduce them.

General License Settings

In this section you can provide default values for all licenses of all products you intend to sell. These defaults can be overridden for any given product or any given variant.

Note that any changes here will apply only to new licenses. Existing users won’t be affected.

E-mail preferences

Every time a license is activated, renewed or is about to expire, an e-mail will be sent to your customers, according to the templates shown below:

You can edit these templates to suit your needs. The templates have special fields that will be replaced with the appropriate values before an e-mail is sent to your customers. On the left hand side of the template editor all available fields are displayed and can be clicked on to insert the tag into the template.

Note that some of the fields are mandatory and must be present in the template.

Once you finished editing you can test the template by clicking the Send template test e-mail button. You will receive a rendered test e-mail shortly after. This is what your customers will receive from our licensing system.

Use your own mail server

By default our app will send emails to your customers from our e-mail server, and the sender will show up as To have them receive e-mails from your domain, you must provide your own mail server details, which our licensing app will then use for you:

You can use the Send test e-mail button to check if your configuration is working and e-mails are being correctly sent from your server.

Once you are happy with your setup, save the changes and proceed to configure the licensing options of your products.

License manager layout

The license manager is the page shown to your customers from where they can manage the licenses they have purchased. This includes allocating or removing licenses to one or more users and renewing their existing licenses. Its usage is covered in section Enabling the client license management interface.

You will probably want to modify how the license manager page looks. This can be done by changing the default CSS and SVG icons so the license manager feels part of your website:

Note that only SVG paths are allowed as icons, without scripts or external references.

There is also a License manager URL field which allows you to embed the license manager in your website through an iframe, as explained in Embedding the license admin page in your website.

The default look of the license manager depends on the style of your online store. On our website ( it looks like this:

Outside of a Shopify online store it looks a lot more plain:

You will probably want to make adjustments there later on, but let’s move on to see how things work.

Enabling licensing for your products

Once our licensing app is installed and enabled in your store, you can configure the licensing for your products. click on the products menu on your shop admin page:

Then click on the product you are going to sell licenses for. The product details page will have a menu named More actions. Click on the License management entry:

The first step now is to enable licensing for your product. Click on the “Enable” button:

Finally will you see the licensing options for your product:

The following sections explain all the options in detail.

License manager integration

You will need to copy or download the template generated for your product and integrate it into your software.

Notice you can choose the template type:


Regardless of the template type, you must change the template to provide the correct product version and its release date. Every time you release a new version of your software, make sure to update this information.


If your product has variants (enterprise, professional, etc) there will be a tab for each one:

Choosing the template to use depends on your requirements. Let’s use our example, in which we created the Enterprise and Professional variants:

  • Variant from license: is meant to be integrated in a software that has a single binary version distributed to customers. When a client purchases a license and activates it, your binary will have to check what license variant is in use, and activate (or deactivate) some features based on the license type.

  • Enterprise: in our example, this is to be integrated in a software that is built exclusively with enterprise features, available only from an enterprise binary distribution. If your client downloads the professional binary and try to activate their enterprise license, the license activation will fail and they will have to download to the correct distribution for the license they own.

  • Professional: in our example, this is to be integrated in a software that is built exclusively with professional features, available only from a professional binary distribution and possibly with less features than an enterprise software. Customers that purchase our MagicalThing - Professional license can only use the professional version of our software binary.

When no variants have been defined for your product, the only option will be the Variant from license explained above.

Using Variant from license is a good default as it allows you to release your product and later change the licensing options available. For example, you may want to introduce perpetual and per-year license variants that expire after 12 months without affecting builds of your software that are already being used.

Customer license management

Here you will be able to determine different license transfer options for the licenses you sell. These options apply to your product and all its variants and can be configured individually for each variant.

The License transfer permission currently provides the following options:

  • No restriction: a license can be used by someone and later transferred to someone else. This is typically used for companies who buy a set number of licenses to be used by a number of employees.

  • New device of same user: a license can only be used by the person who activated it. For example, once a serial key is activated, it can only be used again in association with the original e-mail and name of the person authorized to use it. If the user changes his/her computer for example, they can deactivate the license used in their old system and re-activate it on the new one.

  • No new devices: a license can only be used by the person who activated it, on the system it was activated in. The license can’t be transferred to another system nor another person. If the user changes his/her computer for example, he/she will have to purchase another license for the new system.

Additionally, the Allocate licenses automatically option configures the server to generate and send license key e-mails to the customer immediately after his/her purchase is completed. All serial keys will be initially associated with the customer e-mail. If required, they can be reallocated to other e-mail addresses by the customer himself on their license management page.

License expiration options

These options apply to your product and all its variants. You can leave these blank to use the default values set in the General License Settings introduced earlier, or provide product-specific settings:

These values can be overridden for any given variant of your product.

Renewal discounts

This section allows you to define discounts for your product and all its variants:

Renewal discounts apply to the full price currently set for your product and variant before your customer’s current license expires. If the license is perpetual - i.e. no expiration date defined) - the discount will be applied if the renewal occurred before the support end date.

After the license expires, or the support period ends when the license is perpetual, the Returning client discounts will be used, if set.

These values can also be overridden for any given variant of your products.

Disabling licenses

You can disable the licensing for your products at any time. Existing users will still be able to use their existing licenses. Note that the product will still appear for purchase in your online shop so customers will still be be able to buy the licenses - the app will ignore them. You will have to make the product unavailable from your shopify store admin page:

Per-variant license configuration

To configure different license settings for each variant of a given product, go to your product page and on the Variants section, click on the edit button of the variant you want to configure:

At the top of the page, you should find a menu labelled more actions. Click and select the license renewal options to go to the license settings page of the selected variant:

The options available here allow you to override any default license expiration option or renewal discount defined for your product:

Preparing your shop

Before you start selling licenses, make sure the checkout process will work for your use case. There are a few steps to take.

On your shop admin page, click on the Settings link at the bottom:

Click on the Checkout, where all relevant options concerning the purchase workflow are available.

Customer accounts

Shopify can manage customer accounts for you, and enable a customer area to which they can login and where all purchases they made from your store will appear. From that customer area you can later put in links to the license administration page, as shown in section Enabling the client license management interface.

If you use Accounts are disabled or Accounts are optional, users who don’t create an account will only be able to access the license manager interface from a temporary access link sent to their e-mail.

Mandatory e-mails

The default checkout process in Shopify allows users to finalize a purchase without providing an e-mail address. However, when you are selling software licenses having an e-mail to communicate with your customers is essential for the license app. Let’s make sure customers can only complete their purchases if they provide a valid e-mail address.

Scroll down to the Customer contact section.

There, select Customers can only check out using email.


While you are there, you might also be interested in selecting Automatically fulfill the order‘s line items under After an order has been paid, otherwise you will have to manually approve every customer’s purchase - and potentially make them wait a while before they can use their license.

Disable password protection

The following only applies if you have a Shopify Online Store sales channel. By default the online store is password protected and you must disable that for the server communication to work.

Go to the preferences section of your online store and disable it:

Generating test licenses

The shop is ready for customers to buy licenses now. To test how your users will interact with your store and your software, without actually spending money on it, we can buy our own licenses using a 100% discount code.

Let’s get back to the Shopify admin page and click on Discounts:

Then click on the Create discount button and generate a TESTING discount that takes 100% off the price of anything your shop sells:

Now let’s get to our shop and buy a few licenses.

Purchasing a license

Finally we can purchase a license. The whole process is managed by Shopify but you have some degree of freedom configuring how it works and looks.

You can use their services to run your software store or simply integrate a buy button into your existing website, as detailed below.

If you plan to use your Shopify store, skip to the next section, Purchasing from the Shopify Store.

Creating a buy button

You only need this when you already have a website ready to go and want to integrate a “buy” button for your products there. To create this button, go to your shop’s admin page and under Sales Channels, click Buy Button:

From there, select your product:

Then choose the appropriate template and action on click. You can customize the appearance of everything at will. In the example below we chose the default layout and the Add to cart action:

Once done, click on Generate code to get the HTML snippet you can copy and paste in your website:

For testing, you can save this code in a local text file with the .html extension and open it with your browser. It should display something like this:

Clicking on the Checkout button will start The checkout process.

Purchasing from the Shopify Store

Your online store should be available at (you can use your own domain instead if you want). The default theme is really plain but you can easily switch themes and customize them to your liking.

On the default theme, the MagicalThing product should be available from the home page:

Click on it to select the variant and add it to the shopping cart

The shopping cart works like the ones you find in any online store.

Clicking on the Checkout button will begin The checkout process.

The checkout process

Without any customization, the checkout will look like this:

As we can use the TESTING discount code created in section Generating test licenses, the order is free:

To finalize the purchase of your test licenses click on the Complete Order button. You should see the order complete message, similar to this:

Shopify will also send you an e-mail with your order details. By default it looks like below.

The View your order button will take you to the order completion page shown above.

Now that you have purchased some licenses as a customer would, you need to allocate these licenses to the users who are going to use the software. A minor step is required to enable the license allocation interface to be accessible to your customers.

Enabling the client license management interface

You need to customize your shop to introduce a link to the license manager user interface, where customers can allocate licenses to the actual users of the software.

Depending on how you are using your Shopify store, there are 2 distinct approaches to enabling the license manager:

  1. If you are selling licenses with Customer accounts enabled: you can force customers to create an account, then from their account page (or any other page that makes sense to you) they can use an Assign licenses link which will take them to the license management page.

  2. If you are selling licenses with Customer accounts disabled: there won’t be a customer area. You can only add an Assign licenses link to the order completion page, as explained in section Managing licenses from the order completion receipt. After every purchase, customers will receive an e-mail with a View your order button which takes them to the order completion page.

Let’s explore how this works.

Managing licenses from the customer page

If you have Customer accounts enabled, it is possible to customize the client area so they can access the license manager page after logging into their account. To enable this, from your shop admin page, click on the Settings link at the bottom:

Choose Checkout and on the page that opens click the Customize checkout button.

This will open Shopify’s theme editor. You can choose different themes or simply edit the defaults there. In our case, you need to click on the Theme actions drop-down and select Edit code

Under the Templates folder, select the customers/account.liquid template. This template has the code used by Shopify to render the customer account page. You can modify it at will.

Anywhere in your template, add the following line:

<a href="/apps/licenses/assign/customer/">Assign licenses</a>

This simply adds a link to the license management page, from where your customers can allocate licenses to their users. You can implement the access to the license manager in any way you want, provided that the final URL is /apps/licenses/assign/customer/. In our case we just added a <a> element that points to this URL:

After you save the changes to the template, you can visit the customer account page on

After clicking on the Assign licenses link, you should see the license manager interface:

This is what your customers will see once they purchase a license from you and log into their account. Section The customer license management area explains what customers can do with their licenses.

Managing licenses from the order details page

You can also add a link to the license manager from the customer’s order details page. Just edit the customers/order.liquid under Templates folder of the theme editor, and add the following line where it makes sense to you:

<a href="/apps/licenses/assign?order=&uid=">Assign licenses</a>

For example:

Again, you can customize the theme to your linking and use a different approach to open the license manager. Just make sure the final URL is /apps/licenses/assign?order=&uid=.

To access the license manager, click on the details of an order listed in the customer area:

Managing licenses from the order completion receipt

The following steps are optional if you want to give your customers with accounts a shortcut to get to the license manager.

If customer accounts are disabled or are optional, the only place where the license manager will be accessible for them is from the order completion receipt. In this case you must take the following steps.

On your shop admin page, click on the Settings link at the bottom:

Click on the Checkout link and scroll down to the Order processing section. You should find a text are labelled Additional scripts where you can introduce custom javascript and HTML that will show up in the order completion page:

If you have customer accounts enabled, you want users to be logged into their account so they can access and manage their licenses. The following code can be pasted into the Additional scripts text area.


    <a id='assign_link' href="#">Assign licenses</a>
    <script language="javascript">
        var url = document.location.toString();
        var start = url.indexOf('/orders/') + 8;
        var end = url.indexOf('#', start)
        if(end < start){
            end = url.length; 
        var token = url.substring(start, end);        
        var link = document.getElementById('assign_link');
        link.href = 'https://' + Shopify.Checkout.apiHost + '/apps/licenses/assign?order=&uid='+token;

If the user is not logged-in, they will be asked to authenticate before entering the license management page.

If customer accounts are disabled, customers can only access the license management page from their order receipt page. In this case you must paste the following code in the Additional scripts text area:


<a id="token_link" href="#">Assign licenses</a>
<script language="javascript">
    var url = document.location.toString();
    var start = url.indexOf('/orders/') + 8;
    var end = url.indexOf('#', start);
    if(end < start){
        end = url.length; 
    var token = url.substring(start, end);
    var url = 'https://' + Shopify.Checkout.apiHost + '/apps/licenses/assign/link?uid='+token;
    document.getElementById('token_link').href = url;

This script will generate a temporary access link that will be sent to the customer’s e-mail address.

Testing the script

After you save your changes, refresh the page of your purchase order details. If you closed the window you can go back to the e-mail Shopify sent earlier (as shown in The checkout process) and click on the View your order button.

You should see the Assign licenses link now:

Which will take you to the license administration page. The layout depends on the theme being used in Shopify. This is what it looks like inside the default Shopify theme:

You can style the license admin page almost freely using CSS, as explained in section License manager layout so don’t worry too much about the looks of it yet.

Embedding the license admin page in your website

If you are not using a Shopify storefront and if are not using Shopify’s customer accounts then you probably want to embed the license administration page into your website (as you do with the buy button). Currently this is supported by using an iframe on one of your pages. You just need to provide the URL to the page that loads the iframe on the settings page:

When a customer clicks the assign licenses link, an e-mail will be sent pointing to this URL. Note that the URL must have a parameter. Your page has to extract the token generated for the customer and internally open

For a quick and easy test, you can create a local HTML file: e.g. /tmp/iframe_test.html, with the following content:

Welcome to YourCompanyName.

<iframe id="licenses" height="80%" width="100%" scrolling="no"></iframe>

    var params = window.location.toString().split('=');
    if(params.length > 0){
        document.getElementById('licenses').src = '' + params[params.length -1]


Now, if you go back to the order completion page, and click on the Assign licenses link, you you should get an e-mail like this:

You can paste that link on your web browser to test:

Let’s move on to section The customer license management area to learn more about what customers can do with their licenses.

The customer license management area

The license manager displays all licenses purchased by a customer, and allows customers to assign their licenses to any user, including themselves.

Assigning a license & activating it

At first, any available license can be assigned to anyone. Customers have to provide the user’s name and e-mail, then click the assign icon.

A serial key will be generated for the user, and e-mailed to the address you provided:

Now that we have a serial key, you can execute the registration process from your software, where the user can input his/her license details.

This process is demonstrated in section License activation for Java-based applications. If using another programming language, some coding is needed for Generating a license request.

After the license is activated, you will see that the serial key you used is marked as claimed:

Removing a license

Customers can remove the license from any user and allocate to it another one by clicking on the remove license icon. This will make the license available again:

Renewing a license

At any time, users can renew their licenses. They may want to upgrade to a newer version, released after their upgrade support period, or simply “add time” to their license so it doesn’t expire.

All your customers have to do is to select which licenses to renew, and click the Renew selected button:

Which will take them to the renewal checkout process. Any renewal discounts configured in the product or variant settings as detailed in section Renewal discounts will be applied to the final price. In the screenshot below the renewal discount was configured to take 100% off the price, for testing.

Once the checkout process is finalized and the renewal is completed, the license manager will return the updated support and expiration dates.

If you run the test program again with an existing license that has been renewed, you will notice the support and expiration dates will be updated automatically by the server.

Further Reading

That covers pretty much every aspect of our licensing solution. Feel free to proceed to the following sections (in any order).

If you find a bug

We deal with errors very seriously and stop the world to fix bugs in less than 24 hours whenever possible. It’s rare to have known issues dangling around for longer than that. We provide a test environment for you to test whether our updates work for you as soon as the adjustments are made.

If you have suggestions or find a bug don’t hesitate to open an issue here or send us send us an e-mail.

We are happy to help if you have any questions in regards to how to use our app for your specific use case. Just send us an e-mail with your query and we’ll reply as soon as humanely possible.

We can work for you

If you don’t have the resources or don’t really want to waste time coding we can build a custom solution for you using our products. We deliver quickly as we know the ins and outs of everything we are dealing with. Send us an e-mail to with your requirements and we’ll be happy to assist.

The univocity team.