The non-profit playbook. Built in the builder, decided by your donor system.
Ten journeys, each drawn below as it runs. The decision comes from your donor CRM, your payment gateway, your programme system or criteria you set; the journey carries it. Aims are targets to agree in the pilot, not results.
Ask for the monthly gift after the third one-off.
A third one-off gift in twelve months asks your donor system whether the donor is already monthly, then sends one WhatsApp with Make it monthly or Not now; a tap goes to your payment system to set it up.
- Decides
- your donor system and the count you set.
- Aim
- monthly givers without a phone campaign.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- monthly givers without a phone campaign.
- Trigger
- third one-off gift in 12 months (your donor system)
- Events and identifiers
- third one-off gift in 12 months (your donor system). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- already monthly? (your donor system) · your payment system sets it up. Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Per-channel consent on the contact record is checked before any send.
- Stops when
- no tap: silence. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- monthly givers without a phone campaign. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Recover the monthly gift that failed.
A failed collection reported by your gateway sends one WhatsApp with the update-card link, waits for the retry from your system, stops when it collects, and escalates to SMS and then a call if it does not.
- Decides
- your gateway's failure reason and retry.
- Aim
- monthly gifts kept when the card changes.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- monthly gifts kept when the card changes.
- Trigger
- collection failed (your gateway)
- Events and identifiers
- collection failed (your gateway). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- collected? (your gateway). Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Per-channel consent on the contact record is checked before any send.
- Stops when
- collected: stop. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- monthly gifts kept when the card changes. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Finish the donation that stopped at the amount step.
A session with the amount step opened and no payment sends one WhatsApp with a link back to the step and the closing date from your appeal, reminds once before it closes, and stops when they give.
- Decides
- a rule you set, and the closing date your system holds.
- Aim
- more gifts finished before the appeal closes.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- more gifts finished before the appeal closes.
- Trigger
- session rule: amount step opened, no payment
- Events and identifiers
- session rule: amount step opened, no payment. Captured by the SDK or web tracker as the session runs, tied to the identified contact. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- closing date (your appeal system). Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Checked inside the journey at the step shown, and per channel before any send.
- Stops when
- still nothing: silence · gift received? stop. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- more gifts finished before the appeal closes. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Ask for the second gift before the first is forgotten.
A donor with a first gift and no second in ninety days enters a segment, gets a Story of what the first gift did, and one ask on their channel when they finish it; silence for thirty days ends the journey without a second message.
- Decides
- your segment definition and the window you set.
- Aim
- more first-time donors giving a second time.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- more first-time donors giving a second time.
- Trigger
- segment entry: first gift, no second in 90 days
- Events and identifiers
- segment entry: first gift, no second in 90 days. Segment membership is recomputed from the contact's own events on the window you set; the identifier is the contact record. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- None beyond the platform's own records: the contact, its consent, and the delivery record.
- Consent
- Checked inside the journey at the step shown, and per channel before any send.
- Stops when
- no: wait 30 days, then stop · gift? stop. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- more first-time donors giving a second time. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Bring back last Ramadan's donor before this Ramadan.
A donor who gave in last year's window and not since waits until the date on your calendar, then gets one WhatsApp at a sensible hour in their own time zone with the Zakat calculator and a tap to give; a gift stops the journey, and silence gets one reminder in the last ten nights.
- Decides
- your calendar and the segment you define.
- Aim
- last year's donors back before the window closes.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- last year's donors back before the window closes.
- Trigger
- segment entry: gave last Ramadan, nothing since
- Events and identifiers
- segment entry: gave last Ramadan, nothing since. Segment membership is recomputed from the contact's own events on the window you set; the identifier is the contact record. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- None beyond the platform's own records: the contact, its consent, and the delivery record.
- Consent
- Checked inside the journey at the step shown, and per channel before any send.
- Stops when
- gift? stop. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- last year's donors back before the window closes. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Collect the pledge from the dinner.
A pledge recorded at the event waits thirty days from the date your CRM holds, sends the pay link by WhatsApp, stops when your CRM says paid, and escalates to SMS and then a call from a person, with the outcome written back.
- Decides
- your CRM's pledge date and paid status.
- Aim
- pledges collected without a chasing list.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- pledges collected without a chasing list.
- Trigger
- pledge recorded (your CRM)
- Events and identifiers
- pledge recorded (your CRM). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- paid? (your CRM) · still unpaid: task to a person · outcome to your CRM. Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Per-channel consent on the contact record is checked before any send.
- Stops when
- paid? stop. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- pledges collected without a chasing list. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Renew the sponsorship in month eleven.
A sponsorship entering its eleventh month asks your donor system whether it is active and renewal is open, sends a Story of the year, then one WhatsApp with Renew or Not now; a tap goes to your payment system to renew for a second year.
- Decides
- your donor system's sponsorship record.
- Aim
- sponsorships renewed before they lapse.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- sponsorships renewed before they lapse.
- Trigger
- sponsorship month 11 (your donor system)
- Events and identifiers
- sponsorship month 11 (your donor system). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- active? renewal open? (your donor system) · your payment system renews. Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Per-channel consent on the contact record is checked before any send.
- Stops when
- no tap: the standard notice, by email. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- sponsorships renewed before they lapse. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Fill tomorrow's volunteer shift.
A shift booked for tomorrow sends one WhatsApp with Confirm or Cannot make it; a confirmation is written back, a cancellation offers the slot to the waitlist the same hour, and silence gets one SMS at the hour you set.
- Decides
- your volunteer system's roster and waitlist.
- Aim
- fewer empty shifts on the day.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- fewer empty shifts on the day.
- Trigger
- shift tomorrow (your volunteer system)
- Events and identifiers
- shift tomorrow (your volunteer system). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- confirm: written back · cannot: slot to the waitlist. Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Per-channel consent on the contact record is checked before any send.
- Stops when
- The message is delivered on the first channel that reports delivery, or the fallback order is exhausted and the failure is recorded.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; when the last channel in the order has reported failure, the message is recorded as failed with the reason. Delivery callbacks that arrive late update the record when they arrive.
- Success metric
- fewer empty shifts on the day. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Tell the beneficiary the grant is ready, and confirm the pickup.
A grant marked ready in your programme system sends one SMS with the collection point and a code, calls with the same code if the SMS is not delivered, and writes the pickup back when the code is checked at the point.
- Decides
- your programme system; the code is checked at the point.
- Aim
- grants collected by the person they were meant for, with the code checked at the point.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- grants collected by the person they were meant for, with the code checked at the point.
- Trigger
- grant ready (your programme system)
- Events and identifiers
- grant ready (your programme system). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- code checked at the point · pickup written back. Your system validates and executes each of these; the journey sends the request and branches on the answer.
- Consent
- Checked inside the journey at the step shown, and per channel before any send.
- Stops when
- The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- grants collected by the person they were meant for, with the code checked at the point. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Report the appeal with a Story, and learn what to fund next.
An appeal closed in your system sends every donor to it a Story of what it funded, page by page, with a poll on what the next appeal should fund; completion and the poll answer go on the record, and the answer builds the segment for the next appeal.
- Decides
- the event, and the poll answer.
- Aim
- an impact report that is read, and the next appeal aimed by the donors themselves.
Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.
- Intended outcome
- an impact report that is read, and the next appeal aimed by the donors themselves.
- Trigger
- appeal closed (your system)
- Events and identifiers
- appeal closed (your system) · poll answer on the record · segment: next appeal, by answer. The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
- Your systems in the loop
- None beyond the platform's own records: the contact, its consent, and the delivery record.
- Consent
- Checked inside the journey at the step shown, and per channel before any send.
- Stops when
- The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
- If a channel fails or nobody answers
- A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
- Success metric
- an impact report that is read, and the next appeal aimed by the donors themselves. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Where a step says your system decides, the journey calls your system and branches on its answer. xNotify carries the journey; it does not become the donor database.