HubSpot Integration: Contacts & Companies
Last updated: April 23, 2026
This article covers how people and organizations flow between WeGive and HubSpot. Individual supporters map to HubSpot contacts. Company supporters and households both map to HubSpot companies (distinguished by the wegive_entity_type property). This article walks through field mappings, the matching logic the integration uses to avoid duplicates, and the filtering options that control what gets synced.
Supporter (Individual) to HubSpot Contact
Individual WeGive supporters (people) map to HubSpot contacts. The sync is bi-directional, meaning edits in either system flow to the other.
Matching Logic
The integration tries to match a supporter to an existing HubSpot contact in this order:
By
hubspot_id. If the WeGive supporter already has ahubspot_idstored (from a previous sync), that ID is used directly.By email. If no
hubspot_idexists, the integration searches HubSpot for a contact with a matching email.
If a match is found, the existing HubSpot contact is updated. If no match is found, a new contact is created and its hubspot_id is stored on the WeGive supporter for future syncs.
409 conflict handling: If HubSpot rejects a push with a 409 Conflict (because a contact with the same email already exists), the integration extracts the existing HubSpot ID from the error response and links to it instead of failing. This prevents duplicates when a matching contact was created in HubSpot outside of WeGive.
If a supporter in WeGive does not have an email address, turning on the Contacts with emails only setting will skip them on push. This avoids cluttering your HubSpot CRM with low quality records.
Core Fields
Core contact fields that sync bi-directionally:
WeGive Field | HubSpot Property | Direction |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
Address Fields
The integration supports both billing and mailing addresses. The Address sync source setting controls which one powers HubSpot's standard address properties. The other address always syncs to a dedicated set of wegive_mailing_* custom properties so you never lose the data.
Billing vs mailing address mapping:
WeGive Field | HubSpot Property | Notes |
|
| Default source unless changed |
|
| |
|
| |
|
| |
|
| |
|
| Always synced to custom property |
|
| |
|
| |
|
| |
|
|
If you want mailing addresses to feed HubSpot's standard address fields instead, change the Address sync source setting from Billing to Mailing.
WeGive Rollup and Identity Fields
These fields let you segment, filter, and report on donation activity inside HubSpot. They are maintained by WeGive and pushed to HubSpot, since WeGive is the source of truth for donation totals.
Donation rollup properties on the HubSpot contact:
WeGive Data | HubSpot Property |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use wegive_total_given, wegive_last_gift_date, and wegive_donor_status to build HubSpot lists for lapsed donors, major donors, recent givers, or at risk recurring donors.
Company Supporter to HubSpot Company
WeGive company supporters (organizations that give) map to HubSpot companies. The sync is bi-directional.
Matching Logic
The integration matches company supporters to HubSpot companies in this order:
By
hubspot_idif one is already stored on the WeGive record.By domain if no
hubspot_idexists. HubSpot uses company domain as its primary deduplication key, so the integration follows suit.
If no match is found, a new HubSpot company is created and its ID is stored on the WeGive record.
Core Fields
Core company fields that sync bi-directionally:
WeGive Field | HubSpot Property | Direction |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
|
| Bi-directional |
Rollup and Identity Fields
Donation rollup properties on the HubSpot company:
WeGive Data | HubSpot Property |
|
|
Entity type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Household to HubSpot Company
WeGive households also map to HubSpot companies. They use the same company record type as company supporters but are distinguished by the wegive_entity_type property, which is set to household. This lets you filter households separately in HubSpot without creating a second object type.
Household fields on the HubSpot company:
WeGive Field | HubSpot Property |
|
|
|
|
Constant |
|
Household Membership
Household membership does sync to HubSpot. The integration provisions a custom association label called Household on the Contact to Company relationship, and when a household is pushed, it creates Contact to Company associations (labeled "Household") for every member of the household.
This matters because HubSpot's default Contact to Company association is usually interpreted as an employer relationship. By using a dedicated "Household" label, the integration keeps family relationships distinct from workplace relationships inside HubSpot.
How household vs employer relationships are labeled:
Relationship | Association Label |
Household member to household Company | Household |
Employee to employer Company | Default (primary) |
To filter for households in HubSpot, build a Company list where wegive_entity_type equals household. To see members of a specific household, open the Company record and look at associated contacts with the Household label.
Filtering: Who Gets Pushed to HubSpot
You have two levers to control which supporters end up in HubSpot.
Push supporters as contacts: When off, no supporters are pushed at all. You might use this if you only want donation deals in HubSpot and not contact records.
Contacts with emails only: When on, supporters without an email address are skipped during push. This is off by default but is recommended for most orgs.
You do not need to manually exclude deleted supporters. When a supporter is deleted in WeGive, the corresponding HubSpot contact remains in HubSpot but is no longer updated.
Editing a Contact in HubSpot
Edits made to synced fields in HubSpot flow back into WeGive on the next pull (every 15 minutes by default). A few things to know:
Edits to standard fields (email, name, phone, address) are applied to the supporter in WeGive.
Edits to rollup fields (such as
wegive_total_given) are not pulled back. WeGive recalculates these from actual donation activity.Edits to the
wegive_idfield are ignored. This is a system identifier and should never be changed manually.
Common Questions
What happens if two supporters in WeGive share the same email?
They will both attempt to match the same HubSpot contact. Merge the supporters in WeGive before enabling push, or ask WeGive Support for help deduplicating.
What happens if a HubSpot contact has no email?
They will not pull into WeGive if Contacts with emails only is on. Turn that off if you want to pull all contacts regardless.
Can I push only some supporters?
The integration is all or nothing based on the toggles above. If you need selective pushing (for example only major donors), use WeGive segments to control upstream record creation, or filter inside HubSpot on wegive_donor_status.
Can a contact belong to both a household and an employer company in HubSpot?
Yes. The Household association label is separate from the default employer association. A contact can be associated with multiple companies using different labels.