Open Data In and Out → Donorfy migration. This entry requires the Donorfy migration feature to be enabled for your workspace and the relevant access permissions. Ask your administrator if it is unavailable.
The four stages are Credentials, Lookups, Lists and Import. Fetching data and importing records are separate actions.
1. Save and test credentials
Enter the Tenant code (the value Donorfy labels its API key) and the Access key generated by a Donorfy API permission. Click Save, then Test connection. The test uses saved credentials, so save changes before testing.
If an access key is already saved, enter a new one only to replace it. Keep access keys out of CSVs and support messages. For a connection failure, check both credential values; for a temporary service failure, retry after Donorfy becomes reachable.
2. Classify and map lookups
Use Retrieve lookups to bring in the source lists. Classify every constituent type as Contact, Organisation, Resource, Tribute fund or Skip and assign appropriate subtypes. Unclassified types block constituent importing.
Map each supported lookup value to its ThirdSectorBee equivalent. Auto-match suggests matches; review them. Where offered, Create and map or bulk creation creates missing target values. Save the mappings. Lookup groups shown under Information have no target equivalent and are for reference only.
Connection types must already be configured in Relationships → Configuration → Connection types; they are not created by this lookup screen. Creating other settings may require additional permissions and a default currency.
3. Fetch and preview lists
Paste a Donorfy list URL or UUID for each list you need, then use Queue fetch. Fetching requires a successful connection test and a valid list reference.
The fetch progresses through Queued, Preparing snapshot and Fetching rows to Completed, Failed or Incomplete. Use Preview to inspect cached source rows; preview does not import anything. Wait for a complete fetch before importing.
For Failed, queue it again after addressing the error. For Incomplete, compare fetched and expected row counts rather than treating the cache as the full list. Very large lists can exceed Donorfy’s snapshot window; split source lists by date and fetch manageable portions. Re-fetch refreshes the staged data.
4. Import in dependency order
Import Constituents first. Import the remaining available lists one at a time, following the dependency messages:
| Available list | Purpose |
|---|---|
| Constituents | Contacts, organisations, resources or tribute funds according to classification |
| Transactions | Payment records |
| Activities | Interaction records |
| Pledges | Pledged payment records |
| Recurring payment instructions | Standing recurring-payment arrangements |
| Fundraising pages | Fundraising page records |
| Memberships | Membership records; also reads the fetched Members list |
| Connections | Links between previously imported constituents |
Monitor both rows sent and Confirmed written, plus skipped, missing-detail and failed-to-write counts. A fetch completion or dispatch count alone does not prove records were written. Review representative target records before continuing to dependent lists.
Coverage and retries
The migration does not import every fetched list:
- Campaigns are handled through the Lookups stage.
- Members are consumed by the Memberships import rather than imported independently.
- Opportunities and recurring-payment beneficiaries have no equivalent imported record; supported pledges are imported separately.
- Gift Aid declarations are not imported because the source declarations lack the donor address required by the current claim workflow. Plan declaration handling separately.
A failed import offers a retry; a completed run offers Re-import. First correct classifications, mappings or missing dependencies and check already-written records. Re-importing is not a rollback. Preserve the Donorfy source identities used for matching and inspect skipped or failed records before considering migration complete.
For CSV imports instead, see Run an import.