Skip to main content

Quote Builder Developer Documentation

Integration setup, app configurations, permissions mappings, and developer reference guides.

Getting Started & Installation

Quote Builder CRM Card installs directly from the HubSpot Marketplace using standard OAuth 2.0. No HubSpot API keys are required.

Install from Marketplace. Go to the HubSpot App Marketplace, search for "Quote Builder CRM Card" and click Install App.
Authorize Permissions Scopes. HubSpot will prompt you to authorize permissions scopes. Approve the required scopes list.
Add Card Tab. Open any Deal record. The Quote Builder tab will display on the right CRM Card tab panel.
💡 If the tab still doesn't appear after refreshing, click Customize in the right panel and manually add the Quote Builder card to your view.

How It Works

Reps can compose and publish quotes directly inside the Deal panel interface in five stages:

Open Deal Record. Access the CRM Card sidebar.
Select Details & Items. Choose quote templates, set expiration dates, pre-fill sender details, and add custom line items.
Click Generate Quote. Creates a native HubSpot Quote object associated with the Deal, Company, and Contacts.
Share URL. Copy the published quote link to email or message your buyer.
Draft Saves. Save quotes in draft mode anytime and update details as negotiations proceed.

Configuration

Admins configure the default app settings via the HubSpot Connected Apps dashboard:

HubSpot Settings ➔ Integrations ➔ Connected Apps ➔ Quote Builder CRM Card ➔ Settings

  • Deal Stage Visibility: Select specific pipeline stages where the card should appear.
  • Sender Company Defaults: Pre-fill company names, addresses, and contact info for all sales reps.
  • Terms & Payment Boilerplates: Configure pre-written acceptance text and net payment terms.
  • Currency Defaults: Choose default currency codes and expiration periods.

Rich HTML in Boilerplates

Boilerplate text fields accept basic HTML tags (such as <b>, <i>, and <ul>) which will render formatted on the published HubSpot quote page.

Data & Permissions

This table outlines the access direction and use case for all requested HubSpot CRM permissions scopes:

HubSpot Object Scope Requested Direction Usage Description
Deals crm.objects.deals.read / write Two-way Sync Read deal name, stage, currency. Write line item associations to deal.
Quotes crm.objects.quotes.read / write Two-way Sync Create and update quote objects, templates, and signature options.
Line Items crm.objects.line_items.read / write Two-way Sync Read, create, and delete quote line items. Synchronize items to Deal.
Contacts crm.objects.contacts.read Sync From HubSpot Read associated contacts to add as buyer or signers.
Companies crm.objects.companies.read Sync From HubSpot Read associated company names and addresses for billing info.
Products e-commerce Sync To HubSpot Search and read items from HubSpot product libraries.
Owners crm.objects.owners.read Sync From HubSpot Read deal owner details to pre-fill sender information.

Troubleshooting & Fixes

Solutions to the most common configuration and installation errors:

🔴
"Invalid or Expired Installation Link"
Cause: The OAuth state verification timed out (exceeded 10 minutes limit) or environment secrets are mismatched.
How to fix:
  1. Ensure OAUTH_STATE_SECRET is identical across development, production, and Vercel environments.
  2. Re-trigger the installation link and complete the prompt within 10 minutes.
🔴
"500 Internal Server Error" on CRM Card
Cause: The backend could not fetch data from HubSpot. Often caused by an expired access token or missing scopes.
How to fix:
  1. Re-authenticate the portal through the OAuth flow to refresh installation keys.
  2. Check Vercel backend logs for the precise HubSpot API client rejection message.
🟡
"Only 'Authorization' header is allowed..."
Cause: A custom HTTP request header was sent from the React UI extension. HubSpot strips custom headers from hubspot.fetch() requests.
How to fix:
  1. Remove all custom headers from your React API fetch utilities.
  2. Pass custom parameters (such as portal IDs) as query params (GET) or JSON body keys (POST).

Uninstalling

To uninstall the app, navigate to Connected Apps inside HubSpot Settings, locate "Quote Builder CRM Card", and select Uninstall.

Data Preservation: Uninstalling does not delete any of your quote history. Native Quotes, deals, contact links, and line items remain secure in your HubSpot instance. Our database immediately deletes your OAuth tokens and configured settings upon receiving the uninstallation webhook.