How to set up HubSpot integration
Sync quote request data to HubSpot automatically. When a customer submits a quote, Quotify can create or update a HubSpot contact, create a deal on the pipeline of your choice, and add a line item for each product in the quote.
This is a Pro feature.
What is HubSpot?
HubSpot is a Customer Relationship Management (CRM) platform. A CRM is a tool that stores information about your customers and the deals you have with them, so your sales team can follow up, track progress, and report on revenue. If you do not already use HubSpot, you can skip this guide.
Where to find it
- In the Quotify dashboard, go to Settings in the sidebar.
- Click HubSpot in the settings navigation.
Step 1: Create a HubSpot Private App
Quotify connects to HubSpot using a HubSpot Private App access token. A Private App is HubSpot's recommended way to give a tool like Quotify permission to read and write data on your account. It is similar to an Application Programming Interface (API) key — a long secret string you copy from HubSpot and paste into Quotify.
- Sign in to your HubSpot account.
- Go to Settings > Integrations > Private Apps.
- Click Create a private app.
- Give the app a name (for example, "Quotify").
- Open the Scopes tab. Scopes are the permissions the app needs. Tick the following:
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.deals.readcrm.objects.deals.writecrm.objects.line_items.write
- Click Create app, confirm, and copy the access token. It starts with
pat-. Treat it like a password.
If you only want to sync Contacts (no Deals or Line Items), you only need the two contacts scopes. The Deal and Line Item scopes are required if you want to sync deals.
Step 2: Connect Quotify
- On the Quotify HubSpot settings page, paste the access token into the Access Token field in the API Configuration section.
- Click Test Connection. You will see "Connection successful! Your access token is valid." if everything works, or an error if the token is missing scopes or is invalid.
- Click Save in the bar at the top of the page.
Step 3: Choose what gets synced
In the Sync Type section, choose what Quotify creates in HubSpot when a quote is submitted:
- Contacts and Deals — Create or update a contact and create a deal with line items for each quote submission. This is the default.
- Contacts only — Only create or update contacts in HubSpot. No deals or line items will be created.
Pick Contacts only if you want HubSpot to act purely as a contact database for your quote requests. Pick Contacts and Deals if you want each quote to become a deal your sales team can move through a pipeline.
Step 4: Choose which quote requests to sync
In the Sync Mode section, decide which quote requests get synced to HubSpot:
- Sync on every quote request — All quote submissions will be synced to HubSpot automatically.
- Sync on specific quote requests — Use rules to define which quotes should be synced to HubSpot. When you select this option, a rules editor appears where you can set conditions (for example, only sync requests from a specific country or with a certain field value). If any rule matches, the quote will be synced.
Step 5: Pick a pipeline and deal stage
This section only appears when Sync Type is set to Contacts and Deals and a valid access token has been saved.
In the Deal Configuration section:
- Pick a Pipeline from the dropdown. Pipelines are loaded live from your HubSpot account.
- Pick a Deal Stage from the dropdown. New deals will be created at this stage.
If you see "No pipelines found in your HubSpot account, or unable to fetch pipelines", check that your access token has the crm.objects.deals.read scope, then save and refresh the page.
Step 6: Map your form fields to HubSpot contact properties
In the Contact Field Mapping section, you connect your Quotify form fields to HubSpot contact properties. Each row shows a HubSpot property on the left and a dropdown on the right where you pick the source.
The available HubSpot contact properties are:
- Email (required) — The customer email address. You must map this field or the sync will not work.
- First Name
- Last Name
- Phone
- Company
- Job Title
- Address
- City
- State/Region
- Zip Code
- Country
For each property, you can choose:
- A form field from your quote request form (grouped by section).
- Custom value... — Type in a static value that is the same for every synced contact.
- Leave it unmapped by keeping the default Select field... option.
Step 7 (optional): Add custom contact properties
In the Custom Contact Properties section, you can send extra key/value pairs to HubSpot beyond the standard properties above. This is useful when you have created custom properties in HubSpot (for example, "Lead Source" or "Quote Reference") and want Quotify to fill them in.
- Click Add property.
- In the Property name field, enter the HubSpot internal property name (for example,
lead_source). This must match the internal name of the property in HubSpot, not the display label. - In the Value source dropdown, choose either a form field or Custom value... to enter a static value.
- Repeat for any additional properties you want to send.
Click the delete icon next to a row to remove it.
Viewing the activity log
At the bottom of the HubSpot settings page, the Recent Activity table shows the last 10 sync attempts. Each entry shows:
- Status — A green Success badge or a red Error badge.
- Message — A description of what happened, or the error returned by HubSpot.
- Date — When the sync happened, shown as a relative time (for example, "2 hours ago").
Use this table to verify the integration is working and to troubleshoot any errors.
Troubleshooting
- "Connection failed: ..." — The access token is missing or invalid. Re-copy it from HubSpot. If the error mentions a scope, return to your HubSpot Private App and tick the missing scope listed in Step 1.
- No pipelines appear in the Pipeline dropdown — Make sure the token includes
crm.objects.deals.readand that you have at least one pipeline in your HubSpot account. - Sync errors with "missing email" — The Email field mapping is required. If no email is available from the quote request, the sync is skipped and an error is logged.
- Past quotes did not sync — Changing your settings does not retroactively sync past quote requests. Only new quote requests submitted after saving are synced.
Related guides
- How to set up Klaviyo integration
- How to set up advanced email routing rules — uses the same rule editor as the conditional sync mode
- How to build your own quote request form — fields you build here are what you map to HubSpot
Updated on: 11/05/2026
Thank you!