HubSpot Integration: Overview & Setup

Last updated: April 23, 2026

The WeGive HubSpot integration keeps supporter records, one time donations, and recurring donations aligned between WeGive and HubSpot CRM. Supporters become HubSpot contacts and companies, donations become deals in a Donations pipeline, and recurring plans become deals in a Recurring Donations pipeline. This article covers what syncs, how often, and how to connect the two systems.

What Syncs

At a glance, here is how each WeGive object maps to HubSpot:

WeGive

HubSpot

Supporter (individual)

Contact

Supporter (company)

Company

Household

Company (distinguished by a WeGive property)

Transaction

Deal (Donations pipeline)

Scheduled Donation

Deal (Recurring Donations pipeline)

Campaign

Deal property on related deals (not a separate HubSpot record)

Fund

Deal property on related deals (not a separate HubSpot record)

Full field-level mappings are covered in later articles:

  • Article 2: Contacts & Companies

  • Article 3: Donations

  • Article 4: Recurring Donations

  • Article 5: Supporting Records & What Is Not Mapped

Sync Timing

The integration runs in two directions.

Push (WeGive to HubSpot) happens in near real time. When a supporter is created, a donation is completed, or a recurring plan changes state in WeGive, the update is pushed to HubSpot within seconds.

Pull (HubSpot to WeGive) runs on a scheduled interval, every 15 minutes by default. Contact and company edits made in HubSpot flow back into WeGive on that cadence.

Deletion sync flows one direction only, from HubSpot to WeGive. When a contact, company, or deal is deleted in HubSpot, WeGive receives a secure webhook notification and soft-deletes the matching record. Deletion sync can be toggled on or off in the integration settings. See Article 6 (coming soon) for the full deletion behavior.

For the first sync after connecting, an initial backfill runs on the background job queue. Depending on the size of the HubSpot portal, the first full sync can take anywhere from a few minutes to a few hours.

Prerequisites

On the HubSpot side

HubSpot requirements and supported tiers:

Requirement

Detail

HubSpot subscription

Any tier that includes the CRM. Free, Starter, Professional, and Enterprise are all supported.

API access

Enabled on the HubSpot account.

User permissions

The person completing the connection must have admin access in HubSpot.

Pipeline capacity

Free HubSpot accounts have a single pipeline. The integration handles this by adding stages to the default pipeline instead of creating two new ones. Starter allows 15 pipelines and Professional or higher allows 50, so paid tiers get two dedicated pipelines.

Testing the integration before you go live: HubSpot sandboxes are an Enterprise-only feature. If you are on Free, Starter, or Professional and want a safe space to validate the connection before pointing it at your production data, create a free HubSpot developer test account at developers.hubspot.com and connect it to a WeGive test organization. The integration behaves identically on a developer test account, so anything you see there will match production.

On the WeGive side

WeGive requirements for enabling the integration:

Requirement

Detail

WeGive plan

The HubSpot integration must be enabled for the organization.

User permissions

Admin access in WeGive is required to authorize the connection and configure sync settings.

Organization setup

Funds and campaigns should be created before enabling sync so attribution flows to HubSpot correctly.

Authentication

The integration uses OAuth 2.0 with a WeGive-managed HubSpot app. You do not need to generate an API key, create a private app in HubSpot, or configure any credentials. WeGive handles token exchange, storage, and refresh automatically. Access tokens are valid for 30 minutes and are refreshed automatically before expiry.

Connection Steps

Follow these steps in order. Most customers can complete the connection in under ten minutes.

Step 1: Open the integration

  1. Sign in to your WeGive dashboard as an admin.

  2. Go to Data > Integrations.

  3. Click HubSpot from the list of available integrations.

Step 2: Start the OAuth flow

  1. Click Connect to HubSpot.

  2. You are redirected to HubSpot's sign in page. Sign in with a HubSpot admin account.

  3. HubSpot asks you to approve the permissions WeGive needs. Click Choose Account and then Connect app.

If you see an OAuth error, the most common cause is that your HubSpot user is not an admin in the portal. Switch to a user with admin rights and try again.

Step 3: Provision HubSpot

After the OAuth handshake is complete, click Provision HubSpot in the integration settings. This creates everything WeGive needs in your HubSpot portal. Provisioning is idempotent, so if you click it a second time, existing items are safely skipped.

Provisioning creates three categories of items.

Deal pipelines. On paid tiers, two separate pipelines are created. On Free tier, stages are added to the existing default pipeline instead.

Pipelines and their stages:

Pipeline

Stages

Donations

Success, Attempted, Failed

