Skip to main content
Grain: PLEDGES — one row per commitment to give. PLEDGE_PAYMENTS — one row per installment against a pledge (null GIFT_KEY means the payment is expected but not yet received).
A GIFT_ASK is a specific solicitation made to a contact for a project. When a contact commits to giving, a PLEDGE is created — optionally linked back to the ask. PLEDGE_PAYMENTS track each scheduled installment, and when payment arrives, it is recorded as a GIFT.
Key rule: A pledge can exist without a gift ask (contact committed without a formal ask). Always use a LEFT JOIN when connecting PLEDGES to GIFT_ASKS.
Solid lines — required join (FK always populated). Dotted lines — optional join (FK is nullable; always use LEFT JOIN).

Table columns

Tables on this page: PLEDGES · GIFT_ASKS · PLEDGE_PAYMENTS · CONTACTS (boundary) · GIFTS (boundary) · PROJECTS (boundary)
PLEDGES.STATUS is a numeric code. Decode it using TYPE_REFERENCES with ENTITY = 'Pledge' and PROPERTY = 'Status'. See the decode pattern.

PLEDGES

One row per pledge commitment. Tracks the total amount pledged, how much remains (BALANCE), and current status. Fulfillment is tracked via PLEDGE_PAYMENTS.

GIFT_ASKS

One row per formal solicitation made to a contact. Linked optionally to GIFTS (when fulfilled) and PLEDGES (when it results in a commitment).

PLEDGE_PAYMENTS

One row per scheduled installment against a pledge. A null GIFT_KEY means the installment was expected but not yet received.

CONTACTS

CONTACTS appears in this diagram as the giving unit making the pledge and receiving the ask. The full contacts structure is documented in Contacts — extended reference.

GIFTS

GIFTS appears in this diagram as the transaction recorded when a pledge payment is collected. The full gift structure is documented in Gifts — extended reference.

PROJECTS

PROJECTS appears in this diagram as the fund the pledge and ask are associated with. The full project structure is documented in Gifts — extended reference.
PLEDGES.STATUS is a numeric code. Decode it using TYPE_REFERENCES with ENTITY = 'Pledge' and PROPERTY = 'Status'. See the decode pattern.
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