# About S: Request a Quote

Storeify Request A Quote application allows customers to request a quote for one, some products or the whole shopping cart easily. Customers will add their preferred items to the quote  with their wished prices. After viewing the quote requests, store owners can approve, cancel, discuss with customers and modify the quotes. Our app helps you to create accurately adjusted pricing offers for both B2B and B2C customers.

## Highlight Features

#### 1. Request a quote & Hide Price

Easily hide price & add to cart button and show the request a quote button/form form by product, collection, country or language condition.

#### 2. Automatically convert quote to draft order and send invoice email

Convert quote to draft order automatically or manually with just 1 click, making it very easy to add tax, shipping, discount code, new customer.

Store owner can enable the automatic invoice email sending feature after a draft order is automatically created or created by clicking on the Convert to draft order button in the backend app.

#### 3. Automatically approve quote&#x20;

Request a Quote & Hide Price app allows automatic approval of quotes based on the customer's bargain price or approval without any conditions.

#### 4. Create quote from the backend

The store owner can proactively generate quotes for any product and send them to customers.

## **Key features of S: Request a Quote**

### **\[NEW UPDATES]**

* Add shipping fee to quote form
* Add checkbox to subscribe to receive newsletter for form
* Show Discount price, Shipping, VAT
* Attach Quote PDF to customer email
* Print Quote PDF from frontend and backend
* Add product meta-fields in product table
* Add quote expired time in email and PDF
* Change date time format for quote created time and quote expire

### **For Store owners**

* Enable / Disable the Request a Quote & Hide Price app
* Create and customize quote form with form builder features
* Apply display rules for quote by select products, collections, product vendor, product type, product tag, out of stock
* Filter display by language and country
* Allow / Disallow customers to attach files to the quotes
* Convert quote to draft order, add customer name and email to Shopify customer database automatically
* Automatically send invoice email
* View and edit product QTY, product price, message to customer on a quote
* Auto approve quotes with the specified discount amount: The discount is calculated for the entire quote (not for separate products)
* View submission statistics and export submissions to CSV file
* View quote logs (quote timeline) so admin doesn't miss any quote
* Hide product price, add to cart button
* Login to see price
* Hide Quote button on collection
* Hide Quote button or quote form on product page
* Allow to hide out of stock variants
* Switch Add to quote to Quick quote (Request a quote) and vice versa
* Add widget to display real-time number of products in quote and view quote list easily
* Translate to any language
* Send email notifications to customers every time the quote's status changes (Accept quote, Edit quote, Reject quote)
* Auto email response
* Send email invoice automatically after draft order is created
* Customize email template
* Email service integration: you can integrate quote form with UP TO 9 of THE MOST POPULAR EMAIL SERVICES for your email marketing campaigns: Mailchimp, GetResponse, Klaviyo, Google sheet and more
* Email SMTP
* Customer redirect after submitting quote form
* Tracking UTM source
* Can print quote to PDF file
* Multi-form \[ADVANCED PLAN]: Create many different forms to diversify quotation forms for different purposes (only available with Quick Quote feature)
* Support Shopify Markets

### For customers

* Customers can request a quote (call for price/make an offer) with their wished price
* Convenient to negotiate with stores
* Get notified instantly when there are any updates related to the quote
* Have the chances to buy products at better prices
* Search and add products in quote list page
* Convert cart to quote (only available with Add to Quote feature)
* Can print the quote to PDF after submitting the form
* View all quote history
* Automatically fill in email, username in the form after logging in
* Have a better shopping experience

<details>

<summary>Add app: <a href="https://apps.shopify.com/storeify-request-a-quote">https://apps.shopify.com/storeify-request-a-quote</a></summary>

</details>


# Pricing Plans

## All available plans

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


# How does the app work?

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

## The steps to complete a quote request are as follows:

1. Customer submits a quote request.
2. Store owner receives the request, adds a price, adds message if needed (Update Quote).
3. Customer receives an email about the suggested price and message in step 2. If the customer does not agree with the price offered by the store owner, he/she can respond directly to the received email, the store owner can edit the price and message for the quote in the app backend to continue to negotiate with the customer.&#x20;
4. If the customer agrees with the price, he/she will email to store owner.
5. Store owner converts the Quote to Draft Order. Basically our app process only to this step, other steps below will be process by Shopify system.
6. Store owner goes to "Draft Order" -> Edit the Draft Order item and send the customer the invoice (If the product price is set to **0**, the store owner need to ***add a new custom item*** with the offer).
7. Now finally the customer is received an email invoice about the total price.
8. If the customer does not agree store owner can delete the Draft Order. Conversely, if the customer agrees, he/she will go to the checkout from email invoice to process the payment.
9. Store owner gets an ORDER.


# Steps to do

For the app to work perfectly on the store, please follow these steps:

## 1. Install app:&#x20;

{% content-ref url="/pages/3GDjzvjw6wUjhd66C9AF" %}
[Install app](/install-app)
{% endcontent-ref %}

## 2. Create & Edit quote form:

{% content-ref url="/pages/Pr8TEIUnO6zhfRdpIZb2" %}
[Create & Edit quote form](/create-and-edit-quote-form)
{% endcontent-ref %}

If using multiple forms, perform additional steps to set up multi-form (***only available with the Advanced Plan***):

{% content-ref url="/pages/uH7W5SCg1xXDeMtcr7zK" %}
[Multi-form](/multi-form)
{% endcontent-ref %}

## 3. Settings:

{% content-ref url="/pages/rFPm12QrNvKE0ofkYzTH" %}
[Settings](/settings)
{% endcontent-ref %}

## 4. Integrate code to theme:

{% content-ref url="/pages/StcyTXANVQR0Bxkdoddu" %}
[Integrate code to theme](/integration/integrate-code-to-theme)
{% endcontent-ref %}

## 5. Automatically integrate code using AI

