npsp-engagement-plans

Use this skill when configuring, applying, or troubleshooting NPSP Engagement Plans — the framework that automatically generates standard Salesforce Task records on a timed schedule to guide donor stewardship and constituent outreach. Trigger keywords: engagement plan, donor stewardship tasks, NPSP task automation, engagement template, major donor follow-up. NOT for marketing automation, email campaigns, or Flow-based automation.

Best use case

npsp-engagement-plans is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use this skill when configuring, applying, or troubleshooting NPSP Engagement Plans — the framework that automatically generates standard Salesforce Task records on a timed schedule to guide donor stewardship and constituent outreach. Trigger keywords: engagement plan, donor stewardship tasks, NPSP task automation, engagement template, major donor follow-up. NOT for marketing automation, email campaigns, or Flow-based automation.

Teams using npsp-engagement-plans should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/npsp-engagement-plans/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/npsp-engagement-plans/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/npsp-engagement-plans/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How npsp-engagement-plans Compares

Feature / Agentnpsp-engagement-plansStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use this skill when configuring, applying, or troubleshooting NPSP Engagement Plans — the framework that automatically generates standard Salesforce Task records on a timed schedule to guide donor stewardship and constituent outreach. Trigger keywords: engagement plan, donor stewardship tasks, NPSP task automation, engagement template, major donor follow-up. NOT for marketing automation, email campaigns, or Flow-based automation.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# NPSP Engagement Plans

This skill activates when a practitioner needs to design, configure, or troubleshoot the NPSP Engagement Plans feature — a structured way to automatically generate Salesforce Task records on a timed schedule tied to a target record (Contact, Account, Opportunity, Campaign, Case, or Recurring Donation). It covers the three-object data model, template deployment constraints, retroactivity rules, child task due-date behavior, and when to layer Flow on top for actions beyond Task creation.

---

## Before Starting

Gather this context before working on anything in this domain:

- Confirm NPSP is installed and the org has the three Engagement Plan objects visible: `npsp__Engagement_Plan_Template__c`, `npsp__Engagement_Plan__c`, and `npsp__Engagement_Plan_Task__c`.
- Identify the target object. Standard supported objects (Account, Contact, Opportunity, Campaign, Case, Recurring Donation) work out of the box. Custom objects require Activities enabled on the custom object and a lookup field added to `npsp__Engagement_Plan__c`.
- Establish whether templates need to move between sandboxes and production — they are stored as data records, not metadata, so Change Sets cannot carry them.
- Clarify whether users need non-Task actions (emails, field updates, Chatter posts) as part of the cadence; those require a separate Flow triggered on the same record.

---

## Core Concepts

### Three-Object Data Model

NPSP Engagement Plans use three sObjects:

1. **`npsp__Engagement_Plan_Template__c`** — The master template. Contains configuration such as name, description, skip weekends flag, and which object type it targets. This is what admins build and manage.
2. **`npsp__Engagement_Plan__c`** — The instance created when a template is applied to a specific record. It acts as the junction between the template and the target record (Contact, Opportunity, etc.) and holds the applied-on date from which task due dates are calculated.
3. **`npsp__Engagement_Plan_Task__c`** — Individual task definitions within a template (subject, days offset, dependent parent task, assigned-to user). When the plan is applied, NPSP creates one standard Salesforce `Task` record per `npsp__Engagement_Plan_Task__c`.

Engagement Plans create standard `Task` records only. They do not send emails, update fields, post to Chatter, or trigger other automation by themselves.

### Templates Are Data, Not Metadata

Engagement Plan Templates are stored as standard data records in `npsp__Engagement_Plan_Template__c`, not as Salesforce metadata components. This means:

- Change Sets, Metadata API deployments, and Salesforce CLI packages cannot include them.
- Moving templates between sandboxes and production requires manual recreation or a data migration tool (e.g., Data Loader, Dataloader.io, or a custom script using the Salesforce REST API).
- Version control of template definitions must be handled outside the standard deployment pipeline — document templates in a spreadsheet, wiki, or a custom export script.

