Integrations
HubSpot

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

  1. Open Settings → Connections → HubSpot.
  2. Click Connect.
  3. Sign in to HubSpot and allow Aila.
  4. 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.
  5. 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 objectWhenWhat
ContactEvery matched or created destinationCreate uses email, firstname, lastname, and hubspot_owner_id. Create does not set phone. Updates use mapped contact.* properties only.
DealWhen mapping includes deal.* and Aila selects one DealMapped Deal properties. Aila does not create a Deal.
NoteCreate Summary = In Notes (default)Call summary, rapport, follow-ups, and fields marked include-in-summary. Reprocess can add a second Note.
CallLog Calls = As Call engagementsCompleted call: time, duration in milliseconds when known, body, Aila URL, and owner. Associated to Contact and Deal. Idempotent.
TaskCreate Action Items = As TasksOne 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):

  1. Last 10 digits of HubSpot phone or mobilephone.

Email/name path (creates if missing):

  1. Exact Contact email.
  2. Name search, then create Contact (email / firstname / lastname / hubspot_owner_id).

Owner:

  1. 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.ssn
  • co_borrower_details.ssn
  • demographics.ethnicity
  • demographics.race
  • demographics.gender
  • demographics.co_borrower_ethnicity
  • demographics.co_borrower_race
  • demographics.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)

PathType
base.summarytext
base.contact_nametext
base.rapport_buildingarray (text property only)
base.follow_upsarray (text property only)
base.is_voicemailboolean
base.counterparty_typetext
base.send_applicationboolean (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_disposition
  • investor_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

SettingValuesDefault
Create Summary (create_summary)Off, In NotesIn Notes
Log Calls (log_calls)Off, As Call engagements (as_calls)Off
Create Action Items (create_action_items)Off, As TasksOff

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