# Overview

The App is design for selling digital products - Activation Codes, File download (PDF, PNG or any kind of files - coming soon!)&#x20;

E.g Selling a copy of software online that require activation code after download the software.

The app allow Activation Codes /Files managed, so they can be associate with specific product.

Once customer purchased the product and paid, the app will send out email with the Activation Code or file download link and mark those codes with order number, so you can easily manage your digital assets.

## Flow

![](/files/-LSzvdcYAFc2VpfSsxKX)

1. Customer paid for the order.
2. An paid order will trigger the app.
3. The app will look for SKUs in the order.
4. Use SKUs in order to look for Activation Codes / Files associate with those SKUs.
5. Get the Activation Codes /Files with SKUs in the order and mark those Activation Codes / File download link as registered and associate the order with them.
6. Send out an email to customer with Activation Codes / File download link.


# QuickStart

## Step 1 - Add a product in the App admin

Add an product already existing on Shopify - make sure the product contain SKU

![](/files/-LZSo_fX7d-SEQ6lJuM0)

## Step 2 - Upload Activation Codes or upload a file

This is important first step - associate product SKU with Activation Codes or File to download.

### Type - File

If customer can download file after purchased the product, then will need to upload an file for customers to download

![](/files/-LZSp4heEi-3R6QZv1Q4)

### Type - Activation codes

There is option to enter it manually one by one

Or bulk upload using CSV, the content of the CSV need to be in the following format

| code        |
| ----------- |
| 10000000000 |
| 10000000001 |

The above will associate the activation codes with the selected product

{% file src="/files/-LSBnfyzvGhrcdisqVdL" %}
Sample activation codes CSV
{% endfile %}

## Step 3 - Check the email template

Go to App Admin > Select Entry > Email to customer, make sure the content is correct/suitable.

## Step 4 - Enable it - make it Live

Go to App Admin > Select Entry > Change status from **Draft** to **Live**

**Don't forget to make sure there are activation codes associate with the selected product/entry**

## Step 5 - Live Test (Optional)

Do a live test order to see the whole thing in action.

Place an order with the above product, then make sure the order is paid.

Then you should receive an email with activation code for that product


# Admin

Provide intuitive interface to manage digital assets and product association

## Add new digital product

Type the product name into the search box, it will do a product search and come back with the match.

![](/files/-LZSo_fX7d-SEQ6lJuM0)

Make sure the product have a **SKU** associate with it

**Save** it once the product is selected

## Management

The management of Activation Codes - Able to filter activation by **order id**, **customer email** and search for specific **activation code or download link**

![](/files/-LZSpSLuM68WI89XDKED)

## Upload File or Activation Code CSV

![](/files/-LZSp4heEi-3R6QZv1Q4)

Its possible to bulk upload Activation codes with associate SKU

![](/files/-LSzx7Or8DIvEO7ykOa6)

Here is an sample of the CSV

{% file src="/files/-LSzx0guCt0IPouu27gQ" %}
Sample activation codes CSV
{% endfile %}

## Email to Customer

When customer order products that are in the app and paid for it, the app send out an email to customer with activation code.

This email is customisable in the admin

![](/files/-LZSpo_KuFA55VD6Jiut)

Here is the example of the email with the above content - as you can see the \[product-with-codes-replacement-tpl] is replaced with real data.

![](/files/-LT-WyfvShjfChVYYWQe)


# Upload Data

There are two type of entries

### Codes/CSV

Using the CSV uploader to upload codes&#x20;

File requirements

* File have to be in CSV format
* CSV must have header

Here is an example csv

| code |
| ---- |
| 123  |
| 321  |
| 456  |
| 654  |

And here is an sample CSV&#x20;

{% file src="/files/-LSBnfyzvGhrcdisqVdL" %}
Sample Activation Code CSV
{% endfile %}

### File

File type allow you to upload single file, if you need to upload more than one file, please make them into a zip first, then each customer order will send a secure download link to download the file


# Email To Customer

The app will send out an email to the customer after they paid for the product, the content of the email can be customize in the admin

Its possible to design beautiful custom made email template - by switch to the HTML mode, then the sky is the limit

Inside the HTML email template, the product purchased by the customer and download link can be reference using the following format

```
{{ name }}
{{ downloadLink }}
```

When the entry type of code, it will contain list of codes associate with the products (because its possible to buy multiple quantity of product, hence need to send out multiple codes), here is how to looping through the codes

