Skip to content

Quotes

Quotes let you send a pre-sale estimate to a customer with line items, totals, an expiration date, and a public Accept / Decline page — without taking payment. When the customer accepts, you can convert the quote into a draft POS order (Off Rack, Special Order, or Layaway) or into a payable Invoice with a single click.

Find Quotes in the Sales section of the sidebar, between Invoices and Gift Cards.

Quotes List

The main Quotes page shows every quote with search, status filter, and pagination.

ColumnDescription
Quote #Unique quote number — QT-{YEAR}-{SEQ} (e.g., QT-2026-0001)
CustomerCustomer name (links to their profile)
StatusStatus badge — see Statuses below
TotalQuote total
ExpiresExpiration date, or if no expiry was set
CreatedCreation date

Search matches on quote number or customer first/last name. Status filter drops the list down to a single state: All, Draft, Sent, Accepted, Declined, Expired, or Converted.

Click New Quote in the header to start a fresh quote.

Statuses

Quotes move through six statuses, each with its own colored badge:

StatusBadgeMeaning
DraftGrayCreated but not yet sent
SentBlueEmailed to the customer; awaiting response
AcceptedGreenCustomer clicked Accept on the public page
DeclinedRedCustomer clicked Decline (or staff cancelled the quote)
ExpiredGrayPast the expiration date with no response
ConvertedRoseConverted to a POS order

Expired status is computed live — once the quote's expiration date passes, the public page locks down and the list shows it as Expired even if no scheduler has run.

Creating a Quote

Click New Quote to open the create form. The form is split into two columns.

Left Column — Items + Notes

FieldDescription
CustomerType-ahead search showing "LastName, FirstName — email". Required before you can send.
Line ItemsOne row per item. Each line has Product (optional), Variant (if the picked product has variants), Description (required), Qty, Unit Price, and Discount. Click Add Line to add another row, or the X icon to remove one.
Customer NotesFree-form text shown to the customer on the public quote page

Product picker behavior: picking a product auto-fills the Description with the product name and style number, sets the Unit Price from the product's selling price, and tags the line type as product. Picking a variant updates the description to include the variant attributes (size / color / length) and adjusts the unit price by any per-variant Additional Cost.

You don't have to attach a product — pure custom lines (just a description + price) are fully supported, which makes Quotes useful for services, custom-order estimates, and mixed packages.

Right Column — Settings + Save

FieldDescription
LocationThe location this quote is from (only shown if you have multiple locations). Determines the default tax rate.
Expiration DateWhen the quote expires. Quick-set buttons for 7 days, 14 days, and 30 days are right under the field. Leave blank for no expiry.
Tax RateAuto-filled from the location, overridable per quote
Order DiscountA flat dollar amount off the entire quote (separate from per-line discounts)
Internal NotesStaff-only notes — never shown to the customer

Two save buttons:

  • Create Quote — saves as a Draft. The quote sits in your list until you send it.
  • Create & Send — saves the quote AND immediately emails it to the customer. Disabled until a customer is selected.

Quote Detail

Click any quote in the list to open its detail page.

The quote number, status badge, and customer name. A Back to Quotes link returns to the list.

Line Items

A read-only table of every line on the quote with Description, Qty, Unit Price, and Total. Edit by going back to the create form (or by re-creating — quotes are intended to be short-lived documents).

Activity

A live audit log of everything that's happened to the quote, color-coded by event type. Each entry shows a description, timestamp, and (for public actions) the visitor's IP address.

