The quote flow
Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
This walkthrough follows one quote from the shopper’s first click to the record you reply from.
1. The shopper adds a product
Section titled “1. The shopper adds a product”On a quote-enabled product, Estimate removes the Add to cart form and (by default) the price, and renders an Add to quote link in their place, on the single product page (via woocommerce_single_product_summary) and in shop and category loops. The link is a real URL carrying a nonce, so clicking it works with JavaScript off: it adds the product server-side and redirects to your quote page.
If the product is already on the visitor’s list, its button reads In your quote instead, so they are not adding it twice.
2. The list builds in a cookie
Section titled “2. The list builds in a cookie”Items live in a single cookie (estimate_quote_items) as a compact product-ID-to-quantity map, no account and no server-side write are needed, which keeps the list cache-friendly for logged-out shoppers. The cookie lasts 30 days and holds up to 100 distinct products. Products that have since been deleted or made unpurchasable are skipped when the list is read, so it never shows a stale row.
3. The quote page
Section titled “3. The quote page”The [estimate_quote] shortcode renders the current list as a worksheet: each line shows the product name and a number input for quantity, with a remove button. Update quantities re-saves the whole list; setting a quantity to zero drops the line. Below the list is the request form, Name and Email are required, Company and Message are optional.
When the list is empty the shortcode shows a short empty state with a Browse products button instead of the form. With the master toggle off, the shortcode outputs nothing.
4. The shopper submits
Section titled “4. The shopper submits”On submit Estimate verifies a nonce, validates the fields (re-rendering the form with inline, aria-describedby-linked errors if name or email is missing or invalid, or if the list emptied in the meantime), then:
- creates a private Quote Request post holding the contact details and line items,
- emails the recipient,
- clears the cookie list,
- and redirects to the same page with a
?estimate_sent=1confirmation so a refresh does not resubmit.
5. What you receive
Section titled “5. What you receive”The email is plain text, sent through wp_mail from your own site. It states the site name, the customer’s name, email and company, the requested items as name x qty lines, the message, and a direct View in admin link to the saved post. Its Reply-To is the customer, so replying reaches them directly.
In wp-admin, open WooCommerce → Quote Requests. The list adds Email, Company and Items (a line count) columns; opening a request shows a Quote details meta box with the contact details and a table of requested products, each linked to its product editor. The posts are private and cannot be created from the front end of the admin, they only ever come from a submitted form.
Styling the storefront
Section titled “Styling the storefront”There is no template to copy into your theme; the markup is generated in PHP. Restyle it with CSS instead, the storefront stylesheet (assets/css/estimate.css) targets stable classes such as .estimate-add-to-quote, .estimate-quote__table, .estimate-quote__form and .estimate-quote__field, and already ships dark-colour-scheme colours, :focus-visible rings, a prefers-reduced-motion branch and a single-column reflow under 600px.
Accessibility and performance notes
Section titled “Accessibility and performance notes”The whole flow degrades to plain links and a standard POST form, so nothing breaks without scripts. The one script (assets/js/estimate.js, loaded in the footer) only draws a decorative rule under the submit button on send, no behaviour depends on it. The quantity inputs carry screen-reader labels, each remove button has a per-product aria-label, the success and error notices use role="status" / role="alert", and the list assets load only when the storefront is enabled. There are no merchant- or developer-facing filters or actions in this release, the only public extension point is the [estimate_quote] shortcode.