```
{% for code in codes %}
    <p>{{ code }}</p>
{% endfor %}
```

Here are a list of variables available to the email template

| Type      | Name               | Description                               | Data Type |
| --------- | ------------------ | ----------------------------------------- | --------- |
| File/Code | {{ name }}         | The product name                          | String    |
| File/Code | {{ quantity }}     | The quantity of the product               | String    |
| File      | {{ downloadLink }} | The generated download link for file type | String    |
| Code      | {{ codes }}        | List of code for purchased product        | Array     |


# Import Entries

**Only applicable to entry type CODE**

When you have massive account of entries and each of them have large amount of codes, then bulk import via CSV is a more convenient method

The CSV have to be in the correct format, it have to have the following column (t**he column name have to be in the exact wording**)

| product\_id | code     | status |
| ----------- | -------- | ------ |
| p321        | test-123 | draft  |
| p321        | test-456 | draft  |
| p321        | test-678 | draft  |
| p222        | 987      | live   |
| p222        | 654      | live   |

The following fields are repeats for each unique code

* product\_id
* status

Here is a sample CSV

{% file src="/files/-MZ8ijwX7glZMjNgPWE7" %}
Sample import CSV
{% endfile %}


# Notification webhook

## Overview

After the app is installed, it will automatically ask Shopify to send the order information to the app when a customer made an order, the order information Shopify sent to the app contains all data related to the order e.g line items, fulfillment, and customer data etc, then the app will use the order information and the entries and rules you created in the app admin to send customer either activation code or the file download link

But from 1st July 2023, Shopify will not send information that can identify the customer by default (information like customer names, email, and address, etc), access to protected customer data will require approval from Shopify

To be able to get the order's customer email is important for the app to be able to send the activation/file download email to the customer, we have already submitted an application for protected customer data access. However, the approval process may take some time, and we are uncertain when it will be granted.

