Ongoing Sync Behavior
Last updated: March 30, 2026
Once the Virtuous integration is connected and your historical data has been migrated, the integration keeps both systems in sync automatically. This article explains how data flows between WeGive and Virtuous on an ongoing basis, what triggers a sync, and which records are included.
WeGive to Virtuous (Real-Time Push)
When a record is created or updated in WeGive, it is pushed to Virtuous immediately. This applies to donors, transactions, recurring donations, funds, campaigns, and contact information. You don't need to take any action for this to happen.
If you're using Batch Integration mode, donations are grouped and sent to the Virtuous Import Tool for review before they're committed to your database. If you're using Real-Time mode, donations are written directly to Virtuous with no review step. For details on how each mode works, see Batch Integration & the Virtuous Import Tool.
Virtuous to WeGive (Automatic Pull)
WeGive automatically pulls the latest changes from Virtuous every 15 minutes. This includes new contacts, updated donor information, new gifts, changes to projects and segments, and updated contact methods and addresses.
You don't need to trigger this manually. The integration runs on a 15-minute interval in the background. If you make a change in Virtuous, it may take up to 15 minutes to appear in WeGive.
Manual Sync Options
You can trigger a manual sync at any time from Data > Integrations in your WeGive dashboard. There are two options:
Sync All performs a full sync of all data between the two systems. This is useful if you suspect data has fallen out of sync or if you've made bulk changes in Virtuous that you want reflected in WeGive immediately. Full syncs take longer, especially for larger datasets.
Sync Since Last Update only syncs records that have changed since the last sync ran. This is faster and is usually sufficient for catching up on recent changes.
Which Transactions Sync
Not every transaction status triggers a sync to Virtuous. Here's how it works:
Always synced: Successful transactions and processing transactions (non-ACH) are always pushed to Virtuous.
Conditionally synced: Processing ACH transactions are only synced if you have the "Send Processing ACH as Success" setting enabled in your Virtuous integration configuration. If this setting is off, ACH transactions wait until they are fully confirmed before syncing. See Connecting WeGive to Virtuous for more on this setting.
Only if the record already exists in Virtuous: Failed and refunded transactions are only synced to Virtuous if the original transaction was already synced previously. WeGive will not push a brand new failed or refunded transaction to Virtuous. This prevents incomplete or erroneous records from being created in your CRM.
Transaction Status | Syncs to Virtuous? | Condition |
Successful | Yes | Always |
Processing (non-ACH) | Yes | Always |
Processing (ACH) | Conditional | Only if "Send Processing ACH as Success" is enabled |
Failed | Conditional | Only if the transaction already exists in Virtuous |
Refunded | Conditional | Only if the transaction already exists in Virtuous |
Recurring Donation Sync
Recurring donation plans sync bi-directionally between WeGive and Virtuous. When a donor sets up a new recurring plan in WeGive or changes an existing one, that update is pushed to Virtuous in real time. Changes made to recurring gifts in Virtuous are pulled into WeGive on the 15-minute interval.
Keep in mind that only supported frequencies will sync. If a recurring plan uses a frequency that Virtuous does not support, it will not sync and will eventually create an integration lock.
Supported frequencies: Monthly, Biweekly, Quarterly, Yearly, Daily, First and 15th
Not supported: Weekly, Semi-annually
If you have recurring plans with unsupported frequencies, see Prerequisites & Before You Begin for how to address this.
What Happens When a Sync Fails
If a record fails to sync, the integration will retry it automatically. After three consecutive failures, the record is moved to an integration lock to prevent infinite retry loops. Integration locks can be viewed and managed at Data > Integration Locks.
For more on how to monitor your integration and handle sync failures, see Monitoring Your Integration.