Product Types

Product Types allow you to pre-define different classes of products and what they can do.

Product Type Values

Name - Set the name of the product type.

API Code - Set the API code which can be used to get the product type object if needed in your themes.

Default - When you create a new product it will automatically have this product type applied.

Shippable - If this is checked, products have weight and dimensions which can be used to evaluate shipping costs. If this is not checked and no shippable products are in the shopping cart during a checkout, then a default "No Shipping Required" selection will be shown on the shipping step.

Has Downloadable files - This is used for the digital products feature, to create a digital product type.

Digital Products

LemonStand allows you to sell digital products that are then delivered automatically and securely to your customers.

You can create an entire catalog of digital products, or sell just 1 or 2. It's up to you. You can even sell both digital and physical products from the same store, and customers can buy both in the same order.

Check out the Tutorial section for a step-by-step on selling Digital Products. Code snippets for embedding Digital Product links in your emails can be found in the Cheat Sheet.


Selling Digital Products

Step 1 - Create a Product Type for your Digital Products

The first step is to create a product type for digital products. Navigate to Product Catalog > Product Types. Click the Plus button to add a new product type.

Here's an example of this product type:

Default - Select this if you primarily sell digital products, and you want this to be the default selected for new products in your store.

  • Shippable - Leave this unchecked, because digital products should not be charged shipping
  • Has Downloadable Files - This is key! Make sure this is checked.

Now click save.

Step 2 - Add a Digital Product to your store

Once you've set your product types, it's time to add your digital product to your store catalog. Navigate to Shop > Products, and click the Plus button.

Here's an example to get you started:


Note the product type on the bottom right of the screenshot. It should be set to the product type you created in Step 1 for digital products. You will need to save the product and refresh the page in order to have access to the "Files" tab.

From here you can fill out additional information such as the category, setting a price, sale price, product images and more.

Step 3 - Adding files to your product

Now for the most important part! Expand the Files tab at the bottom of the Add Product page. Click the Upload button, and select your file. Once it has uploaded, you'll be able to click the "more" button to reveal some file-specific settings.

  • Description - This can be used to remind your customers what the file is on your website, and in automated emails.
  • Maximum Downloads - Here you can specify the number of times that the file can be downloaded before it is disabled. This allows you to prevent a customer from sharing the download link publicly so many people can download it.
  • Disable Downloads After - Set the number of minutes that the download link will be valid for. For example, if you input "2880", the download link would be valid for 48 hours, after which it could no longer be downloaded.

Click the Done button when you are ready to move on to the next file, or next step.

By default, these fields are left blank, therefore they could be downloaded an unlimited number of times without ever expiring.

After adding your files, click the blue Save button at the top of the page.

What a Digital Order looks like

Here's an example of an order with digital products:



    If you click on a file from the list, you'll be taken to a page with more information. Example:


    From here you can manually disable the download link, maximum downloads and expiration in minutes.

    If you expand the Reset tab, you'll be able to reset the download link which will generate a new one, and completely disable the previous link. Note that the original download link will be lost and completely unusable if you reset it.


Step 4 - Adding download links to your theme and email templates

In order for your customers to be able to download files, you may need to add download links to your store's theme and email templates if they are not already included. See the Cheat Sheet for an example code snippet.

There may be cases where you need to send your customers links to your digital products. Perhaps the digital file has been updated after the order was completed. For these cases we provide a way to generate links from your store backend from the specific product page. Go to the bottom of the product page, expand the files tab, press more, and select the generate link button.


    This will open a window where you can limit number of downloads.


Outputting Download Links for Digital Downloads from an Order

In order for your customers to be able to download files, you may need to add download links to your store's theme and email templates if they are not already included.

This is an example code snippet for displaying a download link with download description in the receipt page. (In Happy Hour, this would replace line 18 in the receipt page)

{{ item.product.name }}
  {% for downloadable in item.digitalProductOrderItems %}
    <p><a class="blue" href="{{ downloadable.link() }}">{{ downloadable.file.name() }}</a></p>
    {% set downloadableDescription = downloadable.file.description %}
    {% if downloadableDescription %}
      <h4>{{ downloadableDescription|unescape }}</h4>
    {% endif %}
  {% endfor %}

This will change the receipt page to include the link. It looks like this:


Next, we'll edit the shop:order-content Email Variable to enable an email attachment for your Digital Product. You could input this code right after the product name.

{% for downloadable in item.digitalProductOrderItems %}
<h3><a class="blue" href="{{ downloadable.link() }}">{{ downloadable.file.name() }}</a></h3>  
{% set downloadableDescription = downloadable.file.description %}
  {% if downloadableDescription %}
<h4>{{ downloadableDescription|unescape }}</h4>
  {% endif %}
{% endfor %}