---
title: "Quoting tools"
description: "Bring quotes won in Quoter, Salesbuildr, or QuoteWerks into Outpost as read-only external quotes that set up the client, agreement, and sales order."
url: "https://support.outpostplatform.com/msp/quoting-tools/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "MSP plan. Sales > Quoting tools connects Quoter, Salesbuildr, and QuoteWerks, polled every 15 minutes with webhook hints. Webhook secret shown once. Vendor accounts map to clients or prospects, and SKUs to catalog items in the review queue. Won quotes become read-only external quotes converted like any accepted quote."
availability:
  plans: ["msp"]
  permission: "crm:approve"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/msp/quoting-tools.md"
license: "CC BY 4.0"
---

# Quoting tools

If your team quotes in Quoter, Salesbuildr, or QuoteWerks, you can keep doing
so. When a quote is won there, Outpost brings it in as an external quote and
converts it as if it had been accepted in Outpost: the client, the agreement,
the sales order, and the onboarding ticket. This page covers connecting a
quoting tool, mapping its accounts and products, and the review queue.

## Before you begin

- You are on the MSP plan.
- Adding and changing connectors needs `crm:approve`. Mapping accounts and
  products, and importing or ignoring quotes, needs `crm:write`.
- An API credential from the quoting tool:

  | Tool | Credentials |
  | --- | --- |
  | Quoter | The **Client ID** and **Client secret** of a Quoter API key. |
  | Salesbuildr | A Salesbuildr **API key**. |
  | QuoteWerks | An **API key**, or a **User name** and **Password**, and the **Server address** of your QuoteWerks Web server, starting `https://`. An API key is used when both are given. |

## Add a connector

1. Select **Sales** > **Quoting tools**, then **Add connector**.
2. Choose the **Vendor**, and enter a **Name** for the connector.
3. Under **Credentials**, enter what the tool gave you.
4. Leave **Enabled: poll the vendor and accept its webhooks** selected.
5. Select **Add connector**.
6. Open the connector and select **Test**.

Outpost checks each enabled connector every 15 minutes. Its first check looks
back 30 days. Select **Poll now** to check at once.

## Set up the webhook

Quoter and Salesbuildr can tell Outpost the moment a quote changes, instead of
waiting for the next check. QuoteWerks has no webhook, and its connector says
**Not used. QuoteWerks is checked every 15 minutes.**

1. On the connector, select **Set up webhook**.
2. Copy the **Webhook address** and **Secret**. They are not shown again.
3. In the quoting tool, add a webhook to that address:
   - **Quoter**: paste the secret as the webhook **Hash Key**.
   - **Salesbuildr**: add the secret as the custom header
     `X-Outpost-Webhook-Secret`.
4. Select **I have copied it**.

**Rotate webhook** makes a new address and secret, and the old ones stop
working. Outpost treats every webhook as a hint and reads the quote from the
quoting tool itself, so a forged or replayed webhook cannot change anything.

## Map accounts

Each account in the quoting tool maps to one client or prospect in Outpost.
Outpost never creates clients or prospects by itself.

1. On the connector's **Account mapping** card, find the account. Accounts
   appear as quotes come in, and an unmapped one shows **Seen on a waiting
   quote**.
2. Select **Map**.
3. Choose **A client** or **A prospect**, and find it.

To move an account, select **Change**. To remove the mapping, select **Unmap**.

## Match products in the review queue

A quote's lines name the quoting tool's SKUs. Each one must match an item in
your [billing catalog](/msp/billing-catalog/) before a quote with it can come
in.

1. Select **Sales** > **Quoting tools**, then **Review queue**.
2. Under **Items without a catalog match**, select **Match** on a vendor SKU.
3. Find the catalog item and select it.

Match a SKU once, and every later quote with it lines up on its own. Select
**Ignore** for a SKU you never sell through Outpost.

## How won quotes come in

When a quote is won in the quoting tool and its account and SKUs are mapped,
Outpost imports it on its own. A quote it cannot place waits under **Quotes
waiting for review**, with how many items need a catalog match. Fix the
mapping, then select **Import**, or **Ignore** a quote you do not want.

The connector's **Recent quotes** shows each quote's **State**:

| State | Meaning |
| --- | --- |
| **Needs review** | An account or a SKU is not mapped. |
| **Imported** | In Outpost as an external quote. |
| **Sales order raised** | Converted, with its sales order. |
| **Ignored** | Ignored by someone in your practice. |

## External quotes

An imported quote is an external quote in **Sales** > **Quotes**. It takes a
number from your own quote series and keeps the tool's number too. The
quoting tool's PDF is stored as the signed copy, and the acceptance is the one
recorded in the tool.

An external quote is read-only. It cannot be edited, sent, resent, or revised
in Outpost, because the customer agreed to it somewhere else. Change it in the
quoting tool. It is not countersigned in Outpost.

It converts the same way as a quote accepted in Outpost: the client, a draft
agreement for the monthly lines, a sales order for goods delivered from stock,
an onboarding ticket, and the deal marked won. See
[What accepting a quote creates](/msp/sales-and-quotes/#what-accepting-a-quote-creates)
and [Sales orders](/msp/sales-orders/).

## Verify

- **Test** on the connector succeeds, and **Last error** shows **None**.
- After a won quote comes in, **Recent quotes** shows **Sales order raised**,
  with links to the quote and the sales order.

## Next steps

- [Sales orders](/msp/sales-orders/)
- [Sales pipeline and quotes](/msp/sales-and-quotes/)
