Grain:
CONTACTS — one row per giving unit (a household or organization). CONTACT_INDIVIDUALS — one row per person within a contact.CONTACTS is the central entity in Virtuous — it represents the giving unit (a household or organization). This diagram shows the tables that make up a contact’s profile: the people within it (CONTACT_INDIVIDUALS) and the stewardship activity around it.
Key concept: ACONTACTis the giving unit. ACONTACT_INDIVIDUALis a person within that contact. Gifts belong to the contact; emails are sent to individuals. Always join toCONTACT_INDIVIDUALSwhen you need a person’s name or email address.
Solid lines — required join (FK always populated). Dotted lines — optional join (FK is nullable; always use LEFT JOIN).
Table columns
Tables on this page: CONTACTS · CONTACT_INDIVIDUALS · NOTES · TASKS · RECEIPTS · GIFTS (boundary)CONTACTS
One row per giving unit.LIFE_TO_DATE_GIVING and YEAR_TO_DATE_GIVING are pre-aggregated giving totals — no join to GIFTS required. For all contact-related tables, see Contacts — extended reference.
CONTACT_INDIVIDUALS
One row per person within a contact. FilterCONTACT_INDIVIDUAL_IS_PRIMARY = TRUE to get the main person. Email and phone live here, not on CONTACTS.
NOTES
One row per stewardship note logged against a contact or individual.PLAIN_TEXT_VALUE contains the note content without formatting.
TASKS
One row per action item on a contact.TASK_STATUS is a numeric code.
RECEIPTS
One row per receipt issued to a contact. For the full receipts hub including receipted gifts and statement runs, see Receipts — extended reference.GIFTS
GIFTS appears in this diagram as the transaction linked to a contact. The full gift structure is documented in Gifts — extended reference.