Donor systems that survive staff turnover, grant cycles, and year-end appeals.
Salesforce NPSP, Raiser's Edge NXT, custom case-management, and AI integrations — built by engineers who understand restricted funds, Power of Us licensing, and what happens when your one Salesforce admin leaves.
The system that worked at $2M in revenue is breaking at $20M.
A volunteer or junior staffer set up Salesforce NPSP four years ago. It worked. Then the org grew, the development director left, three new program areas got their own custom objects, and a board member's nephew built a Zapier mess between Classy, Mailchimp, and the website. Now year-end gifts are double-counted, soft credits are wrong, the executive director can't trust the dashboard, and the auditor is asking questions. Meanwhile, a foundation just funded an AI pilot that nobody on staff can actually maintain after the consultant leaves.
- ▸ NPSP Opportunity records duplicated across Classy, Stripe, and manual gift entry — soft credits and household rollups silently wrong.
- ▸ Custom Apex written by a former contractor that nobody can modify, blocking a needed change to recurring donation logic.
- ▸ Raiser's Edge NXT and an aging RE7 instance running in parallel because the migration stalled two years ago mid-project.
- ▸ AI tools piloted with restricted grant funds but no plan, budget, or staff capacity to operate them after the grant ends.
Build for the staff you actually have, not the staff you wish you had
- STEP-01
Audit the donor system of record
We map what's actually in NPSP or Raiser's Edge — Opportunity stages, Recurring Donations, soft credits, household rollups, and the custom fields three former staffers added. Most issues are data hygiene, not platform choice. We document the truth before recommending anything.
- STEP-02
Stabilize before modernizing
If the year-end appeal is breaking, fix the appeal. We separate urgent operational pain (broken DocuSign-to-NPSP flow, failed Stripe webhooks, duplicate contacts) from architectural work, and ship the stabilization in 2-4 weeks before any larger rebuild.
- STEP-03
Design for one part-time admin
Every integration we build assumes the org has one person who maintains it 4 hours a week. That means declarative Salesforce flows over Apex when possible, clear runbooks, alerting that pages a real human, and no clever code that requires the original author to debug.
- STEP-04
Tie scope to the grant cycle
Restricted funds have reporting deadlines. We sequence work so deliverables land before the funder report is due, with budget burn-down shared weekly. If a foundation grant funds the build, the build ships inside that grant period — no scope drift into the next fiscal year.
- STEP-05
Hand off with documentation that survives staff turnover
Architecture diagram, credentials inventory in 1Password, runbook in Notion or Confluence, and a recorded walkthrough. We assume the program officer who hired us will leave within 18 months and the next person needs to operate the system without calling us.
# Sync Stripe recurring donations into Salesforce NPSP
# Idempotent — safe to replay from any webhook event
from simple_salesforce import Salesforce
import stripe, os, logging
log = logging.getLogger(__name__)
sf = Salesforce(username=os.environ['SF_USER'],
password=os.environ['SF_PASS'],
security_token=os.environ['SF_TOKEN'])
def upsert_recurring_donation(stripe_sub_id: str):
sub = stripe.Subscription.retrieve(stripe_sub_id, expand=['customer'])
email = sub.customer.email
# Find or create Contact by email — never by name
contact = sf.query(
f"SELECT Id FROM Contact WHERE Email = '{email}' LIMIT 1"
)['records']
if not contact:
log.warning('No NPSP contact for %s — queued for review', email)
return
sf.npe03__Recurring_Donation__c.upsert(
f'Stripe_Subscription_Id__c/{stripe_sub_id}',
{
'npe03__Contact__c': contact[0]['Id'],
'npe03__Amount__c': sub.items.data[0].price.unit_amount / 100,
'npe03__Installment_Period__c': 'Monthly',
'Status__c': sub.status, # active, past_due, canceled
}
) External-ID upserts on Stripe subscription ID prevent the duplicate Recurring Donation records that wreck year-end reporting when webhooks replay.
Field FAQ.
→ Do you work with nonprofits at nonprofit rates?
We offer reduced rates for 501(c)(3) organizations and run a small pro-bono allocation each year, but we're honest about what that buys. Pro-bono usually funds discovery and a working prototype — not a production system you can run for five years. For durable infrastructure, we scope a paid engagement that fits your grant or operating budget. We'd rather quote you accurately than over-promise on goodwill.
→ We're already on Salesforce NPSP. Should we migrate to something else?
Probably not. NPSP is the dominant nonprofit CRM for good reasons: free licenses through Power of Us, deep ecosystem, and most of your future hires will already know it. The pain you're feeling is usually configuration debt — bad page layouts, unused custom objects, broken automation — not a platform problem. We fix NPSP implementations far more often than we replace them, and the fix is typically 4-8 weeks of focused cleanup.
→ How do you handle Raiser's Edge NXT integrations?
Raiser's Edge NXT exposes the SKY API for constituents, gifts, and actions, plus webhooks for limited events. We've connected RE NXT to email platforms, payment processors, event systems, and data warehouses. The honest constraint: SKY API rate limits and the gap between RE NXT and the older RE7 mean some workflows need a nightly batch sync rather than real-time. We design around that, not against it.
→ Can you help us evaluate AI tools without wasting grant money on hype?
Yes, and we lead with skepticism. Most nonprofit AI pitches are a thin wrapper on GPT-4 charging $40k a year for something a $20/month ChatGPT Team account does as well. We help you separate the two or three places AI genuinely earns its keep — grant narrative drafting, donor segmentation, document summarization for case workers — from the demos that won't survive a real workload. Pilot first, contract later.
→ Are you eligible for federal grants and contracts that fund nonprofit tech?
We're an SDVOSB-certified, veteran-owned firm registered in SAM.gov, which matters when nonprofits subcontract under federal grants (HHS, HUD, VA, DoD community programs) that carry small-business or veteran-owned set-aside requirements. If your funder requires SDVOSB participation in the prime contractor's team, we can serve in that role. We've worked under federal flow-down clauses including FAR Part 52 and basic CMMC requirements.
→ We have one IT person who's overwhelmed. How do you avoid making that worse?
By building less, and documenting what we build. We default to native Salesforce features (Flow, Reports, declarative integrations) before writing code, because your one IT person can maintain Flow but probably can't debug Apex at 9pm before a board meeting. When custom code is required, we ship it with a runbook, alerting that goes to a real human, and a 30-day support window where we answer pages directly.
→ How do you handle PII and donor data security?
Donor records are PII and often include giving capacity, wealth screening data, and major-gift notes that would embarrass everyone if leaked. We follow the basics rigorously: least-privilege Salesforce profiles, field-level encryption on sensitive fields, MFA enforced, secrets in a managed vault rather than in code, and audit logging on exports. For organizations handling protected data (HIPAA for health-adjacent nonprofits, FERPA for education), we scope compliance work explicitly into the contract.
→ What's a realistic budget for a nonprofit modernization project?
A focused NPSP cleanup or single-integration build typically lands in the $25k-$75k range over 4-10 weeks. A larger modernization — replacing a homegrown donor portal, migrating from a legacy system to Salesforce, or building a custom case-management application — runs $100k-$400k over 4-9 months. We scope to your funding reality and stage deliverables so each phase produces something operational, not a year-long build with one big-bang launch.
→ Will you train our staff or just hand off code?
Training is part of every engagement. We record screen-share walkthroughs of the system, write runbooks for the three or four operations staff actually do (process a refund, fix a duplicate contact, pull a board report), and run live sessions with the team. We also leave behind a written architecture overview so a future hire or another consultant can come up to speed without reverse-engineering anything.
Continue recon.
Consulting Services
How we scope custom development, integrations, and modernization engagements.
REL-02Case Studies
Examples of donor system rebuilds and integration projects we've shipped.
REL-03Fixed-Scope Packages
Pre-scoped engagements that fit a single grant cycle or fiscal quarter.
REL-04Start a Conversation
Tell us about your NPSP, RE NXT, or custom system. We'll respond within a day.
Talk to an engineer who has actually shipped NPSP integrations under a grant deadline.
Talk to a VooStack operator. We respond within one business day.