### Template Changes Are Not Retroactive

Editing a template (adding tasks, changing offsets, renaming subjects) has no effect on Engagement Plan instances that have already been applied. Existing `npsp__Engagement_Plan__c` and `npsp__Engagement_Plan_Task__c` records, and the Tasks already created from them, are frozen at the state of the template at the time of application. To roll out a revised template to existing records, you must delete the old plan instance and reapply the updated template.

### Auto-Update Child Due Date Behavior

When a task hierarchy is configured (one `npsp__Engagement_Plan_Task__c` depends on a parent task), NPSP can recalculate child task due dates relative to the parent. This recalculation fires only when the parent Task record is marked **Complete** (Status = "Completed"). It does NOT fire when the parent task's due date is manually edited. Practitioners who drag a parent task's due date in the calendar and expect child tasks to shift are surprised when nothing moves.

---

## Common Patterns

### Major Donor Stewardship Cadence

**When to use:** A fundraising team wants every new major donor (Opportunity stage = Closed Won above a threshold) to receive a consistent 30/60/90-day stewardship task sequence.

**How it works:**
1. Build a template with three `npsp__Engagement_Plan_Task__c` records: Day 30 thank-you call, Day 60 impact report delivery, Day 90 cultivation meeting.
2. Create a Flow (Record-Triggered, after-save) on Opportunity that fires when Amount ≥ threshold and Stage = "Closed Won". The Flow applies the engagement plan by creating an `npsp__Engagement_Plan__c` record with a lookup to the Opportunity and the template.
3. NPSP generates the three Task records with due dates calculated from the plan's creation date.

**Why not the alternative:** Manually creating tasks per donor per close is error-prone, inconsistent, and not auditable at the template level. Engagement Plans enforce the same sequence every time.

### Extending to Non-Task Actions with Flow

**When to use:** The stewardship cadence requires an automated email send or a field update in addition to creating Tasks.

**How it works:**
1. Build the Engagement Plan template for the Task creation part of the cadence.
2. Build a separate scheduled-path Flow (or a Process Builder replacement using Flow) that fires on the same record and same timing offset to handle the non-Task action (e.g., send an email alert, stamp a "Last Outreach Date" field).
3. The two automations run independently but together cover the full cadence.

**Why not the alternative:** Practitioners sometimes expect Engagement Plans to handle email sends directly. They do not — attempting to add email logic to the NPSP template configuration will fail silently or produce no result.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| Need timed Task reminders for donor stewardship | Engagement Plan Template | Native NPSP feature; auditable; no code |
| Need to deploy templates to production | Manual data migration or Data Loader | Templates are data records, not metadata |
| Need to update all in-flight plans after template change | Delete existing plan instances, reapply updated template | Changes are not retroactive |
| Need email sends as part of the cadence | Add a scheduled Flow alongside the engagement plan | Engagement Plans produce Tasks only |
| Need engagement plans on a custom object | Enable Activities on the object; add lookup to npsp__Engagement_Plan__c | Required to associate plans with custom records |
| Child tasks not shifting when parent date changes | Mark parent Task Complete to trigger recalculation | Auto-Update fires on Complete, not date edit |

---

## Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

1. **Verify prerequisites** — Confirm NPSP is installed, the three Engagement Plan objects are present, and the target object has Activities enabled. For custom objects, add the lookup field to `npsp__Engagement_Plan__c` before proceeding.
2. **Design the template** — Define the task sequence: subject lines, days offset from plan application date, assigned-to user or queue, and any parent-child dependencies. Document the design in the work template before building to avoid schema errors.
3. **Build the template in the target org** — Navigate to NPSP Settings > Engagement Plans (or use the Engagement Plan Templates tab) to create the `npsp__Engagement_Plan_Template__c` record and its child `npsp__Engagement_Plan_Task__c` records. If this is a sandbox, plan for manual recreation or Data Loader migration to production.
4. **Apply and verify** — Apply the template to a test record (manually or via Flow). Confirm that one standard `Task` record is created per engagement plan task, due dates are correct, and the `npsp__Engagement_Plan__c` instance links correctly to the target record.
5. **Validate edge cases** — Test the Auto-Update Child Due Date feature by marking the parent Task Complete and confirming child task due dates recalculate. Confirm that editing the parent task's due date directly does NOT shift children. Document and communicate this behavior to the team.

