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:

  1. By hubspot_id. If the WeGive supporter already has a hubspot_id stored (from a previous sync), that ID is used directly.

  2. By email. If no hubspot_id exists, 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

email_1

email

Bi-directional

email_2

work_email

Bi-directional

first_name

firstname

Bi-directional

last_name

lastname

Bi-directional

phone

phone

Bi-directional

mobile_phone

mobilephone

Bi-directional

address_me_as

salutation

Bi-directional

gender

wegive_gender

Bi-directional

deceased

wegive_deceased

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

billing_address.address_line_1

address

Default source unless changed

billing_address.city

city

billing_address.state

state

billing_address.zip

zip

billing_address.country

country

mailing_address.address_line_1

wegive_mailing_address_line_1

Always synced to custom property

mailing_address.city

wegive_mailing_city

mailing_address.state

wegive_mailing_state

mailing_address.zip

wegive_mailing_zip

mailing_address.country

wegive_mailing_country

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

id

wegive_id

type

wegive_donor_type

created_at

wegive_donor_since

total_given

wegive_total_given

total_gifts

wegive_total_gifts

first_gift_date

wegive_first_gift_date

last_gift_date

wegive_last_gift_date

first_gift_amount

wegive_first_gift_amount

last_gift_amount

wegive_last_gift_amount

largest_gift

wegive_largest_gift

average_gift

wegive_average_gift

given_ytd

wegive_given_ytd

has_active_recurring

wegive_is_recurring_donor

recurring_amount

wegive_recurring_amount

donor_status

wegive_donor_status (new, active, lapsed, at_risk, churned)

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:

  1. By hubspot_id if one is already stored on the WeGive record.

  2. By domain if no hubspot_id exists. 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

name

name

Bi-directional

office_phone

phone

Bi-directional

billing_address.address_line_1

address

Bi-directional

billing_address.city

city

Bi-directional

billing_address.state

state

Bi-directional

billing_address.zip

zip

Bi-directional

billing_address.country

country

Bi-directional

Rollup and Identity Fields

Donation rollup properties on the HubSpot company:

WeGive Data

HubSpot Property

id

wegive_id

Entity type

wegive_entity_type (company or household)

created_at

wegive_donor_since

total_given

wegive_total_given

total_gifts

wegive_total_gifts

first_gift_date

wegive_first_gift_date

last_gift_date

wegive_last_gift_date

has_active_recurring

wegive_is_recurring_donor

donor_status

wegive_donor_status

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

name

name

id

wegive_id

Constant

wegive_entity_type = household

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_id field 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.