HubSpot Integration
Aila sends call recaps and mapped mortgage fields into HubSpot. Aila extracts the fields in this schema from the call. HubSpot receives only the objects below, plus the properties that you map.
Create each HubSpot property in your portal first. Aila does not create HubSpot properties.
Connect
- Open Settings → Connections → HubSpot.
- Click Connect.
- Sign in to HubSpot and allow Aila.
- Aila needs a HubSpot owner: the Aila user’s HubSpot user, or the Contact’s owner if the Aila user has no HubSpot owner. If neither exists, Aila writes nothing.
- Open Settings → Custom Datasets. Map Aila fields to HubSpot Contact and Deal properties that already exist in your portal.
Reconnect if Aila asks. New scopes are required for Deal, Task, and Call writes.
What Aila writes
| HubSpot object | When | What |
|---|---|---|
| Contact | Every matched or created destination | Create uses email, firstname, lastname, and hubspot_owner_id. Create does not set phone. Updates use mapped contact.* properties only. |
| Deal | When mapping includes deal.* and Aila selects one Deal | Mapped Deal properties. Aila does not create a Deal. |
| Note | Create Summary = In Notes (default) | Call summary, rapport, follow-ups, and fields marked include-in-summary. Reprocess can add a second Note. |
| Call | Log Calls = As Call engagements | Completed call: time, duration in milliseconds when known, body, Aila URL, and owner. Associated to Contact and Deal. Idempotent. |
| Task | Create Action Items = As Tasks | One Task per follow-up line. Associated to Contact and Deal. Idempotent. |
Aila sets Aila contact status from hs_is_closed / hs_is_closed_won on the selected Deal. Aila does not change Deal stage.
Call, Task, and Note may associate to a Deal. That is HubSpot-specific. Salesforce Tasks attach to the person only.
The call summary Note can include a Social Security number if the model put it in the summary text. Mapped ssn properties are still blocked.
Match rules
Phone path (match only; does not create):
- Last 10 digits of HubSpot
phoneormobilephone.
Email/name path (creates if missing):
- Exact Contact
email. - Name search, then create Contact (
email/firstname/lastname/hubspot_owner_id).
Owner:
- Prefer the Aila user’s HubSpot owner. Else use the Contact owner. If neither exists, Aila writes nothing.
Deal selection: page all associated Deals. Exactly one Deal → use it (even if closed). Else pick one open Deal (hs_is_closed is not true), newest hs_lastmodifieddate. If two or more open Deals remain, Aila skips Deal property writes and still writes Contact, Note, Call, and Task. The call shows that skip. Aila does not use an LLM to pick among Deals.
Mapping rules
- Overwrite: replace the HubSpot value.
- Skip if exists: write only when the HubSpot property is empty.
- Append: add a timestamped line to text properties.
Empty Aila values do not clear HubSpot properties.
Map Aila paths to contact.{internalName} or deal.{internalName} (for example contact.firstname, deal.amount). The HubSpot internal name must already exist.
Standard Contact fields you may map without a custom property: firstname, lastname, email, phone, mobilephone, address, city, state, zip.
Fields Aila will not map
These Aila paths never write to HubSpot, even if a mapping exists:
client_details.ssnco_borrower_details.ssndemographics.ethnicitydemographics.racedemographics.genderdemographics.co_borrower_ethnicitydemographics.co_borrower_racedemographics.co_borrower_gender
Keep Social Security numbers and HMDA demographics in Aila / MISMO export.
Money values in this catalog are often $X,XXX strings. Aila strips currency punctuation before a HubSpot number property. Enums use Aila labels; HubSpot option internals must match or that one field is skipped.
Source schema (Aila mortgage dataset)
HubSpot gets a property only when you map that path to contact.{property} or deal.{property}. Optional groups (call_disposition, investor_details, pipeline_state, base.send_application) appear only on the matching prompt variant.
base (Info)
| Path | Type |
|---|---|
base.summary | text |
base.contact_name | text |
base.rapport_building | array (text property only) |
base.follow_ups | array (text property only) |
base.is_voicemail | boolean |
base.counterparty_type | text |
base.send_application | boolean (optional prompt flag) |
There is no base.disposition. Disposition is call_disposition.call_disposition.
client_details
name, phone, email, ssn (blocked), dob, citizenship_status, working_with_realtor.
client_address
street_address, address_line_2, unit_type, unit_identifier, city, state, zip_code, county, months_at_address, residency_basis.
property_address
street_address, address_line_2, unit_type, unit_identifier, city, state, zip_code, county.
purchase_details
property_use_type, property_type, property_price, min_purchase, max_purchase, annual_property_tax, annual_insurance, monthly_hoa, year_built, fha_section_of_act, financed_unit_count, property_mixed_use, property_existing_clean_energy_lien, property_estate_type, move_in_timeline.
proposed_loan_details
purpose, type, down_payment, amount, rate, term_years, desired_term, desired_monthly_payment, interest_in_impound, cashout_amount, cashout_percent, has_balloon_payment, is_interest_only, has_prepayment_penalty, has_temporary_buydown, has_below_market_subordinate, is_energy_related, is_renovation_loan, lender_credit_amount, seller_credit_amount, gift_amount, employer_assistance_amount, estimated_closing_date, va_first_time_use, va_funding_fee_exempt, va_case_number, closing_cost_points_discount, cash_out_purpose_primary, rate_watch_set, rate_watch_trigger_rate, competing_offer_rate.
qualification_details
credit_score, credit_consent_received, monthly_rent, employer, employment_status, employment_reporting, employment_start_date, is_first_time_home_buyer, is_veteran, had_bankruptcy, had_foreclosure, marital_status, dependent_count, dependent_ages, currently_owned_financed_properties_count, has_collection_or_charge_off, collection_amount, collection_creditor_name, collection_status_description, outstanding_judgments, party_to_lawsuit, presently_delinquent_federal_debt, prior_deed_in_lieu, prior_short_sale, proposed_clean_energy_lien, undisclosed_borrowed_funds, undisclosed_comaker_of_note, undisclosed_credit_application, undisclosed_mortgage_application, special_borrower_seller_relationship, pay_frequency, bankruptcy_must_wait_until, secondary_employment_status.
employer_details
position_description, address_line, city, state, zip_code, months_at_employer.
previous_employer_details
employer, employment_status, position_description, employment_start_date, employment_end_date, monthly_income, address_line, city, state, zip_code.
income_details
base, commission, stock_compensation, bonuses, overtime, social_security, pension, pension_2, disability, retirement, rental_income, other_income, other_income_description, has_social_security_income, has_pension_income, has_retirement_distribution_income, secondary_gross_monthly_income.
asset_details
property_value, property_equity, business_value, business_equity, liquid_value, checking_balance, savings_balance, money_market_balance, stock_brokerage_balance, retirement_account_balance, primary_bank_name, cash_on_hand_earnest_money.
debt_details
total_credit_card_debt, monthly_mortgage_payments, monthly_car_payments, monthly_tax_and_insurance_payments, monthly_credit_card_payments, monthly_student_loan_payments, monthly_personal_loan_payments, monthly_other_payments, monthly_child_support, monthly_alimony, monthly_separate_maintenance, remaining_mortgage_terms, remaining_personal_loan_terms, mortgage_creditor_name, auto_creditor_name, student_loan_servicer_name, credit_card_issuer_names, personal_loan_creditor_name, mortgage_unpaid_balance, mortgage_payment_includes_taxes_insurance, auto_loan_unpaid_balance, student_loan_unpaid_balance, personal_loan_unpaid_balance, remaining_car_terms, remaining_student_loan_terms, remaining_other_terms, loan_type_original.
demographics (blocked)
ethnicity, race, gender, co_borrower_ethnicity, co_borrower_race, co_borrower_gender. Never write to HubSpot.
co_borrower_details
Not the same shape as borrower groups. Income is inline (base_income). ssn is blocked.
name, phone, email, ssn (blocked), dob, credit_consent_received, citizenship_status, marital_status, employer, employment_status, employment_start_date, base_income, commission, bonuses, overtime, social_security, pension, pension_2, disability, retirement, rental_income, is_veteran, had_bankruptcy, had_foreclosure, dependent_count, dependent_ages, outstanding_judgments, party_to_lawsuit, presently_delinquent_federal_debt, prior_deed_in_lieu, prior_short_sale, proposed_clean_energy_lien, undisclosed_borrowed_funds, undisclosed_comaker_of_note, undisclosed_credit_application, undisclosed_mortgage_application, special_borrower_seller_relationship.
co_borrower_address
street_address, address_line_2, unit_type, unit_identifier, city, state, zip_code, county, months_at_address. No residency_basis.
co_borrower_employer_details / co_borrower_previous_employer_details
Same keys as employer_details / previous_employer_details.
existing_property_details
disposition, street_address, city, state, zip_code, estimated_value, unpaid_mortgage_balance, monthly_rental_income, estimated_net_proceeds.
owned_properties / additional_employers
Arrays of objects: owned_properties.properties, additional_employers.employers. Map the whole array to a HubSpot text property. Indexed first-record paths: owned_properties.properties.0.disposition and additional_employers.employers.0.employer. There is no owned_properties.street_address.
Owned-property object keys: disposition, street_address, unit_designator_type, unit_identifier, city, state, zip_code, property_current_usage_type, estimated_value, unpaid_mortgage_balance, monthly_mortgage_payment, monthly_hoa_expense, monthly_tax_insurance_expense, monthly_maintenance_expense, monthly_rental_income, monthly_net_rental_income, estimated_net_proceeds.
Additional-employer object keys: borrower_role, status_type, employer, employment_status, position_description, employment_start_date, employment_end_date, monthly_income, address_line, city, state, zip_code.
pipeline_state (post-application calls)
uw_status, conditional_approval_date, clear_to_close_date, condition_count, conditions_outstanding (array), file_suspended, esign_status, missing_documents (array), doc_chase_urgency, appraisal_status, appraisal_value, appraisal_gap, repairs_required, reinspection_date, title_status, title_commitment_received, title_objections_resolved, title_company_name, homeowners_insurance_bound, flood_zone_required, flood_insurance_bound, insurance_premium_confirmed, signing_appointment_datetime, signing_method, closing_location, closing_coordinator_name, closing_coordinator_phone, notary_confirmed, borrower_id_requirement_met, wire_instructions_sent, wire_instructions_verified, wire_amount, wire_fraud_verification_call_completed, cashier_check_alternative, rate_lock_status, rate_lock_expiration_date, rate_lock_extension_needed, final_cash_to_close, final_apr, final_monthly_payment, cd_amended_or_original.
Optional groups (prompt variants)
call_disposition.call_dispositioninvestor_details.rehab_budget,current_rental_income,expected_rental_income,expected_value
Org-specific datasets
CliffCo Past Client Check-In is not part of the default HubSpot schema. That org’s custom prompt adds past_client_check_in.call_purpose, in_market_intent, servicing_topic, next_step, handoff_to_loan_officer. Those paths map the same way when that prompt is on the call.
Settings
| Setting | Values | Default |
|---|---|---|
Create Summary (create_summary) | Off, In Notes | In Notes |
Log Calls (log_calls) | Off, As Call engagements (as_calls) | Off |
Create Action Items (create_action_items) | Off, As Tasks | Off |
Troubleshooting
- No write: no HubSpot owner on the Aila user and none on the Contact.
- Deal fields empty: no associated Deal, or more than one open Deal (see the skip on the call).
- Mapped field empty: the call did not extract that path, the HubSpot property internal name does not match, the property is read-only, or an enum option did not match.
- Reconnect prompt: grant the new Deal / Task / Call / schema scopes.
- Two Notes for one call: Notes are not idempotent. Calls and Tasks are.
Next Steps
- Custom Datasets — Map Aila paths to HubSpot properties
- Settings > Connections — Connect or reconnect HubSpot