EventWhen It's Logged
Quote created by [Staff]Quote is created
Quote emailed to [email]Quote is sent (or resent)
Customer viewed the quoteFirst time the public page is loaded — IP captured
Quote accepted by customerCustomer clicks Accept — IP captured
Quote declined by customerCustomer clicks Decline — IP captured
Quote converted to [type] [order #]Staff converts the quote to an order

Totals (Sidebar)

Subtotal, Discount (if any), Tax, and Total — computed from the lines and the quote's tax rate.

Dates (Sidebar)

DateDescription
CreatedWhen the quote was created
SentWhen the quote was first emailed (blank for drafts)
ExpiresThe expiration date (blank if not set)
Accepted / DeclinedStamped when the customer responds; shown in the matching color

Actions (Sidebar)

The Actions card changes based on the quote's status:

ActionShown WhenWhat It Does
Send QuoteDraftEmails the quote to the customer using the Quote Sent template, sets status to Sent, stamps sent_at, surfaces the Public Link
Resend QuoteSent or AcceptedRe-sends the same email to the customer (useful if they lost the original)
Convert to OrderAcceptedOpens the Convert to Order modal
Convert to InvoiceAccepted (and not already converted)Creates a draft Invoice from the quote's line items and links it back to the quote
Cancel QuoteAnything except Converted or DeclinedSets status to Declined

Once a quote has been sent, the Public Link field shows the customer-facing URL with a Copy button. The link is a tokenized URL that the customer can open without logging in — share it via SMS, in person, or anywhere else outside the email channel.

Public Quote Page

Customers receive an email with a View Quote button that opens the public page. The page is unauthenticated, branded with your boutique's logo + accent color, and lives at:

https://app.bridalop.com/{your-booking-uid}/quote/{token}

What the customer sees:

  • Your boutique's logo and name
  • The quote number and "Prepared for [Customer Name]"
  • A status banner (Accepted / Converted / Declined / Expired) when applicable
  • The line items table with Description, Qty, and Total
  • The totals card (Subtotal, Discount, Tax, Total)
  • Your customer-facing notes (the Internal Notes are never shown here)
  • An expiration reminder if the quote hasn't been responded to yet
  • An Accept Quote button (your accent color) and a Decline Quote button (outline, with a confirmation prompt)

Both buttons are hidden once the quote has been Accepted, Declined, Converted, or Expired — the page becomes read-only.

What Happens When a Customer Accepts

  1. Quote status flips to Accepted and accepted_at is stamped
  2. The quote creator (the staff member who originally made the quote) gets an email: "Quote QT-2026-0001 accepted by [Customer]"
  3. Every Owner and Manager also gets the same email
  4. An in-app notification appears in the BridalOp notification bell for staff
  5. The activity log captures the acceptance with the customer's IP

The customer is not automatically charged and no order is automatically created — acceptance is a green light for staff to take the next step.

What Happens When a Customer Declines

  1. Quote status flips to Declined and declined_at is stamped
  2. An in-app notification is created for staff
  3. The activity log captures the decline with the customer's IP

Convert to Order

When a quote is Accepted, the Convert to Order button on the detail page opens a small modal asking which kind of order you want.

Order TypeWhat It Creates
Off Rack SaleA pos-type draft order — for in-stock items the customer is buying that day
Special OrderA special-order-type draft — links into the Special Orders workflow for vendor PO + arrival tracking
LayawayA layaway-type draft — opens directly into the Layaway plan-builder UI in POS

Pick a type and submit. BridalOp:

  1. Creates a draft Order of the chosen type
  2. Copies the customer, location, tax rate, and customer/internal notes from the quote
  3. Copies every line item verbatim — product, variant, description, qty, unit price, and per-line discount all carry over
  4. Sets the quote's status to Converted and links the new order via converted_order_id
  5. Logs the conversion to the quote's activity feed (with the order type and order number)
  6. Redirects you straight to POS with the new order pre-loaded — /pos?order={new order id} — so you can take payment, schedule the layaway, or attach the Special Order to a vendor PO without re-entering anything

A quote can only be converted once. After conversion the Convert to Order button is replaced with a link to the resulting order.

Convert to Invoice

The Convert to Invoice button (also shown when a quote is Accepted) creates a draft Invoice instead of an order — useful when the customer wants a payment link they can settle online over time, with a public payment portal, payment schedules, or auto-charge.

The conversion:

  • Creates a draft Invoice with the quote's customer, location, tax rate, and notes
  • Copies every line item from the quote
  • Stores a link from the quote to the new invoice (converted_invoice_id) so you can navigate back and forth

Unlike Convert to Order, this does not flip the quote's status to Converted — the quote stays Accepted, and the link to the invoice appears on the actions card. This means a quote can be turned into an invoice OR an order — pick the path that fits the deal.

Settings

Two quote-wide defaults live under Settings > Quotes:

SettingDescription
Default Expiration DaysHow many days from creation new quotes expire by default. Per-quote override always wins.
Default Customer NotesBoilerplate text pre-filled into the Customer Notes field of every new quote (e.g., return policy, delivery timing, deposit expectations).

The Quote Sent email template is editable under Settings > Email & SMS Templates — same as every other transactional email.

Permissions & Module

  • Module gate: Quotes is controlled by the quotes module under Settings > Modules. Default is on. Disable it to hide Quotes from the sidebar entirely.
  • Permission: access to the Quotes pages is gated by the existing orders.view permission — staff who can already see Orders can also see Quotes. There is no separate Quotes permission today.

Where Quotes Appear

  • Sidebar > Sales — the main Quotes list
  • Activity feed entry on the source quote whenever it's converted to an order
  • Linked order — every order created from a quote stores its source quote, and the quote stores the resulting converted_order_id
  • Linked invoice — same idea for the Convert to Invoice path
  • Notification bell — Owners, Managers, and the quote creator get an in-app + email notification when a customer accepts a quote