Skip to content

Quote requests

Made-to-order products rarely sell through a cart: the price depends on the configuration, the quantity, often the project. Quote requests close that loop without any store integration — the visitor configures the product, presses the button in the summary, leaves their contact details, and the full configured selection arrives in your inbox with their email as reply-to.

Step 1/7

Made-to-order products rarely sell from a cart: the price depends on the configuration, the quantity, often the project. Quote requests make the configurator itself the sales channel.

Quote requests — sell without a cart
Step 1 of 7
  1. Made-to-order products rarely sell from a cart: the price depends on the configuration, the quantity, often the project. Quote requests make the configurator itself the sales channel.
  2. Open configurator settings — the per-product controls live here.
  3. One switch, and that is the whole setup: no code, no webhook, no CRM. The button appears in the published configurator, the standalone viewer, share links and the embed alike.
  4. Name the button in your own commercial language — “Get a price”, “Request an offer”. Left empty, every visitor sees the default in their own language: “Request a quote” in English.
  5. This is the published product a visitor opens. They configure it, then open the summary of what they built.
  6. The request button sits in the summary, next to the selection it will carry — the visitor never has to describe the product by hand.
  7. Name, email, optional phone and message. You receive the request with the visitor’s email as reply-to, an image of the configured product, the part-by-part list with SKUs, and a link that reopens the exact configuration.

Open your project’s Configurator tab and switch on Quote requests in the settings column. Optionally set your own button label (“Get a price”, “Request an offer” — the default is “Request a quote”). Publish as usual.

That’s the whole setup. No code, no webhook, no CRM required — the button now appears in the published configurator’s summary, in the standalone viewer, in share links and in the embed alike.

The summary gains a button. Pressing it opens a short form: name, email, optional phone and message. The configured selection — every part, chosen variation and SKU — travels with the request automatically; the visitor never has to describe the product by hand. Sending the form is the consent step: the visitor is told their contact details go to you, the seller.

Every request lands in two places: your inbox, and the panel.

An email per request, containing:

  • the visitor’s name, email (set as reply-to — just hit reply), and phone if given,
  • their message, if any,
  • an image of the configured product exactly as the visitor saw it, attached to the mail,
  • the configured selection as a part-by-part list with SKUs,
  • a link that reopens the exact configuration in the viewer.

Repeated submissions of the same configuration by the same visitor within a few minutes are collapsed into one request.

Leads in the panel sidebar lists every request the workspace has received — contact details, project, message, the date, and a link that reopens the exact configuration.

  • Status — each request moves through New → Contacted → Won, or is marked Spam. The tabs above the list filter by status and by project.
  • Export CSV — hand the current view to your sales team or import it into your CRM. The export follows the filters you have applied.
  • Bulk delete — select rows and delete them in one step. Reserved for the workspace owner and admins.

Requests are kept for 90 days and then permanently deleted. Export what you need to keep, or treat your CRM as the long-term record.

Leads → Webhook posts every new request to an HTTPS endpoint of your choice as JSON — connect it to Zapier, Make, or your CRM directly. No connector to install, and the lead stays in the panel either way.

The request carries the visitor, the project, the SKUs and the configuration link:

{
"event": "lead.created",
"lead": {
"id": 1042,
"name": "Ada Visitor",
"email": "[email protected]",
"phone": "+90 555 000 0001",
"message": "Need a quote for the corner unit",
"created_at": "2026-08-15T10:00:00+00:00",
"configuration_url": "https://model.togenar.com/?project=...",
"skus": ["OSLO-BODY-WALNUT", "OSLO-LEGS-CHROME"],
"selection": [{ "partLabel": "Body", "label": "Walnut", "sku": "OSLO-BODY-WALNUT" }]
},
"project": { "id": "...", "name": "Oslo sofa" },
"workspace_id": "..."
}

Verify every call. When you save the endpoint we show a signing secret once — store it. Each request carries X-Togenar-Timestamp and X-Togenar-Signature: sha256=…, the HMAC of timestamp.body:

const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.TOGENAR_WEBHOOK_SECRET)
.update(`${req.headers['x-togenar-timestamp']}.${rawBody}`)
.digest('hex');
if (expected !== req.headers['x-togenar-signature']) return res.status(401).end();

Requirements and behaviour:

  • the endpoint must be a public https:// address — private, loopback and internal addresses are refused, and redirects are never followed;
  • a failed delivery is retried before it is given up on;
  • the last delivery attempt and its HTTP status are shown next to the setting;
  • only the workspace owner and admins can set or change it.

To protect your inbox from an abnormal traffic spike, an unusually large number of requests in one day arrives as a single summary email that evening instead of one mail each. Everything is still recorded and listed under Leads, and the Leads page tells you when that has happened. Nothing is dropped.

Quote requests and add to cart serve different selling models, and the configurator will not show both by default: when AR Add to Cart is on, the cart owns the conversion step and the quote request button steps aside. If your catalogue genuinely needs both — standard items to the cart, made-to-order items to a quote — switch on Show alongside a cart next to the Quote requests toggle.

Hosts that want to handle the enquiry themselves can keep using the enquire embed attribute and event — the event still fires with the toggle on.