Sync quotes to Salesforce
The Salesforce integration lets QuoteSnap automatically create and update records in your Salesforce org every time a B2B quote is submitted — Opportunities, Contacts, Accounts, product line items, and the quote PDF — using a field mapping you fully control. This guide walks you through connecting your org and setting up what gets synced.
1. Before you start
You'll connect QuoteSnap to Salesforce using the Client Credentials Flow, so no user has to log in during syncing. You need:
- A Salesforce org where you can create an External Client App (System Administrator access).
- Permission to enable OAuth and the Client Credentials Flow on that app.
- A Salesforce user the integration will run as (its permissions decide which records and fields QuoteSnap can write).
2. Create an External Client App in Salesforce
In your Salesforce org:
- Go to Setup → App Manager → New External Client App (or External Client App Manager).
- Under API (Enable OAuth Settings), turn on OAuth and add the scopes
apiandrefresh_token. - Enable the Client Credentials Flow and choose the Run As user for it.
- Save, then open Consumer Key and Secret to copy the Consumer Key (Client ID) and Consumer Secret (Client Secret).
3. Connect your org in QuoteSnap
- In the QuoteSnap admin, open Others → Sync Data → Salesforce.
- Paste your Instance URL (My Domain) — for example https://your-org.my.salesforce.com.
- Paste the Consumer Key and Consumer Secret.
- Click Verify connection. QuoteSnap tests the credentials and loads your org's fields, stages, and users.

4. Choose which records to sync
Turn on any combination of the three objects. Each one can be enabled independently and has its own field mapping:
Object | What QuoteSnap does |
|---|---|
Account | Creates or updates the account from the customer's company (name, account number, phone, billing/shipping address). |
Contact | Finds a contact by email (or creates one) and links it to the account. |
Opportunity | Creates the deal — name, stage, owner, amount, close date, plus a full quote summary. This is the main record. |

5. Map quote data to Salesforce fields
Under each object, add mapping rows to send quote data into any writable Salesforce field — including your org's custom fields. Every row has three parts:
- Salesforce field — searchable list of writable fields; custom fields are marked
(custom). - Value type — From quote (pull a value from the quote) or Fixed value (a constant you set).
- Value — the input adapts to the field's data type so you can't enter an invalid value.
Field type | What you'll see |
|---|---|
Picklist | A dropdown of your org's active values — or switch to From quote to map it dynamically. |
Multi-select picklist | Pick several values; QuoteSnap joins them for you. |
Checkbox | A |
Number / Currency | A number input. |
Date / Date-time | Fixed → choose “+N days after sync” (1, 3, 5, 7, 9, 15). From quote → a quote date such as the created or expiry date, or a date field from your form. |
Email / Phone / URL | An input matching that format. |
Lookup / ID | Enter a real record ID from your org (for example an Owner, Campaign, or Price Book ID). |
Text | A plain text box. |
Available quote data
Depending on the object, you can map: quote number, admin link, created / expiry date, grand total, total quantity, products summary, customer name / email / phone, company name and ID, shipping & billing address, and any custom field from your quote form (shown as Form: …).
6. Sync products as Opportunity line items
Turn on “Create Opportunity line items from quote products” in the Opportunity section. Each product in the quote becomes a line item on the Opportunity, and the Amount is calculated by Salesforce from the line totals.
- Discounts — per-line discounts are sent as a discount percentage; a quote-level discount is added as a “Quote discount” line so the total matches the grand total.
- Currency — if your org uses Multiple Currencies, the Opportunity and its line items use the quote's currency.
- Line notes — a product's note and properties are written into the line item's description.
](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/image\_1pgebb8.png)
7. Attach the quote PDF
Turn on “Attach the quote PDF to the Opportunity” and QuoteSnap renders the quote PDF (using your active template) and attaches it to the Opportunity's Files. Re-syncing replaces the previous file instead of adding a duplicate.
8. Disconnect the integration
To turn the integration off, click Disconnect in the top-right of the Salesforce page and confirm in the dialog. Disconnecting clears the saved credentials and mapping and stops syncing. Records already synced stay in Salesforce, and you can reconnect at any time.
9. Good to know
A few results depend on how your Salesforce org is configured:
Org settings that affect syncing1. State & Country picklists: if enabled, address state/country must match a valid value — free-text values may be skipped (the rest of the record still saves).- Discount column: the per-line Discount field only appears if your org grants field-level access to it. Otherwise the price difference still shows via List Price vs Sales Price.
- Multiple Currencies: enable it (and activate the currency) for the quote's currency to be used.
- Lookup / ID fields: map these to a real, existing record ID in your org — an invalid ID is skipped.
- Duplicate rules & required fields: QuoteSnap works around a rejected field by skipping just that field, and reuses an existing contact when a duplicate rule matches — so a single field or rule never blocks the whole quote.**
Updated on: 11/09/2026
Thank you!