What you get
Built for marketers who want to ship, not configure.
- ✓Hijri-year boundary tracking (Muharram 1) per donor.
- ✓Designation classification at ingest: Zakat / Sadaqah / Iftar / General fund / Ramadan / Other.
- ✓Warning fires only on Zakat-tagged campaigns — not on Sadaqah or Iftar drives.
- ✓Suppression-due-to-no-data is visible in admin health panel — no silent false confidence.
- ✓Off-by-default at launch; flip the feature flag per organization when ready.
- ✓Adapter-level designation mapping for every donation platform.
- ✓Audit log records every warning shown, suppressed, or overridden.
The numbers
Hijri year
Zakat boundary at Muharram 1
6 designations
Canonical enum across platforms
0 false positives
Test-fixture acceptance gate
Capabilities
Everything in the box.
Hijri year boundary
Every donation stamped with paidAtHijri at ingest. No read-time conversion. Indexed query returns under 100ms.
Designation enum
Zakat / Sadaqah / Iftar / General fund / Ramadan / Other — canonical across Donorbox, LaunchGood, Stripe, Fundwise, Givebutter.
Warning trigger
Donor has Zakat-classified gift in current Hijri year + you're launching a Zakat-tagged campaign → warning surfaces inline.
Health panel
/admin/zakat-warning-health shows last-fired timestamp, suppression count, missing-index warnings. No silent failure.
Off-by-default flag
Ship Zakat-aware campaigns at launch with the warning suppressed; flip it on per organization once data is sufficient.
Audit on override
Campaign manager overrides the warning → audit log records actor, donor count, timestamp for compliance review.