Sign In

CRM Integrations

Push form submissions directly into Salesforce, HubSpot, and Dynamics 365 to automate your sales pipeline.

CRM integrations connect your Buildorado workflows to your sales and customer relationship platforms. When a lead fills out a form, Buildorado can instantly create a contact, lead, or opportunity in your CRM without any manual data entry. This ensures every lead is captured the moment it arrives and your sales team can act on it immediately. All CRM integrations authenticate via OAuth 2.0 and store credentials with AES-256 encryption through AWS KMS.

Salesforce (Coming Soon)

Salesforce is the most widely used CRM platform. The Buildorado integration will let you create leads, contacts, and opportunities directly from workflow actions. This integration is currently in development and will be available in an upcoming release.

Setting Up Salesforce

  1. Navigate to Settings > Integrations in your Buildorado dashboard.
  2. Find Salesforce and click Connect.
  3. A Salesforce authorization popup appears. Sign in with your Salesforce account.
  4. Grant the following OAuth scopes:
    • api -- Access Salesforce data through APIs
    • refresh_token -- Allow Buildorado to maintain the connection
  5. Once authorized, Salesforce shows as Connected with your Salesforce organization name.

You can connect Salesforce sandbox environments for testing by selecting the sandbox login URL during authorization.

Operations

createLead

Create a new lead record in Salesforce.

FieldTypeRequiredDescription
firstNamestringNoLead's first name
lastNamestringYesLead's last name (required by Salesforce)
emailstringNoLead's email address
companystringYesCompany name (required by Salesforce)
phonestringNoPhone number
titlestringNoJob title

Output:

FieldTypeDescription
idstringThe Salesforce record ID of the newly created lead
successbooleanWhether the operation succeeded

createContact

Create a new contact record in Salesforce.

FieldTypeRequiredDescription
firstNamestringNoContact's first name
lastNamestringYesContact's last name
emailstringNoEmail address
accountIdstringNoAssociate with an existing Salesforce account
phonestringNoPhone number

Output:

FieldTypeDescription
idstringThe Salesforce record ID of the newly created contact
successbooleanWhether the operation succeeded

createOpportunity

Create a new opportunity in the Salesforce sales pipeline.

FieldTypeRequiredDescription
namestringYesOpportunity name
stageNamestringYesPipeline stage (e.g., Prospecting)
closeDatestringYesExpected close date in YYYY-MM-DD format
amountnumberNoDeal value in the organization's currency
accountIdstringNoAssociated Salesforce account ID

Output:

FieldTypeDescription
idstringThe Salesforce record ID of the newly created opportunity
successbooleanWhether the operation succeeded

Field Mapping Example

Map form fields to Salesforce lead fields in your workflow:

Form Field              Salesforce Field
------                  ------
{{form.firstName}}   -- firstName
{{form.lastName}}    -- lastName
{{form.email}}       -- email
{{form.company}}     -- company
{{form.phone}}       -- phone
{{form.jobTitle}}    -- title

Rate Limits

LimitValue
Sustained rate100 requests per minute
Burst limit10 requests per second

Salesforce enforces daily API call limits based on your Salesforce edition. Buildorado counts against these limits. Check your Salesforce API usage in Setup > System Overview to ensure you have sufficient capacity.

Tips for Salesforce

  • Map the Salesforce record ID output to downstream nodes. For example, after creating a lead, you can reference {{salesforce_1.id}} in a Slack notification.
  • For custom fields on your Salesforce objects, use the API field name (e.g., Custom_Score__c) rather than the display label.
  • Connect a sandbox account during development and switch to production when you publish the workflow.

HubSpot (Coming Soon)

HubSpot is a popular CRM and marketing platform. The Buildorado integration will let you create and update contacts and deals in your HubSpot account. This integration is currently in development and will be available in an upcoming release.

Setting Up HubSpot

  1. Navigate to Settings > Integrations and click Connect next to HubSpot.
  2. Sign in with your HubSpot account in the authorization popup.
  3. Select the HubSpot portal you want to connect.
  4. Grant the following OAuth scopes:
    • crm.objects.contacts.write -- Create and update contacts
    • crm.objects.contacts.read -- Read contact data
    • crm.objects.companies.write -- Create and update companies
    • crm.objects.deals.write -- Create and update deals
  5. Once authorized, HubSpot shows as Connected with your portal name.

Operations

createContact

Create a new contact in HubSpot.

FieldTypeRequiredDescription
emailstringYesContact email address (used as unique identifier)
firstNamestringNoFirst name
lastNamestringNoLast name
phonestringNoPhone number
companystringNoCompany name

Output:

FieldTypeDescription
idstringThe HubSpot contact ID
emailstringThe contact's email address

updateContact

Update an existing contact's properties.

FieldTypeRequiredDescription
contactIdstringYesHubSpot contact ID to update
emailstringNoUpdated email address
firstNamestringNoUpdated first name
lastNamestringNoUpdated last name
phonestringNoUpdated phone number

Output:

FieldTypeDescription
idstringThe HubSpot contact ID

createDeal

Create a new deal in the HubSpot sales pipeline.

FieldTypeRequiredDescription
dealNamestringYesName of the deal
amountnumberNoDeal value
stagestringNoStage ID within the pipeline
closeDatestringNoExpected close date in YYYY-MM-DD format