To ensure the uninterrupted operation of our app and the successful delivery of customer activation codes and file downloads. The Shopify notification webhook can be used as an alternative way to make the app work while the app is waiting for approval to access the customer data like email (because notification webhook will be able to send the whole customer data like email to the app's webhook endpoint)using.

## Setup steps

There are three steps to use the notification webhook

1. Get the webhook url from the app
2. Create notification webhook and signature in Shopify admin
3. Save the webhook signature in the app

### Step 1 - Get the webhook url from the app

Go to Shopify admin > Apps > Digital Asset manager > Settings > Notification Webhooks to trigger delivery > Incoming webhook url > copy

<figure><img src="/files/BegQkGt9xGFEEjkcrvdi" alt=""><figcaption></figcaption></figure>

The webhook url is the url Shopify will call when a event (e.g order paid) occurred

### Step 2 - Create notification webhook and get signature

Follow the following steps

* Go to the "Settings" section and click on "Notifications."
* Scroll down to the "Webhooks" section and click on "Create webhook."
* In the "Event" field, select "Order paid" or "Order created" (depending on your preference).
* Select **JSON** as the format
* Enter the above **incoming webhook url** as the "Endpoint URL"
* Save your webhook configuration.

<figure><img src="/files/Gn5MLaKtoccbNbrzzT3V" alt=""><figcaption></figcaption></figure>

Once the webhook is created, you will the signature at the bottom

<figure><img src="https://mpr.wonderingbranches.com/img/Notification_webhooks.png" alt=""><figcaption></figcaption></figure>

Copy the signature (**the signature is for the app to verify the webhook is legit and coming from Shopify - on every signle webhook call, shopify will call the url with the signature, then the app will verify the call is legit before processing it**)

### Step 3 - Save the webhook signature

With the signature copied in the clipboard, go back to the App admin > Settings > Notification Webhooks to trigger delivery and paste in the signature in the signature box > Scroll up and Save the setting

<figure><img src="/files/MlkQvht5aCoaP86G16js" alt=""><figcaption></figcaption></figure>

## Testing

Once all of the above steps are done, please take the following steps to test it

1. Set up a new entry with the products in the app
2. Create a new order in Shopify admin
3. Make changes to the order, so it will trigger the webhook event you added
4. Check if the order's customer receive the delivery

Let us know if you encounter any issues or have any questions


# Frontend

Its possible for customer to see all their digital assets

All customer need to do is to log into their account and go to the following url

/apps/digital-assets-manager

### Digital assets listing on other page - e.g Account area

Its possible to list digital assets list on other page by add on the follow snippet to the any page's liquid file

```
{% render 'shopify://apps/digital-asset-manager/snippets/digital-assets-manager/7dae70ad-9f74-455e-90f5-4d97d948ec86' %}
```

If the above shopify snippet doesn't work, then you will have to put in the following code

```
<script type="text/javascript">
{% if customer %}
	window._dam_customer_id = {{ customer.id | json }};
{% endif %}
</script>

<div id="_dam_root"></div>
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/varify-dam/static/frontend/js/frontend.js"></script>
```


# FAQ

## Can I become who I want to be?

That's a tough question but thankfully, our team is on it. Please bear with us while we're investigating.

## Have you had a chance to answer the previous question?

Yes, after a few months we finally found the answer. Sadly, Mike is on vacations right now so I'm afraid we are not able to provide the answer at this point.

## How many products can I add?

There is no limit on how many product you can add, the same apply to activation codes


# Contact us

If you have any questions, feel free to contact us at <info@varify.xyz>

Please provide as much information as possible if you have any issues with the app


# Privacy policy

Digital Asset Manager ("us", "we", or "our") operates the Digital Asset Manager  application (the "Service").

This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.

We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.

### Information Collection And Use

We collect several different types of information for various purposes to provide and improve our Service to you.

#### Types of Data Collected

**Personal Data**

While using our Service, we will collect a minimal amount of personal data of customer on their orders to be able to deliver digital products to customers, the only data needed is

* Email address

### Use of Data

Digital Asset Manager uses the collected data for various purposes:

* To provide and maintain the Service

### Transfer Of Data

Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction.

If you are located outside the United Kingdom and choose to provide information to us, please note that we transfer the data, including Personal Data, to the United Kingdom and process it there.

Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.

Digital Asset Manager will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information.

### Disclosure Of Data

#### Legal Requirements

Digital Asset Manager may disclose your Personal Data in the good faith belief that such action is necessary to:

* To comply with a legal obligation
* To protect and defend the rights or property of Digital Asset Manager
* To prevent or investigate possible wrongdoing in connection with the Service
* To protect the personal safety of users of the Service or the public
* To protect against legal liability

### Security Of Data

The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.

All data is encrypted when stored, transits various networks, and at backup.

### Children's Privacy

Our Service does not address anyone under the age of 18 ("Children").

We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your Children has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.

### Changes To This Privacy Policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.

We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy.

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

### **Information Regarding Your Data Protection Rights Under General Data Protection Regulation (GDPR)**

For the purpose of this Privacy Policy, we are a Data Controller of your personal information.

If you are from the European Economic Area (EEA), our legal basis for collecting and using your personal information, as described in this Privacy Policy, depends on the information we collect and the specific context in which we collect it. We may process your personal information because:

* We need to perform a contract with you, such as when you create a Policy with us
* You have given us permission to do so
* The processing is in our legitimate interests and it's not overridden by your rights
* For payment processing purposes
* To comply with the law

If you are a resident of the European Economic Area (EEA), you have certain data protection rights. In certain circumstances, you have the following data protection rights:

* The right to access, update or to delete the personal information we have on you
* The right of rectification
* The right to object
* The right of restriction
* The right to data portability
* The right to withdraw consent

Please note that we may ask you to verify your identity before responding to such requests.

You have the right to complain to a Data Protection Authority about our collection and use of your personal information. For more information, please contact your local data protection authority in the European Economic Area (EEA).

### Contact Us

If you have any questions about this Privacy Policy, please contact us:

* By email: <info@varify.xyz>


# Terms & Conditions

### **Terms and Conditions**

Welcome to Digital Asset Manager!

These terms and conditions outline the rules and regulations for the use of Varify's Digital Assets Manager Shopify app, located at <https://apps.shopify.com/dam>.

By accessing this app we assume you accept these terms and conditions. Do not continue to use Digital Asset Manager if you do not agree to take all of the terms and conditions stated on this page.

The following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and all Agreements: "Client", "You" and "Your" refers to you, the person log on this app and compliant to the Company’s terms and conditions. "The Company", "Ourselves", "We", "Our" and "Us", refers to our Company. "Party", "Parties", or "Us", refers to both the Client and ourselves. All terms refer to the offer, acceptance and consideration of payment necessary to undertake the process of our assistance to the Client in the most appropriate manner for the express purpose of meeting the Client’s needs in respect of provision of the Company’s stated services, in accordance with and subject to, prevailing law of Netherlands. Any use of the above terminology or other words in the singular, plural, capitalization and/or he/she or they, are taken as interchangeable and therefore as referring to same.

#### **Cookies**

We employ the use of cookies. By accessing Digital Asset Manager, you agreed to use cookies in agreement with the Varify's Privacy Policy.

Most interactive apps use cookies to let us retrieve the user’s details for each visit. Cookies are used by our app to enable the functionality of certain areas to make it easier for people visiting our app. Some of our affiliate/advertising partners may also use cookies.

#### **License**

Unless otherwise stated, Varify and/or its licensors own the intellectual property rights for all material on Digital Asset Manager. All intellectual property rights are reserved. You may access this from Digital Asset Manager for your own personal use subjected to restrictions set in these terms and conditions.

You must not:

* Republish material from Digital Asset Manager
* Sell, rent or sub-license material from Digital Asset Manager
* Reproduce, duplicate or copy material from Digital Asset Manager
* Redistribute content from Digital Asset Manager

This Agreement shall begin on the date hereof. Our Terms and Conditions were created with the help of the [Terms And Conditions Generator](https://www.termsandconditionsgenerator.com) and the [Privacy Policy Generator](https://www.generateprivacypolicy.com).

Parts of this app offer an opportunity for users to post and exchange opinions and information in certain areas of the app. Varify does not filter, edit, publish or review Comments prior to their presence on the app. Comments do not reflect the views and opinions of Varify,its agents and/or affiliates. Comments reflect the views and opinions of the person who post their views and opinions. To the extent permitted by applicable laws, Varify shall not be liable for the Comments or for any liability, damages or expenses caused and/or suffered as a result of any use of and/or posting of and/or appearance of the Comments on this app.

Varify reserves the right to monitor all Comments and to remove any Comments which can be considered inappropriate, offensive or causes breach of these Terms and Conditions.

You warrant and represent that:

* You are entitled to post the Comments on our app and have all necessary licenses and consents to do so;
* The Comments do not invade any intellectual property right, including without limitation copyright, patent or trademark of any third party;
* The Comments do not contain any defamatory, libelous, offensive, indecent or otherwise unlawful material which is an invasion of privacy
* The Comments will not be used to solicit or promote business or custom or present commercial activities or unlawful activity.

You hereby grant Varify a non-exclusive license to use, reproduce, edit and authorize others to use, reproduce and edit any of your Comments in any and all forms, formats or media.

#### **Hyperlinking to our Content**

The following organizations may link to our app without prior written approval:

* Government agencies;
* Search engines;
* News organizations;
* Online directory distributors may link to our app in the same manner as they hyperlink to the apps of other listed businesses; and
* System wide Accredited Businesses except soliciting non-profit organizations, charity shopping malls, and charity fundraising groups which may not hyperlink to our Web site.

These organizations may link to our home page, to publications or to other app information so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products and/or services; and (c) fits within the context of the linking party’s site.

We may consider and approve other link requests from the following types of organizations:

* commonly-known consumer and/or business information sources;
* dot.com community sites;
* associations or other groups representing charities;
* online directory distributors;
* internet portals;
* accounting, law and consulting firms; and
* educational institutions and trade associations.

We will approve link requests from these organizations if we decide that: (a) the link would not make us look unfavorably to ourselves or to our accredited businesses; (b) the organization does not have any negative records with us; (c) the benefit to us from the visibility of the hyperlink compensates the absence of Varify; and (d) the link is in the context of general resource information.

These organizations may link to our home page so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products or services; and (c) fits within the context of the linking party’s site.

If you are one of the organizations listed in paragraph 2 above and are interested in linking to our app, you must inform us by sending an e-mail to Varify. Please include your name, your organization name, contact information as well as the URL of your site, a list of any URLs from which you intend to link to our app, and a list of the URLs on our site to which you would like to link. Wait 2-3 weeks for a response.

Approved organizations may hyperlink to our app as follows:

* By use of our corporate name; or
* By use of the uniform resource locator being linked to; or
* By use of any other description of our app being linked to that makes sense within the context and format of content on the linking party’s site.

No use of Varify's logo or other artwork will be allowed for linking absent a trademark license agreement.

#### **iFrames**

Without prior approval and written permission, you may not create frames around our Webpages that alter in any way the visual presentation or appearance of our app.

#### **Liability**

We shall not be hold responsible for any content that appears on your app or any lost during the usage of the app. You agree to protect and defend us against all claims that is rising on your app. No link(s) should appear on any app that may be interpreted as libelous, obscene or criminal, or which infringes, otherwise violates, or advocates the infringement or other violation of, any third party rights.

#### **Your Privacy**

Please read Privacy Policy

#### **Reservation of Rights**

We reserve the right to request that you remove all links or any particular link to our app. You approve to immediately remove all links to our app upon request. We also reserve the right to amen these terms and conditions and it’s linking policy at any time. By continuously linking to our app, you agree to be bound to and follow these linking terms and conditions.

#### **Removal of links from our app**

If you find any link on our app that is offensive for any reason, you are free to contact and inform us any moment. We will consider requests to remove links but we are not obligated to or so or to respond to you directly.

We do not ensure that the information on this app is correct, we do not warrant its completeness or accuracy; nor do we promise to ensure that the app remains available or that the material on the app is kept up to date.

#### **Disclaimer**

To the maximum extent permitted by applicable law, we exclude all representations, warranties and conditions relating to our app and the use of this app. Nothing in this disclaimer will:

* limit or exclude our or your liability for death or personal injury;
* limit or exclude our or your liability for fraud or fraudulent misrepresentation;
* limit any of our or your liabilities in any way that is not permitted under applicable law; or
* exclude any of our or your liabilities that may not be excluded under applicable law.

The limitations and prohibitions of liability set in this Section and elsewhere in this disclaimer: (a) are subject to the preceding paragraph; and (b) govern all liabilities arising under the disclaimer, including liabilities arising in contract, in tort and for breach of statutory duty.

As long as the app and the information and services on the app are provided free of charge, we will not be liable for any loss or damage of any nature.


# Security incident policy

Security Incident Policy

1. Introduction

We prioritize the security and privacy of our customers' data. We understand the importance of maintaining a secure environment for our application and are committed to promptly addressing any security incidents that may occur. This Security Incident Policy outlines our approach to incident management and serves as a guideline for our response and resolution procedures.

2. Incident Identification and Reporting

a. Incident Identification:

* We employ comprehensive monitoring systems and intrusion detection mechanisms to identify security incidents promptly.
* Incidents can be identified through system alerts, log analysis, user reports, or any other means that indicate a potential security compromise.

b. Incident Reporting:

* All stakeholders are encouraged to report any suspected or observed security incidents immediately.
* Incident reports should be submitted to the designated point of contact - the Incident Response Team (IRT).

3. Incident Response

a. Incident Categorization:

* Upon receiving an incident report, the IRT will assess and categorize the incident based on its severity and impact.
* Incidents may be classified as low, medium, or high severity, depending on the potential risk to the confidentiality, integrity, or availability of our services or customer data.

b. Incident Response Team (IRT):

* The IRT comprises members from relevant team, including IT, security, legal, and communications.
* The IRT is responsible for coordinating the response effort and ensuring appropriate actions are taken to mitigate the incident.

c. Incident Response Procedures:

* The IRT will follow predefined incident response procedures tailored to different incident types and severity levels.
* Response procedures will include steps for containment, investigation, eradication, recovery, and post-incident analysis.

d. Communication:

* The IRT will establish clear communication channels to facilitate timely and accurate incident reporting, updates, and coordination.
* Communication will be coordinated internally among the IRT members and externally with affected parties, as necessary.

4. Incident Resolution

a. Containment and Mitigation:

* The primary objective is to contain the incident and minimize its impact on our services and customer data.
* The IRT will take immediate action to isolate affected systems, disable compromised accounts, patch vulnerabilities, or implement any necessary security controls.

b. Investigation and Eradication:

* The IRT will conduct a thorough investigation to determine the root cause, scope, and potential impact of the incident.
* Efforts will be made to eradicate the vulnerability, eliminate any unauthorized access, and restore the affected systems to a secure state.

c. Recovery and Restoration:

* Once the incident is contained and the vulnerability is addressed, the IRT will focus on restoring normal operations.
* Data integrity checks, system backups, and any necessary data recovery procedures will be performed to ensure the recovery process is complete.

d. Post-Incident Analysis:

* After the incident is resolved, a comprehensive post-incident analysis will be conducted to identify lessons learned and implement preventive measures.
* Incident response procedures, security controls, and training programs will be updated based on the findings to enhance future incident response capabilities.

We remain committed to maintaining the highest level of security and will continuously improve our incident response capabilities to protect our SaaS application and customer data.


