Title: HULO Quotations
Author: huloglobal
Published: <strong>November 11, 2026</strong>
Last modified: November 11, 2026

---

Search plugins

![](https://ps.w.org/hulo-quotations/assets/banner-772x250.png?rev=3796139)

![](https://ps.w.org/hulo-quotations/assets/icon-256x256.png?rev=3796139)

# HULO Quotations

 By [huloglobal](https://profiles.wordpress.org/huloglobal/)

[Download](https://downloads.wordpress.org/plugin/hulo-quotations.0.1.3.zip)

 * [Details](https://wordpress.org/plugins/hulo-quotations/#description)
 * [Reviews](https://wordpress.org/plugins/hulo-quotations/#reviews)
 *  [Installation](https://wordpress.org/plugins/hulo-quotations/#installation)
 * [Development](https://wordpress.org/plugins/hulo-quotations/#developers)

 [Support](https://wordpress.org/support/plugin/hulo-quotations/)

## Description

HULO Quotations turns “can you send me a quote?” into a tidy, trackable workflow
on any WordPress site: customers ask, you price the quote and e-mail it from your
site, they accept it online, and with HULO Payments they pay straight away.

**Customers ask for a quote**

 * A “Quote request form” block, or the `[hulo_quote_request]` shortcode, on any
   page. `[hulo_quote_request item="ID"]` asks about one saved catalogue item.
 * Each request lands under HULO  Quotations as a _requested_ quote, with known 
   items already priced. You get an e-mail with the details, and the customer gets
   an acknowledgement with their reference (your own wording; at most one a day 
   per address, and nothing the requester typed is copied into it).
 * A hidden honeypot field and a limit of 10 requests an hour per visitor address
   and per e-mail address keep bots and floods out. Behind a proxy or CDN, list 
   it in `HULO_TRUSTED_PROXIES` (see the FAQ).
 * Works on cached pages: visitors who are not signed in need no expiring WordPress
   nonce to send the form.

**Build and price quotes**

 * Quote builder with free-text lines and your own saved catalogue items (name, 
   SKU, price, tax rate), quantities, per-line discounts, a quote-level percent 
   or fixed discount, VAT, validity, notes, terms and internal notes. Prices can
   be typed as 1,850.00 or 1.850,00.
 * Quote in another currency when you need to: each quote keeps its amounts in its
   own currency (nothing is converted), and the figures and reports show each currency’s
   total on its own line.
 * Link a quote to a WordPress user (find any account by name, e-mail address or
   username), and choose the member of staff the quote is “prepared by”.
 * Safe sequential numbering (prefix-year-number, never issued twice, even under
   load).

**Send, accept, track**

 * “Send to customer” e-mails the quote from your site: your own subject and text,
   a button to the customer’s quote page, and the branded PDF attached. It is sent
   as the member of staff who prepared the quote (their name on the From line, replies
   to them). “Test send” shows you the e-mail and PDF exactly as the customer will
   see them.
 * Prefer to send it yourself? “Mark as sent” opens the quote for the customer’s
   response; then share the PDF or the customer link however you like, or let “Write
   the e-mail in your mail app” open a ready-written message in your own e-mail 
   program.
 * Preview the customer’s page and the e-mail before you send. Your own visits while
   signed in are never counted as the customer opening the quote.
 * The customer’s quote page shows the lines and totals, prints cleanly, offers 
   the PDF, and lets them **accept with a typed-name signature** or decline. You
   are e-mailed the response.
 * Reminders, checked every hour: one reminder for a quote the customer has not 
   opened after a number of days you choose, and one shortly before a quote expires.
   Each goes out at most once per quote.
 * Every step lands in the quote’s activity trail: created, sent, opened, reminded,
   accepted or declined, paid, expired, comments. Optional “first opened” e-mail
   to you.
 * Each quote is valid for a number of days from the day it is sent; it expires 
   on its own at the end, and you can extend or revive it in one click. Duplicate
   a quote, or revise it (the original is superseded so only one version can be 
   accepted).
 * Take payment with [HULO Payments](https://huloglobal.com/wordpress-plugins/payments/),
   our own payments plugin: when the customer accepts, a pay link is created at 
   exactly the quoted total and they go straight to the payment page. Prefer to 
   check first? Switch that off and create the pay link from the quote, then e-mail
   it to the customer in one click. When the payment succeeds, the quote is marked
   paid.

**My quotes and reports**

 * The “My quotes” block or `[hulo_my_quotes]` lists the quotes linked to the signed-
   in user’s account (picked in the builder, or requested while signed in) with 
   view, PDF and pay links.
 * The Quotes list has status views, search and figures (requests waiting, open 
   pipeline, 30-day win rate and value won, average response time). Reports show
   quotes by status and the last 12 months.

**With WooCommerce**

 * Quote your products and variations in the builder (they take the place of saved
   catalogue items), and pick existing customers.
 * A request panel on product pages, on the classic cart and below the Cart block;
   basket requests copy the shopper’s cart.
 * My Account  Quotes. Money uses your shop’s currency and format, and e-mails go
   through the shop’s mailer in its e-mail template.
 * Compatible with HPOS (custom order tables) and the Cart and Checkout blocks.

#### Quotations Pro

Everything above is free, with no limits. HULO Quotations Pro is a separate add-
on from [huloglobal.com](https://huloglobal.com/wordpress-plugins/quotations/) that
adds deposits with a separate balance payment, discount approval before quotes go
out, quote templates, follow-up e-mail sequences, webhooks with Slack and Teams 
alerts, sales reports per member of staff with CSV export, a weekly e-mail report
and, on WooCommerce shops, shop orders from accepted quotes.

### External services

This plugin does not connect to any external service and sends no data to HULO Global
or any third party. Everything happens on your own site:

 * E-mail is sent by your site through wp_mail() (on a shop, through its mailer),
   so your own mail or SMTP setup applies: quotes, reminders, request acknowledgements
   and payment links to your customers, and new requests, responses and the optional“
   first opened” notice to you.
 * Pay links are created by the HULO Payments plugin, if you install it, on your
   own site; it connects to the payment provider you set up there (see its own readme).
 * PDFs are generated on your server; no conversion service is used.
 * The quote page, the request form and the admin screens load only this plugin’s
   own files and WordPress’s bundled scripts.
 * If you enter a logo URL in Settings, the quote page and e-mails show the image
   from the address you entered.

## Screenshots

[⌊The Quotes list with status views, search and figures: requests waiting, open 
pipeline, 30-day win rate and value won, average response time.⌉⌊The Quotes list
with status views, search and figures: requests waiting, open pipeline, 30-day win
rate and value won, average response time.⌉[

The Quotes list with status views, search and figures: requests waiting, open pipeline,
30-day win rate and value won, average response time.

[⌊The quote builder: customer details next to the Share panel (PDF, e-mail preview,
the customer link with a preview of the customer's page, "Write the e-mail in your
mail app") and the Manage panel (extend, duplicate, revise, cancel).⌉⌊The quote 
builder: customer details next to the Share panel (PDF, e-mail preview, the customer
link with a preview of the customer's page, "Write the e-mail in your mail app")
and the Manage panel (extend, duplicate, revise, cancel).⌉[

The quote builder: customer details next to the Share panel (PDF, e-mail preview,
the customer link with a preview of the customer’s page, “Write the e-mail in your
mail app”) and the Manage panel (extend, duplicate, revise, cancel).

[⌊Line items in the quote builder: saved catalogue items or free text, quantities,
unit prices, line discounts and line totals, next to the quote's activity trail.⌉⌊
Line items in the quote builder: saved catalogue items or free text, quantities,
unit prices, line discounts and line totals, next to the quote's activity trail.⌉[

Line items in the quote builder: saved catalogue items or free text, quantities,
unit prices, line discounts and line totals, next to the quote’s activity trail.

[⌊The customer's quote page: your business name, the quote's lines and totals, with
PDF download and print.⌉⌊The customer's quote page: your business name, the quote's
lines and totals, with PDF download and print.⌉[

The customer’s quote page: your business name, the quote’s lines and totals, with
PDF download and print.

[⌊Accepting online: the customer types their name as a signature, can add a comment,
and accepts or declines.⌉⌊Accepting online: the customer types their name as a signature,
can add a comment, and accepts or declines.⌉[

Accepting online: the customer types their name as a signature, can add a comment,
and accepts or declines.

[⌊The "Quote request form" block on a page.⌉⌊The "Quote request form" block on a
page.⌉[

The “Quote request form” block on a page.

## Blocks

This plugin provides 2 blocks.

 *   Quote request form
 *   My quotes

## Installation

 1. In Plugins  Add New Plugin, search for “HULO Quotations”, then install and activate
    it (or upload the zip).
 2. Go to HULO  Quotations  Settings: add your business name, currency, reply-to and
    notification addresses.
 3. Add your regular items under Catalogue items (on a shop, your products are used
    instead).
 4. Add the “Quote request form” block to a page, and the “My quotes” block to another
    if your customers have accounts.
 5. Click **New quote** to build your first quote.

## FAQ

### Do I need WooCommerce?

No. Everything works on a plain WordPress site with saved catalogue items and free-
text lines. If you do use it, your products, the cart panel and My Account join 
in. To take payment for accepted quotes, install HULO Payments, our own payments
plugin.

### How do I send a quote to my customer?

Click “Send to customer” on the quote. Your site e-mails the customer your message
with a button to their quote page and the PDF attached, and the quote is open for
their response. Use “Test send” first to see it yourself. To send it another way,
click “Mark as sent”, then share the PDF or the customer link however you like, 
or click “Write the e-mail in your mail app” to open a ready-written message in 
your own e-mail program.

### Does it chase customers who have not replied?

Yes. Under Settings  Reminders, choose after how many days a customer who has not
opened a quote gets one reminder, and how many days before a quote expires the customer
is reminded. Both are checked every hour, and each goes out at most once per quote.
Set either to off if you prefer to follow up yourself.

### Can the customer pay an accepted quote online?

Yes, with HULO Payments, our own payments plugin: acceptance creates a pay link 
at the quoted total and takes the customer to the payment page, and the payment 
marks the quote paid. Without a payments plugin, acceptance is recorded and you 
are notified, and you take payment your usual way.

### How are VAT and discounts calculated?

Line total = quantity × unit price × (100 − line discount) / 100. The quote discount
is taken from the sum of the lines, VAT is charged on the discounted amount. All
money is stored in whole minor units of the quote’s currency (pence, cents; whole
yen) and rounded once per figure. On a shop, figures are rounded to the number of
decimals it shows, so a shop without pence quotes whole pounds.

### Can the PDF show my language?

The PDF is made on your server with the standard PDF fonts, which cover English 
and the other Western European languages. Other accented Latin letters print without
their accent (Ł as L, ő as o), a currency symbol the fonts lack is printed as its
code (PLN 2,500.00), and other scripts such as Greek, Cyrillic, Arabic or Chinese
print as “?”. The quote builder tells you when a quote has such text. The customer’s
quote page shows every language correctly, and its Print button can save the page
as a PDF.

### Does the request form work with page caching?

Yes. Visitors who are not signed in send the form without a WordPress nonce, so 
a page kept in a cache for days still works; the hidden honeypot field and the hourly
limits per visitor address and per e-mail address protect the form instead. A signed-
in visitor’s request is linked to their account, so their form still carries a nonce.
If that has expired (the page was left open for a day or more), the form sends the
request once more as a guest’s when JavaScript is on, and the form without JavaScript
asks them to reload the page.

### Is the customer link safe to share?

Each quote has its own 48-character random link, marked noindex. Customers see a
quote there only once it has been sent; until then the link tells them it has not
been sent yet. While you are signed in you can preview it at any time, and your 
own visits are not counted as the customer opening it.

### My site is behind a proxy or CDN. Does the request limit still work?

By default the limit counts the address that connects to your site. If a reverse
proxy or CDN sits in front and does not pass the visitor’s address on, every visitor
would share one limit of 10 requests an hour. List your proxies in wp-config.php,
for example `define( 'HULO_TRUSTED_PROXIES', '203.0.113.10, 198.51.100.0/24' );`(
addresses or CIDR ranges, comma-separated). The limit then counts each visitor separately,
and the X-Forwarded-For and CF-Connecting-IP headers are read only on requests that
come through those proxies.

### Does the plugin send any data to HULO or anyone else?

No. The plugin makes no outbound connections; see “External services” below.

### What happens to my data if I remove the plugin?

Nothing, unless you tick “Delete all quotes and settings when the plugin is deleted”
in Settings first.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“HULO Quotations” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ huloglobal ](https://profiles.wordpress.org/huloglobal/)

[Translate “HULO Quotations” into your language.](https://translate.wordpress.org/projects/wp-plugins/hulo-quotations)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/hulo-quotations/), 
check out the [SVN repository](https://plugins.svn.wordpress.org/hulo-quotations/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/hulo-quotations/)
by [RSS](https://plugins.trac.wordpress.org/log/hulo-quotations/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.3

 * New hulo_quotations_pre_send filter for extensions: it runs before a quote is
   sent, marked as sent or test-sent, and can stop it with a message. Nothing changes
   for sites that do not use it.

#### 0.1.2

 * New: “Send to customer” e-mails the quote from your site, with a button to the
   customer’s quote page and the PDF attached (switchable), sent as the member of
   staff who prepared it; a first send starts the quote’s validity period, and a
   quote whose date has passed is revived before it is sent again. “Test send” e-
   mails it to you.
 * New: request acknowledgements. Each request gets an e-mail with its reference
   and the catalogue items asked for, in your own words, at most once a day per 
   address and with a site-wide hourly cap; nothing the requester typed is copied
   into it.
 * New: reminders, checked every hour: one for a quote the customer has not opened
   after a number of days, and one a number of days before a quote expires (Settings
   Reminders).
 * New: with HULO Payments, acceptance creates a pay link at exactly the quoted 
   total and takes the customer to it (or, if you prefer, create it from the quote
   yourself), and “E-mail the payment link” sends it to the customer.
 * The Quotes page no longer shows a box about the Pro add-on; Settings has one 
   plain line about it instead.
 * The Quotes list’s “Order / payment” column is now “Payment”.

#### 0.1.1

 * Security: “My quotes” lists only the quotes linked to the signed-in account (
   picked in the builder, or requested while signed in), never quotes matched by
   e-mail address alone; a request is linked to an account only when it is made 
   while signed in.
 * New: behind a reverse proxy or CDN, define HULO_TRUSTED_PROXIES (comma-separated
   addresses or CIDR ranges) so the request limit counts each visitor separately;
   forwarding headers are read only from those proxies.
 * Fixed: opening a quote’s customer link while signed in as staff (to check it,
   or from the e-mail preview) no longer marks the quote as opened by the customer
   or sends the “first opened” e-mail, so the customer’s own first visit is the 
   one recorded. Staff see the page with a note, and can preview a quote before 
   it is sent.
 * Fixed: the link of a quote that has not been sent yet tells the customer so, 
   instead of saying it was withdrawn. “Write the e-mail in your mail app” is offered
   once the quote is marked as sent, and PDFs include the accept-online link from
   then on.
 * Fixed: “Mark as sent” only opens drafts and requests. Using it again (from a 
   second tab or after going back) no longer moves a quote the customer has opened
   back to “sent”, so their next visit is not reported as a first opening.
 * Fixed: the Quotes figures and Reports no longer add up quotes in different currencies.
   Open pipeline, value won and the value by status show one amount per currency,
   and the 30-day value won sent to the Pro weekly report counts quotes in the store
   currency only.
 * Fixed: on sites without a shop, the quote builder’s “WordPress user” field always
   shows the linked account, so saving a quote no longer unlinks it on sites with
   many users. Find any account by name, e-mail address or username; sites with 
   up to 100 users also get the full list.
 * Fixed: the request form works on pages kept by a page cache. Visitors who are
   not signed in send it without a WordPress nonce. Signed-in visitors still use
   one: with JavaScript the form tries once more as a guest if WordPress turns an
   expired one down, and without JavaScript it asks them to reload the page.
 * Fixed: saving Settings no longer resets the options that only apply with or without
   WooCommerce: the product-page and cart request panels stay as set while it is
   absent (for when it is added), and the plugin’s own currency stays as set while
   it is active.
 * Fixed: prices typed as “1.850,00” or “1,850.00” are read as 1,850 (the builder’s
   live totals read them the same way), and a quote in a currency other than the
   site’s keeps its amounts in that currency, for example a yen quote on a euro 
   site.
 * Fixed: stored amounts no longer depend on whether WooCommerce is active or on
   its “Number of decimals” setting, so switching it on or off never changes a quote(
   a ¥50,000 quote stays ¥50,000, also on its pay link). Each currency is kept in
   its own units (none for yen, three decimals for dinars), and existing quotes 
   are converted once when the plugin is updated. On a shop, new figures are rounded
   to the decimals it shows, and quotes in currencies without minor units show none(
   ¥100,000, not ¥100,000.00).
 * Fixed: a quote’s validity runs from the day it is sent or marked as sent. A request
   that waited longer than the validity period is no longer expired when the customer
   gets it, and a shorter wait no longer shortens the customer’s time to accept.
   Drafts and requests show their period (“14 days once sent”), and the builder 
   warns when an open quote’s date has passed.
 * Fixed: after sending a request through the form without JavaScript, visitors 
   return to the page they were on, also when WordPress is installed in a subdirectory.
 * Fixed: amounts from HULO Payments (the “Paid” entry in the activity trail and
   the pay button) are read in HULO Payments’ own minor units, so currencies it 
   counts with different decimal places, such as HUF or KWD, show the right figure.
 * Fixed: on sites whose language groups thousands with a space, amounts in e-mails
   and PDFs show the space instead of `&nbsp;`.
 * Fixed: the business address, terms and e-mail template keep their line breaks
   when saved from Settings, so the address reads “Unit 4, Mill Lane, Kilkenny” 
   on the quote page, in PDFs and in e-mails, and the customer e-mail keeps its 
   paragraphs with the quote link only on its button.
 * Fixed: the “first opened” e-mail is sent only for the customer’s very first visit;
   after a revival or a resend, a visit is recorded as “Opened again by the customer”.
   A quote whose date has passed is shown as expired when it is opened, without 
   an “opened” notice.
 * PDFs print letters the PDF fonts lack without their accent (Ł as L) and currency
   symbols they lack as the currency code (PLN), and the quote builder says when
   a quote has text the PDF cannot show, such as Greek or Cyrillic. See the FAQ.
 * The customer quote page, the admin screens and the e-mail preview escape their
   output where it is printed (the e-mail preview is shown in a sandboxed frame 
   whose links open in a new tab), the quote page’s styles and script are registered
   and printed through WordPress, and the quote builder has no inline styles.
 * The request form (REST and the no-JavaScript fallback), the quote builder and
   the settings, catalogue and response forms read and sanitise each declared field;
   fields of the wrong type are ignored.
 * Fixed: the “Quote request form” block and the `[hulo_quote_request]` shortcode
   laid the form out beside its heading instead of below it. The form’s fields now
   use the theme’s font with comfortable padding, and the block’s preview in the
   editor uses the same styles (its hidden spam-trap field no longer shows there).
 * The builder’s live totals use the same money format as the rest of the page (
   thousands separator, decimal point and symbol position) and follow the quote’s
   currency.
 * Deleting the plugin with “Delete all quotes and settings when the plugin is deleted”
   ticked also removes its per-user and scheduling leftovers.
 * The activity trail and the e-mails to the site owner are translatable, and the
   blocks load their translations.
 * The Pro box describes the add-on accurately, and it and the logo setting mention
   shop features (orders from accepted quotes, the shop’s e-mail header image) only
   on sites with a shop.

#### 0.1.0

 * First release: quote request form block and shortcode, quote builder with free-
   text and saved catalogue items, safe sequential numbering, PDF quotes, customer
   quote page with typed-name acceptance, status trail, expiry and revival, revisions,
   My quotes block and shortcode, Quotes list and Reports, HULO Payments payments
   mark quotes paid. For shops: products, product-page and cart request panels (
   classic cart and Cart block), My Account  Quotes.

## Meta

 *  Version **0.1.3**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [estimates](https://wordpress.org/plugins/tags/estimates/)[pdf](https://wordpress.org/plugins/tags/pdf/)
   [quotation](https://wordpress.org/plugins/tags/quotation/)[quote builder](https://wordpress.org/plugins/tags/quote-builder/)
   [request a quote](https://wordpress.org/plugins/tags/request-a-quote/)
 *  [Advanced View](https://wordpress.org/plugins/hulo-quotations/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/hulo-quotations/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/hulo-quotations/reviews/)

## Contributors

 *   [ huloglobal ](https://profiles.wordpress.org/huloglobal/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/hulo-quotations/)