Output:

FieldTypeDescription
idstringThe HubSpot deal ID
dealNamestringThe deal name

Field Mapping Example

Form Field              HubSpot Field
------                  ------
{{form.email}}       -- email
{{form.firstName}}   -- firstName
{{form.lastName}}    -- lastName
{{form.company}}     -- company
{{form.phone}}       -- phone

Common Pattern: Create Contact Then Deal

A typical CRM workflow creates the contact first, then uses the returned contact ID to create an associated deal:

[Form: Sales Inquiry]
  -- [HubSpot: createContact]
    email: {{form.email}}
    firstName: {{form.firstName}}
    lastName: {{form.lastName}}
  -- [HubSpot: createDeal]
    dealName: "{{form.company}} - {{form.product}}"
    amount: {{form.budget}}

Tips for HubSpot

  • HubSpot uses email as the unique identifier for contacts. If a contact with the same email already exists, the createContact operation returns the existing contact rather than creating a duplicate.
  • Custom properties must be created in HubSpot first. Use the property's internal name (e.g., custom_score) in the field mapping.
  • HubSpot free CRM has no API rate limits for most operations. Paid tiers have higher throughput allowances.

Dynamics 365

Microsoft Dynamics 365 is an enterprise CRM platform. The Buildorado integration connects through Microsoft OAuth and supports creating and listing contacts and accounts.

Setting Up Dynamics 365

  1. Navigate to Settings > Integrations and click Connect next to Dynamics 365.
  2. Sign in with your Microsoft 365 account that has access to Dynamics 365.
  3. Select the Dynamics 365 organization (environment) you want to connect.
  4. Grant the requested API permissions. The following scopes are required:
    • User.Read -- Read your profile
    • offline_access -- Allow Buildorado to maintain the connection
    • Dynamics CRM API access
  5. Once authorized, Dynamics 365 shows as Connected.

Operations

createContact

Create a new contact record in Dynamics 365.

FieldTypeRequiredDescription
orgUrlstringYesDynamics 365 organization URL (e.g., https://yourorg.crm.dynamics.com)
firstnamestringNoContact's first name
lastnamestringYesContact's last name
emailaddress1stringNoEmail address
telephone1stringNoPhone number
jobtitlestringNoJob title
companystringNoCompany name

Output:

FieldTypeDescription
contactidstringThe Dynamics 365 contact ID
fullnamestringThe contact's full name
emailaddress1stringThe contact's email address

listContacts

Retrieve a list of contacts from Dynamics 365.

FieldTypeRequiredDescription
orgUrlstringYesDynamics 365 organization URL
topnumberNoMaximum number of contacts to return
filterstringNoOData filter expression

Output:

FieldTypeDescription
contactsstringContacts as JSON

listAccounts

Retrieve a list of accounts from Dynamics 365.

FieldTypeRequiredDescription
orgUrlstringYesDynamics 365 organization URL
topnumberNoMaximum number of accounts to return
filterstringNoOData filter expression

Output:

FieldTypeDescription
accountsstringAccounts as JSON

Field Mapping

Dynamics 365 uses its own field naming conventions. Common mappings:

Form FieldDynamics 365 FieldEntity
First NamefirstnameContact
Last NamelastnameContact
Emailemailaddress1Contact
Phonetelephone1Contact
Job TitlejobtitleContact
CompanycompanyContact

Tips for Dynamics 365

  • Dynamics 365 requires an active license for the user whose account is used for the integration. A Dynamics 365 Sales or Customer Service license is sufficient.
  • Custom entities and fields are supported. Use the logical name (lowercase, no spaces) of the entity and field.
  • The orgUrl field is required for every operation. This is your Dynamics 365 organization URL (e.g., https://yourorg.crm.dynamics.com).
  • Admin consent may be required. Work with your Microsoft 365 administrator to approve the Buildorado application.

Best Practices for CRM Integrations

Deduplication

HubSpot uses email as the unique key for contacts. Salesforce does not deduplicate by default, so consider adding a branch node to check for existing records before creating new ones, or configure Salesforce duplicate rules in your org.

Error Handling

CRM API calls can fail due to validation errors (missing required fields), permission issues, or rate limits. Attach an error handler node to your CRM action to catch failures:

[CRM: createLead]
  -- success -- [Slack: "Lead created: {{salesforce_1.id}}"]
  -- error -- [Email: "CRM sync failed for {{form.email}}"]

Data Validation Before CRM Push

Use conditional logic to validate data before sending it to your CRM. For example, ensure the email field is not empty and the company name is provided:

[Form: Lead Capture]
  -- Branch: email is not empty AND company is not empty
    -- true -- [Salesforce: createLead]
    -- false -- [Email: "Incomplete submission from {{form.email}}"]

Using CRM Output in Downstream Actions

Every CRM operation returns output variables (record IDs, success status) that you can use in subsequent nodes:

[Salesforce: createLead]
  -- [Slack: "New lead {{salesforce_1.id}} created for {{form.company}}"]
  -- [Email: Send welcome to {{form.email}}]
  -- [Google Sheets: Log row with record ID {{salesforce_1.id}}]

On this page

CRM Integrations | Buildorado