---

## Review Checklist

Run through these before marking work in this area complete:

- [ ] Template `npsp__Engagement_Plan_Template__c` record created with correct name and target object
- [ ] All `npsp__Engagement_Plan_Task__c` records have accurate subjects, day offsets, and assignees
- [ ] Plan applied to a test record; correct number of Task records created with correct due dates
- [ ] Template migration plan documented (manual recreation or Data Loader) for production deployment
- [ ] Team informed that template changes do not update existing in-flight plan instances
- [ ] Auto-Update Child Due Date behavior tested and communicated (fires on Complete, not date edit)
- [ ] Non-Task actions (emails, field updates) handled via a separate Flow, not within the Engagement Plan

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **Templates Cannot Be Deployed via Change Set** — Because `npsp__Engagement_Plan_Template__c` records are data, not metadata components, they are invisible to Change Sets and the Metadata API. Admins who build templates in sandbox and then run a Change Set to production will find the templates missing. The fix is manual recreation in each org or a Data Loader export/import.
2. **Template Edits Have No Effect on Active Plans** — Modifying a template after it has been applied to records does not update those plan instances or regenerate tasks. The only way to apply changes to existing records is to delete the `npsp__Engagement_Plan__c` instance and reapply the updated template, which may regenerate already-completed tasks if not filtered.
3. **Auto-Update Child Due Date Requires Task Completion, Not Date Edit** — The child task due-date cascade runs when the parent Task Status is set to "Completed". Manually editing the parent task's due date field does not trigger any recalculation. This is a common source of confusion when coordinators reschedule tasks by hand.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| `npsp__Engagement_Plan_Template__c` record | Master template defining the task cadence; must be manually migrated between orgs |
| `npsp__Engagement_Plan_Task__c` records | Child task definitions within the template; one per planned task |
| `npsp__Engagement_Plan__c` instance | Applied plan record linking the template to a specific target record |
| Standard `Task` records | The actual activity records created for users to act on; one per engagement plan task |
| Flow (optional) | Separate automation for non-Task actions (emails, field updates) triggered on the same record |

---

## Related Skills

- `npsp-custom-rollups` — Use when engagement plan completion milestones need to roll up to summary fields on Donor or Account records
- `npsp-trigger-framework-extension` — Use when engagement plan application needs custom Apex logic beyond what native NPSP supports
- `fsc-action-plans` — Parallel concept in Financial Services Cloud; useful for comparing template-based task automation patterns across Salesforce products

Related Skills

npsp-data-model

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when working with NPSP (Nonprofit Success Pack) objects, namespace prefixes, GAU allocations, recurring donation objects, relationship and affiliation objects, or the NPSP data dictionary. Trigger keywords: npe01__, npe03__, npe4__, npe5__, npsp__, OppPayment__c, Recurring_Donation__c, Allocation__c, General_Accounting_Unit__c, NPSP data model. NOT for standard Salesforce data model, Financial Services Cloud data model, or Program Management Module (PMM) data model.

npsp-vs-nonprofit-cloud-decision

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when an organization must decide whether to stay on NPSP (Nonprofit Success Pack) or move to Nonprofit Cloud (NPC), evaluate the timeline for that move, and understand what the migration entails at an architectural level. Trigger keywords: NPSP vs Nonprofit Cloud, upgrade NPSP, migrate to NPC, nonprofit platform decision, NPSP end of life, Nonprofit Cloud vs NPSP comparison. NOT for implementation — does not cover post-decision NPC build, NPSP customization, or data migration execution.

nonprofit-cloud-vs-npsp-migration

8
from PranavNagrecha/AwesomeSalesforceSkills

