Skip to main content
Grain: CAMPAIGNS — one row per campaign. COMMUNICATIONS — one row per channel within a campaign. SEGMENTS — one row per recipient subgroup within a communication.
The campaign hierarchy flows top-down at setup (Campaign → Communication → Segment) but is queried bottom-up from the gift (GIFTS.SEGMENT_KEY). This page covers all tables in the hierarchy plus the email and event tables that connect to it.
Key rule: GIFTS.SEGMENT_KEY is the entry point into this hierarchy. Start there and join upward to reach campaign-level totals.

Table columns

Tables on this page: CAMPAIGNS · COMMUNICATIONS · SEGMENTS · EMAILS · EMAIL_VERSIONS · SENT_EMAILS · EVENTS · CONTACT_SEGMENT_STATISTICS

CAMPAIGNS

One row per top-level marketing initiative. Contains giving goals and date range for the campaign.
ColumnTypeNotes
CAMPAIGN_KEYTEXTPrimary key
NAMETEXTCampaign name (e.g. “End of Year 2025”)
DESCRIPTIONTEXTExtended description
START_DATE_TIME_UTCTIMESTAMPCampaign start date
END_DATE_TIME_UTCTIMESTAMPCampaign end date
GIVING_GOALNUMBERDollar goal for the campaign
NEW_GIVER_GOALNUMBERGoal for new donors
TOTAL_GIFT_GOALNUMBERGoal for number of gifts
HASHTAGTEXTAssociated social media hashtag
CAMPAIGN_IS_DELETEDBOOLEANSoft delete flag — always filter WHERE CAMPAIGN_IS_DELETED = FALSE
CAMPAIGN_IS_ARCHIVEDBOOLEANCampaign is archived

COMMUNICATIONS

One row per channel within a campaign (e.g. Direct Mail, Email Blast). Contains pre-aggregated performance totals.
ColumnTypeNotes
COMMUNICATION_KEYTEXTPrimary key
CAMPAIGN_KEYTEXTFK → CAMPAIGNS
NAMETEXTCommunication name
COMMUNICATION_TYPE_NAMETEXTChannel type (e.g. Email, Direct Mail)
DESCRIPTIONTEXTExtended description
START_DATE_TIME_UTCTIMESTAMPCommunication start date
GIVING_GOALNUMBERDollar goal for this communication
INTERNAL_COST_ESTIMATENUMBEREstimated internal cost
VENDOR_COST_ESTIMATENUMBEREstimated vendor cost
TOTAL_CONTACTSNUMBERTotal contacts in this communication
TOTAL_GIFTSNUMBERTotal number of gifts received
TOTAL_GIFT_AMOUNTNUMBERTotal dollar amount of gifts received
AVERAGE_GIFT_AMOUNTNUMBERAverage gift amount
MEDIAN_GIFT_AMOUNTNUMBERMedian gift amount
HIGHEST_GIFT_AMOUNTNUMBERLargest single gift received
TOTAL_PLEDGESNUMBERTotal number of pledges
TOTAL_AMOUNT_PLEDGEDNUMBERTotal dollar amount pledged
COMMUNICATION_IS_DELETEDBOOLEANSoft delete flag
COMMUNICATION_IS_ARCHIVEDBOOLEANCommunication is archived

SEGMENTS

One row per recipient subgroup within a communication. SEGMENT_KEY is the FK carried on GIFTS — it is the entry point for campaign attribution queries.
ColumnTypeNotes
SEGMENT_KEYTEXTPrimary key — also FK on GIFTS.SEGMENT_KEY
COMMUNICATION_KEYTEXTFK → COMMUNICATIONS
NAMETEXTSegment name (e.g. “Board Members”, “Lapsed Donors”)
DESCRIPTIONTEXTExtended description
CODETEXTSegment code for mail/print processing
PACKAGE_CODETEXTPackage code
PACKAGE_DESCRIPTIONTEXTPackage description
TOTAL_CONTACTSNUMBERNumber of contacts in this segment
TOTAL_GIFTSNUMBERTotal gifts attributed to this segment
TOTAL_GIFT_AMOUNTNUMBERTotal gift revenue attributed to this segment
AVERAGE_GIFT_AMOUNTNUMBERAverage gift amount
MEDIAN_GIFT_AMOUNTNUMBERMedian gift amount
HIGHEST_GIFT_AMOUNTNUMBERLargest single gift
COST_PER_CONTACTNUMBERProduction cost per contact
TOTAL_PLEDGESNUMBERTotal pledges attributed to this segment
TOTAL_AMOUNT_PLEDGEDNUMBERTotal pledge amount
SEGMENT_IS_DELETEDBOOLEANSoft delete flag

EMAILS

One row per email created within a communication. Contains aggregate performance metrics across all versions.
ColumnTypeNotes
EMAIL_KEYTEXTPrimary key
COMMUNICATION_KEYTEXTFK → COMMUNICATIONS
SEGMENT_KEYTEXTFK → SEGMENTS (optional)
EMAIL_LIST_KEYTEXTFK → EMAIL_LISTS — the list the email was sent to
NAMETEXTEmail name
SUBJECTTEXTEmail subject line
FROM_NAMETEXTSender display name
FROM_EMAILTEXTSender email address
RECIPIENTSNUMBERTotal recipients
OPENSNUMBERTotal opens
UNIQUE_OPENSNUMBERUnique individuals who opened
OPEN_RATEFLOATOpen rate (opens / recipients)
CLICKSNUMBERTotal clicks
UNIQUE_CLICKSNUMBERUnique individuals who clicked
CLICK_RATEFLOATClick rate
USE_SPLIT_TESTBOOLEANEmail uses A/B split testing
EMAIL_IS_DELETEDBOOLEANSoft delete flag
EMAIL_IS_ARCHIVEDBOOLEANEmail is archived

