Google Sheets workflow · Updated September 2026 · 9 min read

A pledge tracking spreadsheet that keeps pledges and payments apart

A pledge tracking spreadsheet has one job most templates get wrong: keeping what donors promised separate from what they actually paid. This guide builds a donation pledge tracker in Google Sheets with a pledge form feeding one tab, payments recorded in another, and formulas for balance, fulfillment percentage, installment arrears and reminder flags.

By Raj Kumar, Founder, Zunoform

Two glass vessels, one full of frosted beads and one partly filled with terracotta beads

Short answer

A pledge tracker needs two tabs: Pledges (one row per promise: donor, amount, currency, due date, contact permission) and Payments (one row per payment, tagged with the pledge it belongs to). SUMIF pulls payments into each pledge row, so balance is pledged minus received, and fulfillment percentage is received divided by pledged, capped at 100%. Total each currency separately and flag pledges due within a week for a reminder.

  • Never overwrite a pledge amount when money arrives; add a payment row instead.
  • Link every payment to a pledge ID, not a donor name.
  • Cap received at the pledged amount when calculating fulfillment, so one large overpayment does not hide unpaid pledges.
  • Only remind donors who agreed to be contacted.

What is the difference between a pledge and a payment?

A pledge is a promise to give; a payment is money received. They arrive at different times, in different amounts, sometimes in several installments, and occasionally never. A tracker that stores them in the same column cannot answer the two questions a board asks: how much was promised, and how much of it has come in.