[<mark style="color:$warning;">Note</mark>](#user-content-fn-1)[^1]: This step only needs to be performed after completing the 4 steps above if the product prices and the "Add to cart" button are still not hidden.

Click the link below to see the detailed instructions:

{% embed url="<https://quote-guide.storeify.app/advanced-features#id-7.-automatically-analyzes-theme-selectors-and-inserts-integrated-code-using-ai>" %}

***

If the quote function still are not enabled for selected products, please don’t hesitate to contact us via email: **<storeifyapps@gmail.com>**

<br>

[^1]:


# Install app

Directly go to this link: [S: Request A Quote](https://apps.shopify.com/storeify-request-a-quote) to install the app.

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

After adding the app to the store is complete, You need to go to the app dashboard and follow the recommended steps :

<figure><img src="/files/5W8nc2YCnX0J1xA2AOy5" alt=""><figcaption></figcaption></figure>

**If you want to preview the app on an unpublished theme, then follow the steps below:**

Go to **Theme setup** from the left sidebar -> Select the theme you want to apply -> Click the "Go to Theme Editor **> App Embeds**" -> Click the **Save** button in the upper right corner.

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

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

If you want to preview the application on an unpublished theme, then follow the same steps as above.


# Enable App & Disable App

## Enable **App**

From the app admin, click the **Integrate Theme** on the left sidebar -> Select the theme -> Click the "Go to **Theme Settings > App Embeds**" button -> Enable the app by swiping the button to turn blue -> Click the **Save** button

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

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

## Disable **App**

From the app admin, click the **Integrate Theme** on the left sidebar -> Select the theme -> Click the "Go to **Theme Settings > App Embeds**" button -> Enable the app by swiping the button to turn gray -> Click the **Save** button

After you disable the app, the **Add to quote** / **Request a quote** button or **quote form** will disappear automatically.


# Create & Edit quote form

## 1. Create a quote form

The application automatically generated a form with basic fields. You can completely personalize by editing this form.

To edit the form, go to Quote Form in the left menu.

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

## 2. Active form & Set the display rules

In this tab, you can set the display rules for the Quote button and form.

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

* **All Products**: Display quote form/button on all products
* **Choose Products**: Display quote form/button on selected products
* **Choose Collections**: Display quote form/button on selected collections
* **Conditions**: Select display rules by vendor, product types, product tags, out of stock...
* **Show by language**: Select the language you want to display the form/button quote if the store uses multiple languages
* **Show by country**: Select the country where you want to display the quote form/button
* **Show by Customer tag**: Show or not show quote form/button for tagged customers (this option is only suitable for logged in customers)

**Display quote button in product page**

![](/files/NbYNqWaQWm2Ec4qNxqKU)

**Display quote form in product page** (This option only applies to ***Quick quote*** mode)

![](/files/G9zMtMv1fENLQUSa8QTA)

## 3. Form fields

At this tab, you add custom fields to the form according to your needs. The application has automatically created the basic fields, you can completely edit or delete these fields.

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

### **Add validations to the field**

To do this, go to **Edit** field -> **Validations**

At this tab, you can set required field or add other required attributes such as: url, date, number, min, max, text length, phoneUS, etc.

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

## 4. Form styles

At this tab, you can customize the design for the form, the fields. You can also personalize the design by adding your own css code in the Custom CSS box (scroll down to the bottom).

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

## 5. Email settings

In this tab, you set up the email to receive notifications when the form is submitted, the email content is sent to the store owner, and the email content is sent to the customer.

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

You need to pay attention to completely and correctly fill in the required information fields so that sending and receiving emails after the customer submits the form goes smoothly.

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

You also can set up automatic emails to send to form submitters after the form is submitted (***This feature is only available from the Pro plan***).

<figure><img src="/files/4VlaLh5fAHEWaY9qB7tC" alt=""><figcaption></figcaption></figure>

## 6. Customer email notifications

In this tab, you edit email content to customers when the quote is updated.

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

## 7. Email integrations

### 7.1 Shopify customers

**Create customer after submitted form** : Add the person who submitted the form to the store's customer list.

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

* If "**Verified email**" is checked: Shopify's confirmation email feature is enabled, an email will be sent to the form submitter.
* If "**Send email invite**" is checked:  enable the Shopify feature of sending email invitations to become store customers, this customer will have an account and password to access the store.

### 7.2 Shopify draft order

You can add all form field data to order notes.

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

### 7.3 Email service list

You can integrate quote form with UP TO 11 of THE MOST POPULAR EMAIL SERVICES for your email marketing campaigns.

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

### 7.4 Integrate form with Zapier

* Log in to Zapier account
* Create new Zap

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

* Go to Trigger -> Webhook -> Get the Webhook URL  (must select the type of URL you want)

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

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

* Copy and paste this URL into the Webhook box in the Quote app and click the Connect button.

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

### 7.5 Integrate form with Zoho CRM

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

* Create the "**Server based Applications**"
  * **Homepage URL**: web domain
  * **Authorized Redirect URIs**: [https://{domain}/apps/request-a-quote/zoho/callback](about:blank)

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

* Open URL: <https://{domain}/apps/request-a-quote/zoho/connect?form_id={formId}>   (Please be sure to fill in the correct ID quote form)
* Check "**I allow new api domain to access...**" -> Click the **Accept** button
* A success message is displayed and you have a Token to connect

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

* Copy and paste the Client ID and Client Secret into the corresponding fields in the Quote application -> click the Connect button

<figure><img src="/files/5y7AwkkYuUpR1o2p9k6L" alt=""><figcaption></figcaption></figure>

## 8. Translate

In this tab you can translate the form title, description, button label, success message.

**Note: List of languages ​​created in Translate tab in Settings.**

<figure><img src="/files/7tW9DNCiHCyjtjeocZUl" alt=""><figcaption></figcaption></figure>

## 9. Results

After completing the form setup, you will get the form displayed as follows:

### 9.1 Quick quote mode

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

### 9.2 Add to quote mode

<figure><img src="/files/6kcYvDRmSKCTkHu2PIiM" alt=""><figcaption></figcaption></figure>

## 10. View quote history

To make it possible for customers to review all quote requests they have submitted, store owners can use the following link to create a navigation menu: **<https://yourwebsitedomain/apps/request-a-quote/history>**

![](/files/gOTdxnKwA7MvPvCZ14nD)

![Quote detail](/files/zlfyqcTsdZkHkRyQelXy)


# Multi-form

The feature of creating multiple forms is only available in the highest plan of the application (ADVANCED PLAN)

When you upgrade your app to the ADVANCED Plan, you can create different forms without having to follow the same template. With this feature, you can completely apply to products, product groups, collections with completely different properties that with just one form you cannot do.

Basically setting up the forms of this Advanced plan is still the same as if you were using a single form plan.

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

**Note: When you use Multi-form, you can only use the Request a Quote (Quick quote) feature, can't use the Bulk quotation (Add to Quote) feature.**


# Settings

This step needs to be done after you have finished creating the quote form.

## 1. General

In this tab, you can enable/disable the application, switch the feature from **Add to quote** to **Quick quote** and vice versa.

* **Add to quote**: Add the product to a quote list (The quote list can be viewed by clicking the ***View Quote*** button or by going to the link: ***<https://yourdomain/apps/request-a-quote/index>***)
* **Quick quote**: Request a quote for a product

You can also hide the add to cart button and the price of the product, select how to add quote button/form to the store. In Settings -> General, you can also enable a special features: **Approve Quotes Automatically,  automatically create the draft order and send invoice email.**

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

### 1.1 Hide product price only

If you only want to hide prices for products without showing buttons or forms, then follow these steps:

* Go to **Settings** -> **General**
* Enable **Hide price**
* Enable **Hide Quote button on Collection**
* Enable **Hide Quote button/form on Product**

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

To apply the feature to any product or collection, you need to go to **Quote Form** -> **Display Rules** to set up according to the rules you want.

### 1.2 Login to see price

If you want customers to be logged in to see the prices of the products, follow these steps:

* Go to **Settings** -> **General**
* Enable **Login to see price**

<figure><img src="/files/1LRa0L6DTiHbmQ1l61BD" alt=""><figcaption></figcaption></figure>

To apply the feature to any product or collection, you need to go to **Quote Form** -> **Display Rules** to set up according to the rules you want.

When the feature is applied, a *Login to see price* button will appear on each applicable product. You can completely customize the text for this button.

### 1.3 Login to see quote button

* This setting only applies to logged in customers.
* Go to **Quote forms** -> **Edit form** -> **Active form** -> **Show button/form on:** -> **Show by Customer tag** -> Enter the tags of the customer groups you want to apply

### 1.4 Change the quantity of 1 product added to the quote

By default, when adding a product to a quote, its quantity is **1**.  If you want to allow customers to change the quantity of a product added to the quote, turn on the **Quote Item Quantify feature** in **Settings** -> **General** -> Check the **Quote item quantity** option.

After enabling this feature, the quote form will display a field so that the customer can change the quantity of the product.

<figure><img src="/files/005pQ5W8F7eEBgTMzFB2" alt=""><figcaption></figcaption></figure>

### 1.5 Tracking UTM source

This feature helps store owners know which source customers come to the product from.

To enable this feature, go to **Settings** -> **General** ->  Advanced features -> Then check the "**Tracking UTM source**" option.

The format of a url that includes the UTM tracking parameter: [https://storeify-quick-quote-demo.myshopify.com/products/the-multi-location-snowboard?**utm\_source=google\_ads**](https://storeify-quick-quote-demo.myshopify.com/products/the-multi-location-snowboard?utm_source=google_ads)

To see the traffic source, go to **Quote Submissions** -> **View detail (Pen icon)**&#x20;

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

## 2. Translate (Multi-language)

At this tab, you can translate to your desired language. The default language is English. Especially the application also supports multi-language feature.

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

Besides manually translating by filling in the corresponding text fields, you can also use the app's auto-translation feature. By clicking the "Auto translate" button and waiting a few seconds, the app will complete the translation for you.

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

To translate the title and label of the form fields, you need to go to **Quote Forms** -> **Edit -> Form Fields** -> Select the field to edit by clicking on the **pen icon** -> Select the language in the upper right corner of the popup form -> Add the language to the boxes you want to translate -> Click the Save button.&#x20;

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

To translate the title, description, button label, success message of the form, you need to go to **Quote Forms** -> **Edit -> Translate**

<figure><img src="/files/7tW9DNCiHCyjtjeocZUl" alt=""><figcaption></figcaption></figure>

**Note: List of languages ​​created in Translate menu.**

## 3. Customer Email Notifications

In this tab, you create email messages to notify customers automatically whenever the quote's status changes .

#### Use the following short-codes for email content:

* **{quote\_id}**: Quote ID&#x20;
* **{quote\_created\_time}**: Quote created time&#x20;
* **{quote\_expire\_time}**: Quote expire time&#x20;
* **{customer\_name}**: Customer name&#x20;
* **{store\_name}**: Your store name&#x20;
* **{table\_product}**: The table displays the list of products in quote&#x20;
* **{message}**: The content you enter in the Message to Customer box when you edit the quote
* **{quote\_edit\_link}**: A button link for the customer to view and edit the quote online (<mark style="color:$warning;">requires a draft order to exist</mark>)

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

## 4. Product Table

This tab is where you configure the display for the product details table in the email. You can disable/enable display for SKU, Option, Price, QTY, TAX, UTM source, Product note, Metafields.

<mark style="color:$warning;">Displaying "Product note" is available with the Add to quote mode.</mark>

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

### Product Note

The Product Note field will appear on the quote list page so that customers can add notes to each product before submitting a quote request.

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

The store owner can view the product note via:

**Email notification**

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

**Quote submissions**

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

## 5. Print PDF

This feature makes it possible for store owner and customers to print quotes in PDF format.

There are two options for creating a PDF template:

### 5.1 Create PDF template in the Print PDF tab

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

[<mark style="color:$warning;">**Enable PDF Template Designer**</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">(</mark>](#user-content-fn-1)[^1]*<mark style="color:$warning;">Create your own professional PDF design template</mark>*[<mark style="color:$warning;">): When this feature is enabled, the PDF template generated by it will take precedence over the PDF template generated in the Translate tab.</mark>](#user-content-fn-1)[^1]

### 5.2 Create PDF template in the Translate tab

Go to **Translate** -> Scroll down to the **PDF Content** section -> Edit the content and language of the PDF file. Use the explained short-codes to add to the file content.

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

### 5.3 Print quote to PDF (for customer)

Once the PDF printing feature has been enabled, the customer can print the quote request just submitted via the form.

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

### 5.4 Print quote to PDF (for store owner)

Please refer to the following instructions: <https://quote-guide.storeify.app/quote-submissions#print-quote-to-pdf-for-store-owner>

The app can also automatically generate PDF files for the store owner when a customer submits a form. To activate this feature, go to **Settings** -> **General** -> **Automation** -> **Automatically attach PDF quote to merchant notification email** -> Tick it.

## 6. Enable Widget

**Show ‘View quote’ widget**: enable if you want to show this button. This allows customers to see what’s they have added in the quote list. The number of added products is updated in real time, clicking on the widget will bring you to the Quote list page.

**Note**: W*idget setting tab only appears when you use the Add to quote feature (add many products to the quote)*.

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

An here is the result

![](/files/MX1TA7JLOuqG2ovIi0cW)

## 7. Shipping

You can create your own shipping rates or use shipping rates already created in the Shopify store admin to add to the quote form.

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

## 8. CSS

This is the section of customizing the interface using CSS code.

[^1]:


# SMTP

At this menu, you can configure your own email server service. In some cases, when you use the application's email server, emails sent to you or your customers may end up in the spam box. To prevent this, you should use your own email server and see the provider's parameters to fill in this section.

### 1. Use SMTP authenticate

In this guide, we will guide you to set up SMTP with Gmail (if you use another email service, the setup is similar, just the parameters, you can get these parameters from the email service provider or search on Google).

**Important:** To create an app password, you need 2-Step Verification on your Google Account.

If you use 2-Step-Verification and get a "password incorrect" error when you sign in, you can try to use an app password.

1. Go to your [Google Account](https://myaccount.google.com/).
2. Select **Security**
3. Under "Signing in to Google," select **2-Step Verification**.
4. At the bottom of the page, select **App passwords**.
5. Enter a name that helps you remember where you’ll use the app password.
6. Select **Generate**.
7. To enter the app password, follow the instructions on your screen. The app password is the 16-character code that generates on your device.
8. Select **Done**.

**Final**: Go to the app admin -> Settings -> SMTP and put your Gmail SMTP information

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

### 2. Use OAuth 2.0

This guide covers how to configure SMTP with OAuth 2.0 for three email providers: **Google (Gmail)**, **Microsoft Personal (Outlook.com / Hotmail)**, and **Microsoft 365 Business**.

***

### **Prerequisites**

* In your app's SMTP settings, set **Authentication method** to **OAuth 2.0**.
* Note down your app's **Redirect URI** (shown in the app settings page) — you will need it when registering your OAuth app. It looks like: [https://quote.storeify.app/oauth/callback](< https://quote.storeify.app/oauth/callback >) (<mark style="color:$danger;">**IMPORTANT**</mark>)

***

### **1. Google (Gmail)**

#### **Step 1 — Create a Google Cloud Project**

1. Go to Google Cloud Console.
2. Click the project dropdown at the top → **New Project**.
3. Enter a project name (e.g., "SMTP OAuth") → **Create**.
4. Make sure the new project is selected.

#### **Step 2 — Enable the Gmail API**

1. Go to **APIs & Services** → **Library**.
2. Search for **Gmail API** → click it → **Enable**.

#### **Step 3 — Configure OAuth Consent Screen**

1. Go to **APIs & Services** → **OAuth consent screen**.
2. Choose **External** → **Create**.
3. Fill in the required fields:
   * **App name**: any name (e.g., "SMTP OAuth")
   * **User support email**: your email
   * **Developer contact email**: your email
4. Click **Save and Continue** through the remaining steps.
5. Under **Test users**, add the Gmail address you plan to use for sending emails.

#### **Step 4 — Create OAuth 2.0 Credentials**

1. Go to **APIs & Services** → **Credentials**.
2. Click **+ CREATE CREDENTIALS** → **OAuth client ID**.
3. **Application type**: select **Web application**.
4. **Name**: any name.
5. Under **Authorized redirect URIs**, click **+ ADD URI** and paste your app's redirect URI: [https://quote.storeify.app/oauth/callback](< https://quote.storeify.app/oauth/callback >) (<mark style="color:$danger;">**IMPORTANT**</mark>)
6. Click **Create**.
7. Copy the **Client ID** and **Client Secret**.

#### **Step 5 — Configure in App**

1. Select provider: **Google**.
2. Paste the **Client ID** and **Client Secret**.
3. Enter the **Email** address (must be the same Gmail you added as a test user).
4. Click **Save**, then click **Connect with your email above**.
5. Sign in with the same Gmail account and grant permission.

> <mark style="color:$warning;">**Note**</mark>**:** While the app is in "Testing" status in Google Cloud, the OAuth token expires every 7 days and users have to reconnect. To avoid this, submit the app for verification in Google Cloud Console → OAuth consent screen → **Publish App**.

***

### **2. Microsoft Personal (Outlook.com / Hotmail)**

Use this option if you want to send emails from a **personal** Microsoft account (e.g., `yourname@outlook.com`, `yourname@hotmail.com`, `yourname@live.com`).

#### **Step 1 — Register an App in Azure**

1. Go to Azure Portal — App registrations.
2. Click **+ New registration**.
3. Fill in:
   * **Name**: any name (e.g., "SMTP OAuth")
   * **Supported account types**: select **Personal Microsoft accounts only**
   * **Redirect URI**: select **Web**, then paste your redirect URI: [https://quote.storeify.app/oauth/callback](< https://quote.storeify.app/oauth/callback >) (<mark style="color:$danger;">**IMPORTANT**</mark>)
4. Click **Register**.
5. On the app's **Overview** page, copy the **Application (client) ID**.

#### **Step 2 — Create a Client Secret**

1. Go to **Certificates & secrets** → **Client secrets** tab.
2. Click **+ New client secret**.
3. Enter a description and select an expiry period.
4. Click **Add**.
5. **Immediately** copy the **Value** (this is your Client Secret — it will not be shown again).

#### **Step 3 — Configure API Permissions**

1. Go to **API permissions**.
2. Click **+ Add a permission** → **APIs my organization uses** tab → search for **Office 365 Exchange Online** (or select from Microsoft APIs → **SMTP**).
   * If Office 365 Exchange Online is not available for personal accounts, you can skip this — the default permission with the scope `SMTP.Send` requested during OAuth login is sufficient.
3. Make sure the app has the `SMTP.Send` permission.

#### **Step 4 — Enable SMTP for Your Mailbox**

For personal Outlook.com / Hotmail accounts, SMTP is usually enabled by default. If it's not working:

1. Go to Outlook.com → **Settings** (gear icon) → **View all Outlook settings**.
2. Go to **Mail** → **Sync email**.
3. Under **POP and IMAP**, make sure **Let devices and apps use POP** or **IMAP** is enabled (this also enables SMTP AUTH).

#### **Step 5 — Configure in App**

1. Select provider: **Microsoft Personal (Outlook.com / Hotmail)**.
2. Paste the **Client ID** and **Client Secret**.
3. Enter the **Email** address (your Outlook.com / Hotmail / Live.com address).
4. **Tenant ID** is NOT required for personal accounts.
5. Click **Save**, then click **Connect with your email above**.
6. Sign in with the same Microsoft personal account and grant permission.

> <mark style="color:$danger;">**Important**</mark>**:** The "From" email address **must match** the Microsoft account you authenticated with. Sending from a different address will cause emails to be rejected or go to spam.

***

### **3. Microsoft 365 Business**

Use this option if you want to send emails from a **work or school** Microsoft 365 account (e.g., `yourname@yourcompany.com`).

#### **Step 1 — Register an App in Azure**

1. Go to Azure Portal — App registrations.
2. Click **+ New registration**.
3. Fill in:
   * **Name**: any name (e.g., "SMTP OAuth Business")
   * **Supported account types**: select one of:
     * **Accounts in this organizational directory only** — if only your organization will use it
     * **Accounts in any organizational directory** — if multiple organizations may use it
   * **Redirect URI**: select **Web**, then paste your redirect URI: [https://quote.storeify.app/oauth/callback](< https://quote.storeify.app/oauth/callback >) (<mark style="color:$danger;">**IMPORTANT**</mark>)
4. Click **Register**.
5. On the app's **Overview** page, copy the **Application (client) ID** and **Directory (tenant) ID**.

#### **Step 2 — Create a Client Secret**

1. Go to **Certificates & secrets** → **Client secrets** tab.
2. Click **+ New client secret**.
3. Enter a description and select an expiry period.
4. Click **Add**.
5. **Immediately** copy the **Value** (this is your Client Secret).

#### **Step 3 — Configure API Permissions**

1. Go to **API permissions**.
2. Click **+ Add a permission** → **Microsoft APIs** → **Microsoft Graph**.
3. Select **Delegated permissions**.
4. Search and add: **SMTP.Send**, and **offline\_access**.
5. Click **Add permissions**.
6. If you have admin access, click **Grant admin consent for \[Your Organization]** (recommended but not always required).

#### **Step 4 — Enable SMTP AUTH for the Mailbox**

Microsoft 365 Business often has SMTP AUTH **disabled** by default. An admin must enable it:

**Option A — Microsoft 365 Admin Center:**

1. Go to Microsoft 365 Admin Center.
2. Go to **Users** → **Active users** → select the user.
3. Go to **Mail** tab → **Email apps**.
4. Check **Authenticated SMTP** → **Save**.

**Option B — PowerShell:**

Set-CASMailbox -Identity "<user@yourcompany.com>" -SmtpClientAuthenticationDisabled $false

#### **Step 5 — Configure in App**

1. Select provider: **Microsoft 365 Business**.
2. Paste the **Client ID** and **Client Secret**.
3. Enter the **Tenant ID** (Directory ID from Step 1).
4. Enter the **Email** address (your Microsoft 365 work email).
5. Click **Save**, then click **Connect with your email above**.
6. Sign in with the same Microsoft 365 work account and grant permission.

> <mark style="color:$danger;">**Important**</mark>**:** If your organization uses Conditional Access policies, you may need an admin to whitelist this app or allow SMTP AUTH for the specific mailbox.

***

### **Which Provider Should I Choose?**

| Feature                        | Google (Gmail)  | Microsoft Personal                    | Microsoft 365 Business                 |
| ------------------------------ | --------------- | ------------------------------------- | -------------------------------------- |
| **Email address**              | @gmail.com      | @outlook.com, @hotmail.com, @live.com | @yourcompany.com (custom domain)       |
| **Account type**               | Personal Google | Personal Microsoft                    | Work / School Microsoft                |
| **Tenant ID needed**           | No              | No                                    | Yes                                    |
| **Daily send limit**           | \~500 emails    | \~300 emails                          | \~10,000 emails                        |
| **Azure account type setting** | —               | "Personal Microsoft accounts only"    | "Accounts in organizational directory" |
| **SMTP Host**                  | smtp.gmail.com  | smtp-mail.outlook.com                 | smtp.office365.com                     |

***

### **Troubleshooting**

| Error                                                                    | Cause                                                                                                           | Fix                                                                                                                            |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **AADSTS9002346** — "configured for use by Microsoft Account users only" | You selected **Microsoft 365 Business** but the Azure app is registered with "Personal Microsoft accounts only" | Go to Azure Portal → App registration → Authentication → change **Supported account types** to include organizational accounts |
| **AADSTS50020** — "not in the tenant"                                    | The email account doesn't belong to the tenant specified                                                        | Check Tenant ID is correct, or the user account belongs to that organization                                                   |
| **Connection failed** with no error                                      | Missing Client Secret, wrong redirect URI, or wrong Client ID                                                   | Double-check all credentials                                                                                                   |
| **Emails going to spam**                                                 | The "From" email doesn't match the authenticated email                                                          | Make sure the email field matches the account you sign in with                                                                 |
| **Token expired**                                                        | Google test mode tokens expire after 7 days. Microsoft tokens are typically longer.                             | For Google: publish your OAuth app. For Microsoft: reconnect when prompted                                                     |
| **SmtpClientAuthenticationDisabled**                                     | SMTP AUTH is disabled for the M365 mailbox                                                                      | Admin must enable SMTP AUTH in Microsoft 365 Admin Center                                                                      |


# Advanced Features

## 1.  Approve Quote Automatically

Quotes can be automatically approved in 2 cases:

### 1.1 Approve quotes and create draft orders automatically without any conditions

Go to **Settings** -> **General** -> Check the "A**utomatically approve quotes and create draft orders**"&#x20;

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

### 1.2 Approve the quote based on the customer's bargaining price

For this feature to work, you need the following conditions:

* No hidden the price
* Turn on the "**Your price**" feature
* Set a discount percentage, the application will rely on this percentage and the customer's price to decide whether the quote will be automatically approved or not
* \[Required] Turn on the "**Automatically approve quotes and create draft orders**" feature

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

## 2. Editing the quote request from the customer

To activate this feature, the store owner has two options:

### 2.1 Activate in Settings

Go to **Settings** -> **Customer email notifications** -> Scroll down to "**Email template**" -> **Select email type** -> Choose "**Accept and convert quote to order**"  or "**Update quote**"-> In the email content, add the short-code: <mark style="color:$primary;">**{quote\_edit\_link}**</mark> for the Edit quote button in the appropriate place.

This is a general setting; if you use multiple forms, the email response content will be the same for all forms.

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

### 2.2 Activate in Form

If you want the content of the automated email responses sent to customers to vary depending on the form, you need to use this option.

Go to **Quote forms** -> **Edit form** -> **Customer email notifications** -> Untick the "**Use settings**" option -> Add "View & Edit Quote" buttons for two cases: "**Accept and convert quote to order**" and "**Edit quote**" by using select-box above the content box.

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

### 2.3 After the quote request is updated or accepted by the store admin:

A notification email with a button to view the quote will be sent to the customer.

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

After clicking the "View Quote" button in the notification email, the customer will be taken to their quote request customization page (no login needed). Here, the customer can: **accept quote**, **decline quote**, or **send a message to the merchant** requesting changes to the quote.&#x20;

<mark style="color:$warning;">Note</mark>: *The link for the "View quote" button is only valid for 7 days*.

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

### **2.4 Accept quote by customer**

* If a draft order has not been created: The store owner will receive an email notifying them that the customer has accepted the quote and that the quote request has been converted into a draft order, which will then be invoiced.
* If a draft order has already been created: the customer will be taken to the checkout page.

On this page, the customer can also view the history of messages exchanged between them and the merchant.

## 3. Auto send email invoice after draft order is created

This feature is useful in the following cases:

* Store admin wants after Quote is automatically approved, an email invoice will be automatically sent to the customer
* Store admin wants after clicking the **Convert to Draft Order** button, an email invoice will be automatically sent to the customer

To enable this feature, go to **Settings** -> **General** -> then check the "**Send email invoice automatically after draft order is created**" option.

## 4. Add Shipping (Advanced plan only)

This is an advanced feature that helps store owner add shipping fee options to the quote form for customer to choose from.

To use this feature, go to **Settings** -> **Shipping** -> enable the feature and set shipping rate.

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

You can create new shipping rates or use shipping rates already set up from your store.

After setting the Shipping rate option, the form will display as image below:

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

## 5. Apply Discount (Advanced plan only)

To enable this feature: go to **Settings** -> **General** -> **Automatically apply discount to draft order**

Discounts will be automatically applied to product prices when a quote request is approved and converted to a draft order.

**Note: Discounts are set in store admin, not in app admin.**

## 6. Quote expiration time, reminder email

You can set the number of days the quote will expire (the quote will be cancelled)

Go to **Settings** -> **General**

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

To set up reminder emails about expired quotes for customers, go to **Settings** -> **Customer email notifications**

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

## 7. Automatically analyzes theme selectors and inserts integrated code using AI

<mark style="color:$warning;">Note</mark>: This feature is only needed if the product prices and the "Add to Cart" button are not hidden as configured in **Settings**.

The reason why product prices and the "Add to Cart" button are not hidden may be because the app is not detecting the theme's CSS selectors that govern these elements (the theme is faulty or has been customized and does not meet Shopify's standard structure).

In the app backend, go to **Integrate Theme** -> Select theme (the app must be enabled for the theme) -> Click the "**Analyze Theme**" button in the **Auto-Detect Theme Selectors** section.

The app uses AI to detect CSS selectors that influence product pricing, and "Add to cart" button on the theme to be added to the app's settings to enable the app to perform hidden tasks.

After the app has detected the selectors, click the "**Apply to Settings**" button.

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


# Quote submissions

In this section, display the list of quotes that have been submitted, view details, edit, delete for each submission, and add quote (by store owner).

You can search for submissions by Submission ID, Draft Order ID, Customer Email, or Product Name.

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

With quote submission details view you can edit the price and quantity of the product. Especially if the store owner agrees with the quote, he can convert the quote to draft order. Then he can easily add tax, shipping or discount code and send the invoice.

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

## 1. Add quote form backend

Go to **Quote submissions** -> Click the "**Add quote**" button in the upper right corner.

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

After the quote is generated, notification emails will be automatically sent to customers using the **Customer email notification** templates created in [**Settings**](https://quote-guide.storeify.app/settings#id-3.-customer-email-notifications) or in [**Quote forms**.](https://quote-guide.storeify.app/create-and-edit-quote-form#id-6.-customer-email-notifications)

## 2. What if the product price is 0?

In case the product is priced at 0 by the store owner, when **converting to draft order**, the store owner needs to **add a custom item** with the price and quantity agreed with the customer.

![](/files/9fgZZZQBj1GKmQVZhCnd)

And then send the invoice

![](/files/bQHIrzY87O3apv8QQ0Rc)

## 3. Print quote to PDF (for store owner)

The store owner can print the quote to a PDF file regardless of the state of the quote. In addition to product information, printed content may also include a message (annotation) of the store owner.

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

## 4. Download quote submissions

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


# Upgrade and Downgrade

To upgrade or downgrade the plan you are using, go to the **Dashboard** in the left side menu -> **Pricing plans**.

In this section, the plan that you are using is displayed, to change the plan you just need to select the desired plan and press the **Upgrade now** or **Downgrade now** button.


# Uninstall app

If you no longer need the S: Request a Quote & Hide price app, you can uninstall it from your Shopify admin in just a few steps.

***

#### Step 1: Go to the Apps Section <a href="#step-1-go-to-the-apps-section" id="step-1-go-to-the-apps-section"></a>

1. Log in to your Shopify admin
2. From the left-hand menu, click Settings > Apps

***

#### Step 2: Locate the App <a href="#step-2-locate-the-app" id="step-2-locate-the-app"></a>

1. In the Installed apps list, find  Storeify Request a Quote
2. Click the three-dot (⋯) menu next to the app

***

#### Step 3: Uninstall the App <a href="#step-3-uninstall-the-app" id="step-3-uninstall-the-app"></a>

1. From the dropdown menu, click Uninstall
2. Confirm the uninstallation when prompted

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

#### Important Notes <a href="#important-notes" id="important-notes"></a>

* Once uninstalled, the app will be removed from your store immediately
* Any app-related configurations may be deleted
* Billing for the app will stop according to Shopify’s billing policy

***

#### Need Help Before Uninstalling? <a href="#need-help-before-uninstalling" id="need-help-before-uninstalling"></a>

If you’re experiencing issues or considering uninstalling due to a problem, we recommend contacting support first. Our team can help resolve most issues quickly.


# FAQs

<details>

<summary>How to customize the button style?</summary>

By default, the application uses the website theme's styles. If you want to customize the quote button style, follow these instructions:

* For product page: Go to **Online Store** -> **Themes** -> **Customize** -> Select "**Product**" in the top selectbox -> Select a product template -> Select Quote app block in the left menu -> Edit quote button style

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

* For collection page: We have to customize with CSS code. Please go to **Settings** -> **Custom Styles** -> Paste the CSS code (*can contact us for help*)&#x20;

</details>

<details>

<summary>How to set it up so that only logged in customers can see the prices?</summary>

Please read this guide: <https://quote-guide.storeify.app/settings#id-1.2-login-to-see-price>

</details>

<details>

<summary>How to set it up so that only logged in customers can see the quote button?</summary>

Please read this guide: <https://quote-guide.storeify.app/settings#id-1.3-login-to-see-quote-button>

</details>

<details>

<summary>Why do I not receive an email notification when the quote form is submitted?</summary>

The cause of this problem may be that you have not set up the receive email field and the response email field in **Email Settings** (Go to **Quote forms** -> **Edit** form -> **Email Settings**): <https://quote-guide.storeify.app/create-and-edit-quote-form#email-settings>

If you have done the above step but still do not receive notification emails, you need to do an additional step of configuring SMTP for the app (go to App backend -> **Settings** -> **SMTP**).

**Please note: to configure SMTP for the app, you need to enable 2-factor authentication for your account and create an alternative password (app password), which will be filled in the password field in the app's SMTP menu.**

If you are using Gmail, you can refer to the following instructions: <https://quote-guide.storeify.app/settings#id-4.-smtp>

</details>

<details>

<summary>Why does the email notification content not display data fields but display short-codes?</summary>

The reason for the problem is that the pre-filled short-code in the email content is just a sample short-code and it can vary from store to store. In the backend app, go to **Quote Forms** -> **Edit form** -> **Email Settings** -> **Email content** -> Reselect the required fields using **Select box**

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

</details>

<details>

<summary>Why does the RFC error appear after submitting the form?</summary>

The cause of this error is that you chose the wrong value of the Submitter Email Address field in **Email Settings** (**Quote forms** -> **Edit form**). Please check and set the correct value for this field.

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

</details>

<details>

<summary>How to set up multi-language quote button in product page?</summary>

* Enable Use Multi Language for quote button ( go to **Themes** -> **Customize theme** -> **Products** -> **Product template** to do this)

![](/files/F438LO1rqNCj7e3s04QY)

* In app backend, go to Settings -> **Translate** -> Add other languages ​​besides default language.

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

</details>

<details>

<summary>In the notification email, the product table does not show product details, what should I do?</summary>

This issue usually occurs with Outlook, and is caused by Outlook blocking the display of hyperlinks. To troubleshoot the issue, you can refer to the six links: <https://learn.microsoft.com/en-us/troubleshoot/outlook/message-body/hyperlinks-not-working-in-outlook>

</details>

sdfddsfsfsdds


# Integrate code to theme

If you have any difficulty with integrating the code into the theme, do not hesitate to contact us via email: "storeifyapps\@gmail.com"

For test purposes, we highly recommend you activate the [app embeds](https://help.shopify.com/en/manual/online-store/themes/theme-structure/extend/apps#app-embeds) on an unpublished theme to avoid any unexpected results on your live theme.

**Steps to manage**

1. From app admin page, click **Integrate Theme** on the left sidebar.
2. Select the theme you want to show the quote function > click Go to **Theme Settings** > **App Embeds** button.
3. In **Theme Editor**, activate the app embeds of **S:Request a Quote & Hide Price** app > **Save** the changes.
4. Check the setting in the app again.
5. Check the result on the theme.

**Note:**

* Preview the theme if it is an unpublished theme
* If the app is installed to live theme, please check the live website

### 1. Integrate on Product

If your theme is an [Online Store 2.0](https://help.shopify.com/en/manual/online-store/themes/managing-themes/versions), please [add an app block](https://help.shopify.com/en/manual/online-store/themes/theme-structure/extend/apps#app-blocks) to your product template via Theme Editor.

![](/files/ANJF89B99uQHP355AfYW)

To change the position of the button, simply drag & drop.

![](/files/zpNijMCXV2BysYS5gl8Z)

Or you can use the short code integration:

1. Open the **sections/product-template.liquid** or **sections/main-product.liquid**
2. Insert the short code below into any position you want

```liquid
{% render 'storeify-quote',product: product %}
```

### 2. Integrate on Collection

1. Select a theme > Edit code > Create a new file **storeify-quote.liquid** in Snippets folder.

<figure><img src="/files/8WvjascehPrdjgb03OwO" alt=""><figcaption></figcaption></figure>

2. Insert liquid code below into **storeify-quote.liquid**

{% code title="storeify-quote.liquid" %}

```liquid
{% assign label_btn = "Request a quote" %}
{% if shop.metafields.storeifyquote %}
    {% assign locale_current = shop.locale %}
    {% assign storeify_quote_mode = shop.metafields.storeifyquote.quote_settings.mode %}
    {% assign quote_lang = shop.metafields.storeifyquote.quote_settings.lang %}
    {% if quote_lang contains locale_current %}
        {% if storeify_quote_mode == 1 %}
          {% assign label_btn = quote_lang[locale_current].btn_addquote  %}
        {% else %}
          {% assign label_btn = quote_lang[locale_current].call_for_price  %}
         {% endif %}
    {% else %}
        {% if storeify_quote_mode == 1 %}
          {% assign label_btn = quote_lang.default.btn_addquote  %}
        {% else %}
          {% assign label_btn = quote_lang.default.call_for_price  %}
        {% endif %}
    {% endif %}
{% endif %}
{% assign ify_col_ids = product.collections | map: 'id' | join: ',' %}    
<div class="ify-hide ify-quote-group ify-quote-group-{{product.id}}" data-targetid="{{product.id}}" data-targethandle="{{product.handle}}" data-collections="{{ ify_col_ids }}">
<button type="button" class="storeify-quote-btn-trigger-popup btn button button--primary ify-button-code" data-product="{{ product.handle }}">{{ label_btn }}</button>
{% assign productCollections = product.collections | map:'id' %}
<script id="ify_script_item_{{product.id}}">
    var storeifyRequestaquote = storeifyRequestaquote || {};
    storeifyRequestaquote.productdata = storeifyRequestaquote.productdata || {};
    storeifyRequestaquote.productdata['{{product.id}}'] = {"id":{{ product.id }},"title":{{ product.title | json }},"handle":"{{ product.handle }}","available":{{ product.available }},"vendor":"{{ product.vendor }}","type":"{{ product.type }}","tags":{{ product.tags | json }},"price":{{ product.price }}};
    storeifyRequestaquote.collections = storeifyRequestaquote.collections || {};
    storeifyRequestaquote.collections['{{product.id}}'] = {{ productCollections | json }};
</script>
<script id="ify_json_item_{{product.id}}" type="application/json">
{
  "productdata": {"id":{{ product.id }},"title":{{ product.title | json }},"handle":"{{ product.handle }}","available":{{ product.available }},"vendor":"{{ product.vendor }}","type":"{{ product.type }}","tags":{{ product.tags | json }},"price":{{ product.price }}},
  "collections": {{ productCollections | json }}
}
</script>
</div>
```

{% endcode %}

<figure><img src="/files/2EkBwlxNImcF8GG49jWR" alt=""><figcaption></figcaption></figure>

3. Insert the short code below into the collection product grid template. This file depends on the custom theme you are using. \
   In this guide, we will the **Dawn** theme > **snippets/product-card.liquid**&#x20;

{% code fullWidth="false" %}

```liquid
{% render 'storeify-quote',product: product_card_product %}
```

{% endcode %}

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

or **snippets/card-product.liquid**

```
{% render 'storeify-quote',product: card_product %}
```

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


# Search product on Quotes page

**Step 1**: Enable the option in the **Settings** -> **General** -> **Advanced features** -> **Show search product on the quote list page**

<figure><img src="/files/3tJ6EVpzLi1Z2LmJ1MG7" alt=""><figcaption></figcaption></figure>

**Step 2**: Add a liquid file into your theme

Select a theme > Edit code > Create a new file **quote-search.liquid** in Sections folder.

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

And insert liquid code below into **quote-search.liquid**

```
{%- if predictive_search.performed -%}
{
"results_count": {{ predictive_search.resources.products.size }},
"products": [
	{%- for product in predictive_search.resources.products -%}
    {%- unless forloop.first -%},{%- endunless -%}
	{%- if product.id != '' -%}
	{
		"available": {{ product.available | json }},
		"id": {{ product.id }},
		"handle": "{{ product.handle }}",
		"options": {{ product.options | json }},
		"variants": {{ product.variants | json }},
		"price": {{ product.price }},
		"tags": {{ product.tags | json }},
		"title": {{ product.title | json }},
		"type": {{ product.type | json }},
		"url": "{{ product.url }}",
		"vendor": {{ product.vendor | json }},
		"featured_image": "{{ product.featured_image.src | image_url }}",
		"collections": {{ product.collections | map: 'id' | json }}
	}
	{%- endif -%}
	{%- endfor -%}
]
}
{%- else -%}
  { "results_count": 0, "products": [] }
{%- endif -%}
```

Check result on the quote list page

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


# Convert products to Quotes from Cart page

The Add to quote button in the shopping cart page only works when you choose to use the Add product to quote page (Bulk quotation) feature.

**Step 1**: Enable the option in the Settings

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

**Step 2**: Add the button

<mark style="background-color:blue;">Online Store 2.0</mark>: Customize Theme -> Select Cart template -> Add section or block "Add to Quote"

<figure><img src="/files/5AQl09G7gYFmm0lx5zP4" alt=""><figcaption></figcaption></figure>

<mark style="background-color:orange;">Vintage theme</mark>: Insert the embedded code below into the **cart-template.liquid**

```
<button type="button" class="btn ify-cart-to-quote">Add to Quote</button>
```

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


# My Quotes navigation

Adding the My quotes page into your navigation menu

1. Go to **Online Store** > **Navigation,** select a menu and click **Add menu item**
2. Copy this URL <mark style="color:blue;">`/apps/request-a-quote/index`</mark>
3. Paste the URL value into the Link field
4. Click **Add** button

See the screenshot below:

![](/files/rAmECQvQeiy0uQtCLseG)

![](/files/qJwfC4sYaXsyjhzJan6U)


# How to get Client ID and Client Secret in Google Cloud Console

To get a **Client ID** and **Client Secret**, you must create **OAuth 2.0 credentials** within a project in the Google Cloud Console. The process involves setting up an OAuth consent screen and then generating the credentials for a specific application type.&#x20;

### Step-by-Step Guide

1. **Go to the Google Cloud Console**
   * Navigate to the Google Cloud Console and sign in with your Google account.
   * Select an existing project from the top menu, or create a new one if needed.
2. **Enable the Necessary API**
   * In the left-hand navigation menu, go to **APIs & Services** > **Library**.
   * Search for the API you need (e.g., "Google Sheets API," "Gmail API") and click on it.
   * Click the **Enable** button to activate the API for your project.
3. **Configure the OAuth Consent Screen**
   * In the left menu, go to **APIs & Services** > **OAuth consent screen**.
   * Select the **User type** (usually **External** unless you are a Google Workspace organization user) and click **Create**.
   * Fill in the required "App information," including the **App name**, **User support email**, and **Developer contact information**.
   * Click **Save and Continue** through the "Scopes" and "Summary" sections (you can define scopes later if needed).
4. **Create the OAuth Client ID and Secret**
   * In the left menu, go to **APIs & Services** > **Credentials**.
   * Click the **+ CREATE CREDENTIALS** button at the top and select **OAuth client ID** from the dropdown menu.
   * Select the appropriate **Application type** for your use case: **Web application**.
   * Provide a **Name** for your client ID (this is only for your reference within the console).
   * You  need to add **Authorized redirect URIs:** [ **https://quote.storeify.app/oauth/callback**](https://quote-guide.storeify.app/integration/ https:/quote.storeify.app/oauth/callback)
   * Click **Create**.&#x20;

#### Retrieve the Client ID and Client Secret&#x20;

A pop-up window will display your generated **Client ID** and **Client Secret**. Copy these values and store the **Client Secret** securely, as it should be treated like a password.&#x20;

You can revisit and view these credentials anytime from the Credentials page in the Google Cloud Console by clicking on the name of the client you created.

### See the detailed step-by-step screenshots from A to Z to get ***Google client ID and secret Key***:

<figure><img src="/files/6y1Ilbve9wZcpOIv9m7D" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2RMFge8hQ4yAe5jhGdHW" alt=""><figcaption></figcaption></figure>

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

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

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

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

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

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

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

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

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

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

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


# How to get Client ID, Tenant ID  and Client Secret in Microsoft Azure

To create a client ID, tenant ID, and client secret in Microsoft Azure, you need to register an application in Microsoft Entra ID (formerly Azure Active Directory).

PrerequisitesYou must have an Azure account with permissions to register applications in the Microsoft Entra tenant.&#x20;

### Step 1: Find your Tenant ID

1. Sign in to the Azure portal.
2. In the search bar, type "Microsoft Entra ID" and select the service from the results.
3. On the **Overview** page, find the **Directory (tenant) ID**.
4. Copy this ID and save it in a secure location.&#x20;

### Step 2: Create an App Registration (Client ID)&#x20;

1. In the Microsoft Entra ID menu, select **App registrations** under the "Manage" section.
2. Select **+ New registration**.
3. On the "Register an application" page:
   * Enter a meaningful **Name** for the application (e.g., "MyTestApp").
   * Under **Supported account types**, select an option based on your needs (e.g., "Accounts in this organizational directory only" is recommended for most applications).
   * **Redirect URI:** [**https://quote.storeify.app/oauth/callback** ](<https://quote.storeify.app/oauth/callback >) **(IMPORTANT)**.
4. Select **Register**.
5. After the app is created, you will be on its **Overview** page. Find and copy the **Application (client) ID**. This is your **client ID**.
6. Save the client ID in a secure location.&#x20;
7. Head over to **API Permission** section in your app and add **Microsoft Graph permissions**.

<figure><img src="/files/3EUqcX1VSjJ5jKrwIk8x" alt=""><figcaption></figcaption></figure>

8. Select **Delegated Permissions** for `IMAP.AccessAsUserAll`, `SMTP.Send` and `offline_access`, then click "Add permissions"

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

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

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

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

### Step 3: Generate the Client Secret&#x20;

1. From your app registration's left-hand menu, under "Manage", select **Certificates & secrets**.
2. Under the **Client secrets** section, select **+ New client secret**.
3. A dialog box will appear:
   * Provide a **Description** for the secret.
   * Select a duration for when the secret will **Expire**. Microsoft recommends choosing one year for easier tracking.
4. Select **Add**.
5. **Important**: The **Value** of the client secret is displayed only this one time. Be sure to copy the value immediately and save it in a secure location. You cannot retrieve it later. The **Secret ID** is not the value you need for authentication.&#x20;

You have now successfully obtained your tenant ID, client ID, and client secret, which are used to authenticate your application with Microsoft Entra ID


