← Index

Acumatica → HubSpot Sync

Scheduled batch sync. Runs on a cron schedule (see SYNC_CRON_SCHEDULE in .env).
1 — Customer → Company syncCompanies
Source
Acumatica Customer endpoint (paginated)
Destination
HubSpot Companies
Match key
HubSpot property acumatica_baccountid (configurable via HUBSPOT_COMPANY_ACUMATICA_ID_PROPERTY)
Field mapping
fields/customers_field_map.csv
Billing address enrichment
If a customer record is missing billing address data, the sync performs an individual detail fetch with $expand=BillingContact (falls back through several expand strategies automatically)
Outcome
Creates new company if no match found; updates existing company properties if match found
2 — Contact syncContacts
Source
Acumatica Contact endpoint (paginated, $expand=Address)
Destination
HubSpot Contacts
Match key
HubSpot property acumatica_contact_id (configurable via HUBSPOT_CONTACT_ACUMATICA_ID_PROPERTY), falls back to email
Field mapping
fields/contacts_field_map.csv
Filtering
Only contacts whose BusinessAccount matches a synced customer are included
Address enrichment
If address is missing from the list response, a per-contact detail fetch is performed
Outcome
Creates or updates HubSpot contacts, then creates company–contact associations
Field Map CSVsReference

Both CSV files have columns: acumatica_field hubspot_property enabled notes

Customer map
fields/customers_field_map.csv
Contact map
fields/contacts_field_map.csv
Run logsLogs
Log file
exports/sync_runs.jsonl (configurable via SYNC_RUN_LOG_FILE)