EMAIL_VERSIONS

One row per version of an email (e.g. version A and version B in a split test). Individual delivery records live in SENT_EMAILS.
ColumnTypeNotes
EMAIL_VERSION_KEYTEXTPrimary key
EMAIL_KEYTEXTFK → EMAILS
NAMETEXTVersion name
SUBJECTTEXTSubject line for this version
FROM_NAMETEXTSender display name
FROM_EMAILTEXTSender email address
PUBLISHED_DATE_TIME_UTCTIMESTAMPDate this version was published and sent
RECIPIENTSNUMBERRecipients for this version
OPENSNUMBERTotal opens
UNIQUE_OPENSNUMBERUnique opens
OPEN_RATEFLOATOpen rate
CLICKSNUMBERTotal clicks
UNIQUE_CLICKSNUMBERUnique clicks
CLICK_RATEFLOATClick rate
PUBLISHEDBOOLEANVersion has been published and sent
EMAIL_VERSION_IS_DELETEDBOOLEANSoft delete flag

SENT_EMAILS

One row per email delivered to a contact individual. This is the most granular email table — use it for individual-level engagement analysis (opens, clicks, unsubscribes).
ColumnTypeNotes
SENT_EMAIL_KEYTEXTPrimary key
EMAIL_VERSION_KEYTEXTFK → EMAIL_VERSIONS — the specific version sent
CONTACT_KEYTEXTFK → CONTACTS
CONTACT_INDIVIDUAL_KEYTEXTFK → CONTACT_INDIVIDUALS — the specific recipient
EMAIL_ADDRESSTEXTEmail address the message was sent to
DELIVERY_STATUSNUMBERDelivery outcome — decode with TYPE_REFERENCES (Entity: SentEmail, Property: DeliveryStatus)
SCHEDULED_TO_SEND_UTCTIMESTAMPScheduled send time
FIRST_OPENED_UTCTIMESTAMPFirst open timestamp
LAST_OPENED_UTCTIMESTAMPMost recent open timestamp
FIRST_CLICKED_UTCTIMESTAMPFirst click timestamp
LAST_CLICKED_UTCTIMESTAMPMost recent click timestamp
UNSUBSCRIBE_DATE_TIME_UTCTIMESTAMPDate the recipient globally unsubscribed
GROUP_UNSUBSCRIBE_DATE_TIME_UTCTIMESTAMPDate the recipient unsubscribed from the email list
OPENEDBOOLEANEmail was opened at least once
CLICKEDBOOLEANEmail was clicked at least once
UNSUBSCRIBEBOOLEANRecipient globally unsubscribed
GROUP_UNSUBSCRIBEBOOLEANRecipient unsubscribed from this list
MARKED_AS_SPAMBOOLEANRecipient marked the email as spam
SENT_EMAIL_IS_DELETEDBOOLEANSoft delete flag

EVENTS

One row per event linked to a campaign or communication. Contains date, location, attendance goals, and actuals.
ColumnTypeNotes
EVENT_KEYTEXTPrimary key
CAMPAIGN_KEYTEXTFK → CAMPAIGNS
COMMUNICATION_KEYTEXTFK → COMMUNICATIONS (optional)
SEGMENT_KEYTEXTFK → SEGMENTS (optional)
NAMETEXTEvent name
EVENT_TYPETEXTDescriptive event type
DESCRIPTIONTEXTEvent description
START_DATE_TIME_UTCTIMESTAMPEvent start date and time
END_DATE_TIME_UTCTIMESTAMPEvent end date and time
LOCATION_NAMETEXTVenue name
ADDRESS1TEXTVenue address line 1
CITYTEXTVenue city
STATE_CODETEXTVenue state
POSTALTEXTVenue postal code
TIME_ZONETEXTEvent time zone
TOTAL_INVITESNUMBERTotal invitations sent
TOTAL_RSVPSNUMBERTotal RSVPs received
TOTAL_ATTENDEDNUMBERTotal contacts who attended
INVITE_ONLYBOOLEANEvent is invite-only
RSVP_REQUIREDBOOLEANRSVP is required
EVENT_IS_DELETEDBOOLEANSoft delete flag
EVENT_IS_ARCHIVEDBOOLEANEvent is archived

CONTACT_SEGMENT_STATISTICS

One row per contact per segment — pre-aggregated giving history scoped to a specific segment. Useful for measuring a contact’s historical response to a campaign or communication.
ColumnTypeNotes
CONTACT_SEGMENT_STATISTIC_KEYTEXTPrimary key
CONTACT_KEYTEXTFK → CONTACTS
SEGMENT_KEYTEXTFK → SEGMENTS
COMMUNICATION_KEYTEXTFK → COMMUNICATIONS
LIFE_TO_DATE_GIVINGNUMBERTotal giving attributed to this segment (all time)
LIFE_TO_DATE_GIFT_COUNTNUMBERTotal gift count for this segment
ROLLING_YEAR_GIVINGNUMBERGiving in the past 12 months
LAST_GIFT_AMOUNTNUMBERMost recent gift amount in this segment
LAST_GIFT_DATE_UTCTIMESTAMPMost recent gift date
FIRST_GIFT_DATE_UTCTIMESTAMPFirst gift date in this segment
LARGEST_GIFT_AMOUNTNUMBERLargest gift in this segment
AVERAGE_GIFT_AMOUNTNUMBERAverage gift amount
CONTACT_SEGMENT_STATISTIC_IS_DELETEDBOOLEANSoft delete flag
Data freshness: These tables sync continuously from Virtuous CRM. Typical lag is under 4 hours. To check when a record was last updated, inspect the SF__ROW_SYNCED_DATE_TIME_UTC column on any table.
Last modified on May 22, 2026