The accounting treats them differently too. Under US GAAP for nonprofits, an unconditional promise to give is recognized as contribution revenue when the promise is received, not when the cash arrives, with pledges due in more than a year measured at present value. A promise becomes conditional under ASU 2018-08 when it has both a barrier the organization must overcome and a right of return or release; conditional pledges are not recognized until the condition is met. Your spreadsheet is a working record, not your books, but record enough (the date, the amount, any conditions in the donor's words) for your accountant to classify each pledge.

Receipts follow payments. The IRS requires a written acknowledgment for a contribution of $250 or more, stating the amount and whether goods or services were given in return. Send it when the money arrives, and word the pledge form's closing message as a thank-you for the promise, not a receipt.

Source: PwC Viewpoint: Unconditional promises to give cash (NFP guide 7.3)

Source: FASB ASU 2018-08 (full text via PwC Viewpoint)

Source: IRS: Charitable contributions, written acknowledgments

What columns should a donation pledge tracker have?

Three tabs: Responses (filled by the form, never edited), Pledges (review and formulas), and Payments (typed or pasted from your payment processor's export).

TabColumnSourcePurpose
PledgesPledge IDForm response IDThe key every payment points to.
PledgesDonorFormName or organization, for reading. Not used for matching.
PledgesPledged amount, currencyFormThe promise, in the donor's currency.
PledgesDue date (or first installment date)FormDrives reminders and arrears.
PledgesMay we contact you?FormConsent for reminders about this pledge.
PledgesReceived, balance, fulfillment %FormulaCalculated from Payments; never typed.
PledgesStatusCoordinatorActive, Cancelled, Written off, Query.
PledgesInstallment amount, months betweenCoordinatorOnly for pledges paid in parts.
PaymentsPayment date, pledge ID, amount, currencyProcessor export or bank recordOne row per payment actually received.
PaymentsReference, receipt sent dateCoordinatorLinks to the processor record and your acknowledgment.

How do pledges get from a form into Google Sheets?

Any form that writes rows to a sheet works. With Zunoform, start from the Donation Pledge template, which asks for name or organization, intended amount, currency, preferred designation, intended giving date, whether the team may get in touch, and an email that is only asked if the answer is yes. It tells donors not to enter card or bank details, and its closing message says the pledge is an intention, not a payment.

Save the form, open Integrations and authorize Google Sheets; Zunoform creates a spreadsheet named after the form with a Responses tab. The integration is on the free plan and sends new completed responses from the moment it is enabled. Each row begins with Timestamp and Response ID, then one column per question. Values are written as plain text, so amounts and dates must be converted before any total, which the formulas below do.

Pledges tab formulas (paste into row 2)

Assumes the Donation Pledge template's order in Responses:
B = Response ID, C = Name, D = Amount, E = Currency, G = Intended giving date, H = May we contact you?
Check your header row and adjust letters if needed. Payments tab: B = Pledge ID, D = Amount.

A2  Pledge ID
=ARRAYFORMULA(IF(Responses!B2:B="",,Responses!B2:B))

B2  Donor
=ARRAYFORMULA(IF(A2:A="",,TRIM(Responses!C2:C)))

C2  Pledged
=ARRAYFORMULA(IF(A2:A="",,VALUE(Responses!D2:D)))

D2  Currency
=ARRAYFORMULA(IF(A2:A="",,UPPER(TRIM(Responses!E2:E))))

E2  Due date (format as Date)
=ARRAYFORMULA(IF(A2:A="",,IF(Responses!G2:G="",,DATEVALUE(Responses!G2:G))))

F2  Contact allowed
=ARRAYFORMULA(IF(A2:A="",,Responses!H2:H))

G2  Received (all payments for this pledge)
=ARRAYFORMULA(IF(A2:A="",,SUMIF(Payments!B:B,A2:A,Payments!D:D)))

H2  Received, capped at the pledge
=ARRAYFORMULA(IF(A2:A="",,IF(G2:G>C2:C,C2:C,G2:G)))

I2  Balance
=ARRAYFORMULA(IF(A2:A="",,C2:C-H2:H))

J2  Fulfillment % (format as percent)
=ARRAYFORMULA(IF(A2:A="",,IF(C2:C=0,,H2:H/C2:C)))

K   Status: typed; dropdown with Active, Cancelled, Written off, Query

L2  Reminder flag (due within 7 days or overdue, balance left, contact allowed)
=ARRAYFORMULA(IF(A2:A="",,IF((K2:K="Active")*(I2:I>0)*(E2:E<>"")*(E2:E<=TODAY()+7)*(F2:F="Yes"),"Remind",)))

The typed Status column lines up with the formula rows by position, so never sort, insert or delete rows in Responses or Pledges. Use filter views instead.

How do you calculate pledge fulfillment rate?

There are two useful versions. By amount: capped received divided by pledged, for active pledges in one currency. By count: the number of active pledges with no balance left divided by all active pledges. The first tells you how much money is missing; the second tells you how many donors to follow up.

=SUMIFS(Pledges!H:H, Pledges!D:D, "USD", Pledges!K:K, "Active") / SUMIFS(Pledges!C:C, Pledges!D:D, "USD", Pledges!K:K, "Active")

=COUNTIFS(Pledges!D:D, "USD", Pledges!K:K, "Active", Pledges!I:I, 0) / COUNTIFS(Pledges!D:D, "USD", Pledges!K:K, "Active")

Report cancelled and written-off pledges on their own line rather than dropping them silently, and repeat both formulas for each currency. Never add USD and GBP pledges together unless you have agreed a conversion rate and date and say so in the report. Fundraising software vendors often quote typical fulfillment rates, but we could not find one traced to a published study, so measure your own over two or three campaigns.

Source: Google Docs Editors Help: SUMIFS

Source: Google Docs Editors Help: COUNTIFS

Illustration: why received is capped

Four made-up pledges. Without the cap, the overpayment on E makes USD fulfillment look like 73%; with it, the real figure is 60%.

Scroll sideways to read all three columns.

PledgePledged / receivedCounted toward fulfillment
A: Active, USD100 / 00 of 100
C: Active, USD75 / 2525 of 75
E: Active, USD, donor gave extra200 / 250200 of 200 (the extra 50 is reported as an additional gift)
B: Active, GBP50 / 0Reported in its own GBP line

How do you track installment pledges?

For a pledge paid in parts, add two typed columns: M, the installment amount, and N, the number of months between installments, and treat E as the first due date. Then calculate what should have arrived by today and compare it with what has. These are per-row formulas; put them in row 2 and fill down:

P2 Expected to date: =IF(E2="",0,IF(TODAY()<E2,0,IF(M2="",C2,MIN(C2,(INT(DATEDIF(E2,TODAY(),"M")/N2)+1)*M2))))

Q2 Arrears: =MAX(0,P2-H2)

As an illustration, a 1,200 pledge at 100 a month starting 15 January 2026 has nine installments due by 28 September 2026, so 900 expected. If 800 has arrived, arrears are 100, while the balance is still 400. Remind on arrears, not balance, for installment pledges; asking for the full balance early is a quick way to lose a regular donor.

Source: Google Docs Editors Help: DATEDIF

How should pledge reminders work?

Add a conditional formatting rule to the Pledges tab (Format, Conditional formatting, custom formula) such as =AND($K2="Active",$I2>0,$E2<>"",$E2<TODAY()) to shade overdue rows, and filter on the Reminder column once a week. A good reminder names the pledge amount, what has been received, what is due and when, how to pay, and one sentence on what the gift will do. It should thank before it asks.

Respect the contact answer. If a donor said no to follow-up, the reminder column stays blank for them; their pledge stays in the report but no one emails them about it. The sheet flags who is due; sending is up to you, from your own email or donor CRM. Neither Google Sheets nor Zunoform sends pledge reminders on a schedule for you.

Source: Google Docs Editors Help: Use conditional formatting rules

Privacy checklist for a pledge spreadsheet

What if you want to collect the payment in the form?

Then you need a payment form rather than a pledge form. Google Forms has no native payment field. Zunoform has one on the Pro and Business plans: you connect your own Stripe or PayPal account, the money goes straight to it, and Zunoform adds no transaction fee (your processor's own fees still apply). It supports USD, EUR, GBP and INR, and charges either a fixed amount or an amount tied to options the donor chooses, such as preset gift levels.

It takes one-time payments only. There is no recurring or installment billing, so for monthly giving use your processor's own subscription tools or a donation platform, and keep this tracker for pledges that are paid later by other means.

Where Zunoform fits (and where it doesn't)

For a campaign that collects pledges and pays out later, a free Zunoform pledge form and Google Sheets integration give you clean intake with contact consent built in; Free includes 500 responses a month. If you want donors to pay on the spot, the payment field needs Pro.

For a capital campaign with hundreds of multi-year pledges, restricted gifts and board reporting, dedicated donor management software that records pledges, schedules and receipts in one system will be more reliable than any spreadsheet, and several vendors in that category offer pledge reminders built in.

Templates for pledges and donations

Questions people ask

How do I track pledges in Excel or Google Sheets?

Use one tab for pledges and another for payments. Give each pledge a unique ID, tag every payment with that ID, and use SUMIF to bring payments into the pledge row. Balance is pledged minus received, and fulfillment is received divided by pledged. The same formulas work in Excel and Google Sheets.

What is a pledge fulfillment rate?

It is the share of pledged money that has actually been received, usually calculated for active pledges in one currency. Cap each pledge's received amount at the pledged amount so overpayments do not hide unpaid pledges. Some teams also track the share of pledges paid in full, which counts donors rather than money.

What should a pledge tracker include?

Pledge ID, donor, pledged amount and currency, due or first installment date, contact permission, received amount, balance, fulfillment percentage, status, and for installment pledges the installment amount and frequency. Keep payment records in a separate tab with date, amount, pledge ID and a reference to the payment processor record.

Is a pledge legally binding?

It depends on the jurisdiction and the wording. Many pledges are not enforced in practice even when they could be. For accounting, US nonprofits recognize unconditional promises to give when received, and conditional ones only when the condition is met. Ask your accountant or lawyer about specific large pledges.

Do I send a receipt when someone pledges?

Send a thank-you acknowledging the pledge, but the tax receipt belongs to the payment. The IRS requires a written acknowledgment for contributions of $250 or more, stating the amount received and whether anything was given in return. Record the receipt date against each payment row in your tracker.

How often should you send pledge reminders?

A reminder shortly before each due date and one follow-up after it is a sensible default for small pledges; larger multi-year pledges usually get a personal call instead. Only contact donors who agreed to follow-up, remind on arrears rather than the full balance for installment pledges, and always include what has already been received.

Can I collect pledges with Google Forms?

Yes. A Google Form with name, amount, currency, due date and a contact-permission question writes to a linked response sheet, and the formulas on this page work on that sheet too. Google Forms cannot take payments natively, so collection happens separately either way.

About the author

Raj Kumar · Founder, Zunoform

Raj Kumar is the founder of Zunoform, the form builder made by Symphonic Grow. He builds the product and writes these guides, checking every competitor price and feature claim against the vendor's own pages before publishing.

Raj Kumar on LinkedIn

Keep reading

Ready when you are

Better forms.
Better data.

Start with a conversation, a document or a single page.
Unlimited forms and 500 responses per month on Free.
No card required.

  • No credit card
  • Unlimited forms
  • 500 responses / month