Nonprofit Cloud vs NPSP decision and migration: choose NPSP (managed package) or Nonprofit Cloud (native), plan data migration, Account Model differences, Program Management, fundraising. NOT for nonprofit accounting (use revenue-cloud-foundation). NOT for generic Sales Cloud setup (use sales-cloud-core-setup).

sales-engagement-api

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when enrolling records in Sales Engagement cadences from Apex, logging call outcomes on cadence steps, customizing cadence step actions via Apex, or consuming cadence lifecycle events through Change Data Capture. Triggers: 'enroll lead in cadence', 'assignTargetToSalesCadence', 'ActionCadenceTracker', 'log call result cadence', 'Sales Engagement Apex'. NOT for building or administering cadence structures (steps, branches, variants) — cadence content must be authored in the Cadence Builder UI and cannot be created or mutated via API.

npsp-trigger-framework-extension

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when extending the NPSP Trigger-Driven Trigger Management (TDTM) framework with custom Apex handler classes — covering class authorship, DmlWrapper return patterns, Trigger_Handler__c registration, load order, recursion guards, and test isolation. NOT for standard Apex triggers outside of NPSP, general trigger-handler framework design, or Nonprofit Cloud (NPC) which replaced NPSP in new orgs.

npsp-custom-rollups

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring, troubleshooting, or extending NPSP Customizable Rollups (CRLP) — including rollup definitions, filter groups, batch job modes, and the one-way migration from legacy NPSP rollups. Trigger keywords: CRLP, customizable rollups, rollup definition, filter group, rollup batch job, NPSP gift totals, NPSP recalculate rollups. NOT for standard Salesforce roll-up summary fields, Nonprofit Cloud (NPC) native aggregation, or Rollup Helper third-party solutions.

npsp-api-and-integration

8
from PranavNagrecha/AwesomeSalesforceSkills

NPSP programmatic integration patterns: BDI gift processing API for bulk gift ingestion, ERD Schedules and Installments API for recurring donation data, and wealth screening integration via AppExchange managed packages. NOT for standard Salesforce REST/BULK API, NPSP PMM integration, or Nonprofit Cloud (NPC) native API patterns.

sales-engagement-cadences

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when setting up, configuring, or troubleshooting Salesforce Sales Engagement (formerly High Velocity Sales) cadences, call scripts, email templates, work queue, or rep assignment. Triggers: 'cadence builder', 'HVS cadence', 'work queue steps', 'sales engagement setup', 'sequence steps not appearing', 'cadence not sending email', 'Sales Engagement permission set'. NOT for Marketing Cloud campaigns, Marketing Cloud Account Engagement (Pardot) journeys, or custom Apex email services.

patient-engagement-requirements

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when defining patient engagement portal requirements for Health Cloud: appointment scheduling, secure in-portal messaging, health assessments, patient education, and self-service features. NOT for Experience Cloud site configuration, OmniStudio development, or standard CRM portal setup unrelated to clinical patient engagement.

npsp-program-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring or troubleshooting the Nonprofit Success Pack Program Management Module (PMM) — a separate managed package for program delivery, cohort setup, service scheduling, service delivery recording, and outcome/attendance tracking for beneficiaries. Trigger keywords: program management module, PMM, Program__c, ProgramEngagement__c, ServiceDelivery__c, cohort setup, bulk service delivery, service schedule, service participant. NOT for NPSP core donor management, gift entry, recurring donations, soft credits, or Health Cloud care programs.

npsp-household-accounts

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill to configure and manage NPSP Household Accounts: household naming rules, formal/informal greeting formats, primary contact designation, household merges, and household splits. Trigger keywords: NPSP household naming, household account not updating, merge duplicate households NPSP, household greeting customization, primary affiliation NPSP. NOT for FSC Household Groups (Financial Services Cloud uses AccountContactRelationship junction — incompatible model).

marketing-cloud-engagement-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring Marketing Cloud Engagement (formerly ExactTarget): business units, user roles, sender profiles, delivery profiles, send classifications, and account-level settings. NOT for MCAE/Pardot or Marketing Cloud Account Engagement configuration.