By 25 October, the LWD /donate flow can accept traffic from paid media and every gift is attributable to source. Missing this deadline blocks Room C's November ad launch and the 2 Dec Giving Tuesday Christmas Appeal.
Purpose. Sprint 48 is the technical spine of the launch window. It has one function: make Room C ready to accept paid-media traffic. Every deliverable, every SLA, and every acceptance criterion below is measured against that one function.
Ownership. AI CMO (spec + governance) · Web-dev (implementation) · CRM ops (SLA + stewardship) · Carla (sign-off on 22 Oct EOD).
Governance. 5-gate Marketing Governance Envelope. Funnel stage: Conversion (Story 20 · Trust 40 · Data 40 weighting). Best-practice reference: WCAG 2.2 AA, ASIC RG 96, Privacy Act 1988, Meta CAPI + Google Enhanced Conversions server-side integration.
Sprint 48 ships five things. Three are pages that go live. One is a dev-ready specification. One is an operational discipline (SLA). None of the five is optional; each one is a load-bearing part of the ad-launch stack.
A single-question landing page that asks “How would you like to give?” and offers five paths: weekly regular giving (the $19.25 anchor, featured), one-off gift, corporate matched giving, in-memoriam giving, and bequest. Every card pre-decorates its outbound link with a UTM stack so downstream attribution works from the moment a hub-clicker enters /donate. Schema.org DonateAction markup for AEO/GEO. WCAG 2.2 AA target. Compliance envelope server-rendered inline.
Client-side JavaScript slider + input + 5-preset picker. Live-updating impact panel: annual gift funded, hours of licensed advocacy, share of one full case (or number of full cases when the annual gift exceeds $1,840), direct-services allocation, and audit/governance allocation. Every number derives from a Y1 audit source (see /awareness): $19.25/hr rate, $1,840/case average, 87c/13c ratio. Zero marketing multipliers. Full methodology table shown below the calculator with formula-by-formula source citations. WCAG 2.2 AA target — keyboard, screen-reader, and prefers-reduced-motion respected.
The sister document of the strategy-level /attribution-framework. Nine sections: non-negotiables, 5-parameter UTM taxonomy with controlled vocabulary, 12-event dictionary with full payload schemas, first-party cookie schema, server-side Meta CAPI / Google Enhanced Conversions / LinkedIn CAPI wiring, consent + Privacy Act discipline, 24-test QA matrix, 3 operator dashboards, and a week-by-week cut-over plan from “no attribution” to “100% attribution” landing on 25 Oct. Web-dev implements against this spec directly — no interpretation ambiguity.
Not a separate landing page — a variant of the /donate flow triggered by ?plan=in-memoriam. Adds three extra optional form fields (name of person being remembered · relationship to donor · request for card to family with optional message) and routes the confirmation through a distinct email template. See §4 below for full spec — this is what the web-dev team implements before 25 Oct.
Every successful gift produces a thank-you email within four hours of payment confirmation. This is not a nice-to-have — it is the single strongest signal that this charity operates at the standard it says it does. See §3 below for the SLA spec, the retry policy, the failure escalation, and the ops-dashboard monitor that catches slippage before it becomes a week of missing receipts.
“Done” on 25 October means Carla could authorise a $500 Meta ad-spend test today, and every dollar of it would be attributable, compliant, and stewarded within four hours. Nothing less counts as done. Concretely:
?plan=in-memoriam is present.Go/no-go decision point: 22 Oct 2026 EOD. On 22 October at end of day, the AI CMO reviews the 24-test QA log and reports to Carla. If any single test is failing, the escalation options are: (a) delay ad launch to 1 Nov with a reduced-scope 25 Oct release; (b) ship on 25 Oct with a documented residual and 2 Nov fix-target. The Christmas Appeal launch date (2 Dec) is the hard limit — no fix-target can slip past 25 Nov without escalating to the Board.
Fundraising Institute Australia benchmarks and every major donor-stewardship study of the last decade agree: the time between gift and acknowledgement is the strongest single predictor of a donor's second-gift likelihood. Four hours is the internal target. Two hours is the aspirational target for the first six months post-launch. Twenty-four hours is failure.
| Metric | Target | Amber threshold | Recovery action |
|---|---|---|---|
| Time gift → receipt sent | ≤ 4 hours | 4–8 hours | Ops-dashboard row goes amber; AI CMO reviews next business day |
| % of gifts within SLA | ≥ 95% over any 7-day window | 85–95% | Ops root-cause: is email provider slow? Is the webhook queuing? Fix within 48h |
| Failed CAPI events | 0 over 24h | 1–5 | Retry queue kicks in; if not cleared within 24h, escalate to web-dev |
| Donor-record completeness | 100% have utm_source assigned | < 100% | CRM ops manually assigns direct/unknown for any blanks — never leave blank |
Grief is not a design opportunity. Every element of the in-memoriam path must be readable by someone who is grieving. That means: no bright colours, no urgency, no scarcity, no upsells, no “triple your impact” buttons, no social-proof carousels. Warm, dignified, brief. The person completing this form has just lost someone. The form must respect that.
URL: /donate?plan=in-memoriam. Reachable from: /give (in-memoriam hub card), /donate (in-memoriam tab within the main donate flow), obituary / funeral-notice partner links (utm_source=partner, utm_medium=funeral-notice).
| Field | Required | Label / helper text |
|---|---|---|
in_memory_of | No | “In memory of” — free-text field. Helper: “Optional. This name will appear on your acknowledgement and in our internal record. It will not be published.” |
relationship | No | “Your relationship to them” — free-text. Helper: “Optional. Helps us write the acknowledgement in a way that feels right.” |
send_card_to_family | No | Checkbox: “I'd like a card sent to the family confirming a gift has been made in their loved one's name. I understand this will not include the amount.” If ticked, reveal two more fields: family contact name and family postal address. |
send_card_to_family=true): A physical card posted by CRM ops. No amount disclosed. Text: “A gift has been made to Life Without Debt in memory of [name]. Their memory helps us fund licensed debt-mediation for families facing terminal illness. We are grateful.” No further contact with the family unless they proactively reach out.| # | Acceptance criterion | How verified | Owner |
|---|---|---|---|
| 1 | /give live at public path with 5-way routing | Load /give — 5 path cards present, all links UTM-decorated | Web-dev |
| 2 | /weekly-giving-calculator maths verified | Test 5 amounts ($5, $19.25, $50, $100, $500/wk) — values match Python reference | AI CMO |
| 3 | Calculator keyboard-accessible | Tab through slider, input, presets, CTAs — all reachable with visible focus rings | Web-dev |
| 4 | Calculator screen-reader-friendly | ARIA-live impact panel announces changes; slider has aria-valuemin/max/now | Web-dev |
| 5 | Attribution spec approved by web-dev | Web-dev lead reviews /attribution-implementation and confirms buildable as written | Web-dev + AI CMO |
| 6 | UTM parameters survive donate flow | Meta-tagged URL → /give → /donate → success → utm_source visible in donor record | Web-dev |
| 7 | Meta CAPI Purchase event received | Meta Events Manager Test Events tab shows event within 60s of test gift | Web-dev |
| 8 | Google Enhanced Conversions received | GA4 Realtime shows purchase event within 30s of test gift | Web-dev |
| 9 | Thank-you email < 4 hours | Test gift at time T — receipt in test inbox before T+4h | CRM ops |
| 10 | In-memoriam variant renders | Load /donate?plan=in-memoriam — 3 extra fields visible, softer copy applied | Web-dev |
| 11 | Compliance envelope on all 3 pages | Grep for ABN, ACN, ACL 387398, complaints link, privacy link — all 4 markers present, server-rendered | AI CMO |
| 12 | Audit engine: 0 findings | POST /api/compliance-audit/run returns findings_count = 0 | AI CMO |
Sprint 49 (Christmas Appeal) builds on Sprint 48. Everything Sprint 49 needs from Sprint 48 is listed below — if any of these is not delivered by 25 Oct, Sprint 49 cannot start on 1 Nov.
rc-christmas-202612 and rc-gt-20261202 campaigns can be created without controlled-vocabulary conflicts.| Risk | Likelihood | Mitigation / recovery |
|---|---|---|
| Meta ad-account approval delayed | Medium | Submit account and CAPI setup by 22 Sep (T-33). Meta business verification typically 5–15 business days. Alternative: launch on Google Search only (approval faster); add Meta once approved. |
| DGR endorsement lands during window and confuses receipt language | Low | Receipt template has two variants (pre-DGR / post-DGR); template flip is a config change, not a rebuild. Board notified same-day if DGR granted. |
| Cloudflare D1 schema migration issue | Low | Migration scripts tested in local --local before prod. Rollback script prepared. Marketing_sessions table is additive — no existing table modified. |
| Email provider (Mailgun / SendGrid / Resend) rate-limit hit | Low | Provider tier sized for 500 gifts/day launch cap. If Christmas Appeal exceeds, upgrade tier live — provider changes are runtime config. |
| WCAG 2.2 AA issue found in QA | Medium | Every test in QA matrix passes or Carla sees the issue on 22 Oct. Fix cost is contained — no page rebuild required. |
| Attribution spec unclear for dev | Medium | Web-dev reviews /attribution-implementation as their first Sprint 48 action. Any ambiguity raised in a single 45-min “spec-review” call, resolved before implementation starts. Do not implement from an unclear spec. |
| 25 Oct hits and something's not ready | Medium (this is a hard sprint) | Go/no-go on 22 Oct EOD. Options: reduced-scope ship (manual attribution only, no ad-platform CAPI) with 1 Nov ad launch; or full ship on 25 Oct with 2 Nov fix-target. Never miss 25 Nov — that is the hard limit for Christmas Appeal viability. |