Recurring Donations

Active, Paused, Cancelled, Ended, In Arrears, Missing, Archived, Expiring Soon, Ending Soon

Custom properties (54 total). A wegive_* namespaced property is created on Contacts, Companies, and Deals so donation data can be reported on and segmented inside HubSpot.

Custom property counts by HubSpot object:

Object

Count

Examples

Contact

22

wegive_id, wegive_total_given, wegive_donor_status, wegive_mailing_*

Company

9

wegive_id, wegive_entity_type, wegive_total_given

Deal

23

wegive_fund_name, wegive_payment_method, wegive_net_amount, wegive_recurring_status

The full field lists are in Articles 2, 3, and 4.

Custom association labels. Two HubSpot association labels are provisioned so relationships between records can be modeled accurately.

Association labels WeGive creates during provisioning:

Label

Association

Used For

Household

Contact to Company

Marking household members on their household Company record, so household relationships do not get confused with employer relationships.

Recurring Plan

Deal to Deal

Linking an individual transaction deal to its parent recurring plan deal in the Recurring Donations pipeline.

Step 4: Configure sync settings

Back in WeGive, review each toggle and set it based on how your team uses HubSpot.

Push settings (WeGive to HubSpot):

Setting

What it does

Push supporters as contacts

Individual supporters are created or updated as HubSpot contacts.

Push households as companies

WeGive households are created or updated as HubSpot companies.

Push transactions as deals

Completed and attempted transactions create deals in the Donations pipeline.

Push scheduled donations as deals

Recurring plans create deals in the Recurring Donations pipeline.

Pull settings (HubSpot to WeGive):

Setting

What it does

Pull contacts as supporters

HubSpot contacts are created or updated as WeGive supporters.

Pull companies as company supporters

HubSpot companies are created or updated as WeGive company supporters.

Pull companies as households

HubSpot companies where wegive_entity_type is household are created or updated as WeGive households.

Pull deals as transactions

Deals in the Donations pipeline update existing WeGive transactions.

Pull recurring deals as scheduled donations

Deals in the Recurring pipeline link to existing WeGive scheduled donations.

Sync options and defaults:

Option

Default

Notes

Address sync source

Billing

Choose billing or mailing as the source for the contact's address, city, state, zip, country properties.

Close date mapping

Initiated at

Controls whether the deal closedate maps to the WeGive initiated date or completed date.

Contacts with emails only

Off

When on, supporters without an email address are skipped during push. Recommended to keep HubSpot clean.

Send processing ACH as success

Off

If on, ACH transactions in the processing state are pushed to the Success stage instead of Attempted.

Pull frequency

15 minutes

How often WeGive polls HubSpot for changes.

Deletion sync

Off

Enable to allow HubSpot deletions to soft-delete the matching record in WeGive.

Step 5: Enable the integration

  1. Toggle Enabled on the integration card.

  2. The initial backfill begins immediately. You can continue working in WeGive while it runs.

Verifying the Connection

Once the connection is live, verify it end to end before relying on the data.

  1. In HubSpot, confirm both pipelines exist with the stages listed above (or that the default pipeline contains the stages on Free tier).

  2. In HubSpot, open a contact and confirm the wegive_* custom properties are present (they may be empty until the first supporter syncs).

  3. In WeGive, process a small test donation (a $1 gift from a test donor works well).

  4. Within a couple of minutes, confirm a deal appears in HubSpot's Donations pipeline at the Success stage.

  5. Edit the test contact's first name in HubSpot, wait for the next pull interval, and confirm the change appears on the supporter in WeGive.

If any step fails, jump to the FAQ article or reach out to WeGive Support.

Common Setup Issues

Symptoms, likely causes, and how to resolve them:

Symptom

Likely Cause

Resolution

OAuth callback fails

User lacks HubSpot admin permissions

Re-run the flow with a HubSpot admin user.

Pipelines not created

API access disabled in the HubSpot portal, or Free tier limit hit

Enable API access in HubSpot account settings, or accept stages on the default pipeline if on Free.

Duplicate contacts in HubSpot

Supporters without email addresses being pushed

Turn on Contacts with emails only, or clean supporter records in WeGive.

Deals missing stage

The provisioned pipeline was edited after setup

Re-run Provision HubSpot so WeGive can remap stage IDs.

Next Steps

Once the connection is live, read these articles in order to understand exactly what flows between the two systems:

  1. Article 2: Contacts & Companies

  2. Article 3: Donations

  3. Article 4: Recurring Donations

  4. Article 5: Supporting Records & What Is Not Mapped