SFMC Personalisation
In ProgressPersona-based content personalisation powered by Salesforce Marketing Cloud, delivering tailored banners, related content, and GA4 tracking.
Member Portals
CompleteStakeholder registration and login system with role-based Resource Hub access for Schools, Workplaces, and Professionals, with Foxy SSO integration.
E-Commerce Operations
PlannedStock management, order workflows, reporting, and fulfilment process enhancements for the MHF webstore.
SFMC Personalisation — Business Requirements
Executive Summary
Integrate Salesforce Marketing Cloud (SFMC) personalisation capabilities with the MHF website to deliver tailored content based on visitor personas. This Phase 1 implementation delivers four personalisation components with graceful fallbacks for unrecognised visitors, enabling persona-driven content experiences and GA4 tracking for engagement measurement by segment.
Business Drivers
Business Objectives
| Objective | Success Measure | Target |
|---|---|---|
| Increase content relevance | Engagement rate by persona segment | Baseline + 15% |
| Enable persona-based reporting | GA4 custom dimension tracking | 100% of page views tagged |
| Maintain consistent UX | Fallback content served when no persona | 100% graceful degradation |
| Establish personalisation foundation | Components delivered for Phase 1 | 4 components live |
Scope
Phase 1 — MVP
- Persona retrieval via SFMC API
- Personalised banner carousel
- Related content filtering (main area)
- Related content pod (sidebar)
- GA4 persona tracking
- First-party cookie for persona storage
- Fallback content for unrecognised visitors
Future Phases
- Content editor training & onboarding
- Additional personalised components
- A/B testing capability
- Enhanced segment definitions
Out of Scope
- SFMC platform configuration
- Real-time persona calculation on website
- Personalisation of navigation or site structure
- User authentication-based personalisation
- Email personalisation
- Mobile app integration
Constraints
- First-party cookies only
- No server-side SFMC calls on page render
- Umbraco owns all content (SFMC provides persona data only)
- Must maintain uSkinned design patterns
Risks & Dependencies
Risks
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| SFMC API latency affects page performance | Medium | High | Client-side async loading, no blocking renders |
| Low persona match rate limits impact | Medium | Medium | Ensure fallback content is high quality |
| Cookie consent impacts persona availability | Medium | Medium | Clear consent flow, graceful degradation |
| Content editor adoption of persona tagging | Low | High | Training, clear documentation, simple UX |
| Vendor delivery delays impact timeline | Medium | High | Early engagement, clear milestones |
Dependencies
| Dependency | Type | Status |
|---|---|---|
| SFMC tracking beacon deployed | External (Vendor) | Complete |
| SFMC API endpoint available | External (Vendor) | Complete |
| SFMC API documentation provided | External (Vendor) | Complete |
| Persona values defined | External (Vendor) | Complete |
| GA4 implementation | Internal | Complete |
| uSkinned Site Builder licence | Internal | Complete |
| Cookie consent mechanism | Internal | TBC |
SFMC Personalisation — Functional Requirements
Overview
Four personalisation components plus GA4 tracking, all with graceful fallback for unrecognised visitors.
F-01: Persona Retrieval & Storage
| ID | Requirement | Priority |
|---|---|---|
| FR-01 | Retrieve persona value from SFMC via API call referencing tracking beacon | Must Have |
| FR-02 | Store persona value in first-party cookie (mhf_persona) | Must Have |
| FR-09 | Handle missing or expired persona cookie gracefully | Must Have |
F-02: Personalised Banner Component
| ID | Requirement | Priority |
|---|---|---|
| FR-03 | Render carousel item tagged with matching persona | Must Have |
| FR-04 | Fall back to default carousel item when no persona match | Must Have |
F-03 & F-04: Related Content (Main & Sidebar)
| ID | Requirement | Priority |
|---|---|---|
| FR-05 | Related Content Component (main area) shall filter content based on persona-to-filter mapping | Must Have |
| FR-05a | Related Content Pod (sidebar) shall filter content based on persona-to-filter mapping | Must Have |
| FR-05b | Pod shall support placement via Extra Content tab or as template default | Should Have |
F-05: GA4 Persona Tracking
| ID | Requirement | Priority |
|---|---|---|
| FR-06 | Send persona value to GA4 as custom dimension on page view | Must Have |
Content Management
| ID | Requirement | Priority |
|---|---|---|
| FR-07 | Content editors can tag content with persona/segment values in Umbraco | Must Have |
| FR-08 | Administrators can configure persona-to-filter mapping in Global Settings | Should Have |
SFMC Personalisation — Non-Functional Requirements
Performance
| Metric | Target | Priority |
|---|---|---|
| Page load impact | < 100ms additional | Must Have |
| Persona retrieval | < 500ms | Should Have |
| Personalised content render | < 500ms after persona available | Should Have |
Security & Privacy
| Requirement | Description | Priority |
|---|---|---|
| Cookie policy | First-party cookies only — no third-party tracking | Must Have |
| Consent compliance | GDPR / cookie consent requirements respected | Must Have |
| No PII | No personally identifiable information stored in persona cookie | Must Have |
| HTTPS only | All persona retrieval and storage over HTTPS | Must Have |
Accessibility & Reliability
| Metric | Target | Priority |
|---|---|---|
| WCAG compliance | 2.1 AA — no degradation from personalisation | Must Have |
| Fallback success rate | 100% — site works fully when cookies blocked | Must Have |
| Component availability | 99.9% | Should Have |
SFMC Personalisation — User Requirements
User Personas
Recognised Visitor
Unrecognised Visitor
Content Editor
User Stories
| ID | As a... | I want to... | So that... | Priority |
|---|---|---|---|---|
| US-01 | Recognised visitor | see banner content relevant to my interests | I engage with the most useful resources | Must Have |
| US-02 | Recognised visitor | see related content filtered to my persona | I discover resources matched to my needs | Must Have |
| US-03 | Unrecognised visitor | see quality default content | my experience is not degraded | Must Have |
| US-04 | Content editor | tag content with persona values | the right content is shown to the right audience | Must Have |
| US-05 | Digital analyst | segment engagement data by persona | I can measure content effectiveness by audience | Must Have |
Member Portals — Business Requirements
Executive Summary
A member portal system enabling registered stakeholders (Schools, Workplaces, and Mental Health Professionals) to access exclusive resources, place orders through Foxy.io e-commerce integration, and manage their accounts. The system provides role-based access to dedicated Resource Hubs with single sign-on to the Foxy customer portal for order management.
Business Drivers
Business Objectives
| Objective | Success Measure | Target |
|---|---|---|
| Enable stakeholder registration | Successful registrations across all types | Baseline established |
| Secure resource access | Role-based hub access working | 100% accurate routing |
| E-commerce integration | Foxy SSO functioning | 100% successful auth |
| Self-service account management | Members can view orders | Portal accessible |
Scope
MVP (Complete)
- Stakeholder registration with email confirmation
- Login with role-based redirect
- Three member roles: Schools, Workplaces, Professionals
- Email domain validation (.school.nz for Schools)
- CAPTCHA protection & rate limiting
- Foxy SSO for checkout & portal
- Foxy customer sync on login
- Logout with role-based redirect
Pending Enhancements
- Registration redirect by stakeholder type
- Professionals portal full support
Out of Scope
- Member profile editing UI
- Admin dashboard for member management
- Bulk member import
- API access for third-party systems
- Multi-factor or social login
Future Considerations
- Member profile editing through portal
- Resource download tracking/analytics
- Password-less authentication (magic links)
Risks & Dependencies
Risks
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Email deliverability issues | Medium | High | Monitor SMTP, use reputable provider |
| Foxy API downtime | Low | Medium | Graceful fallback, retry logic |
| Rate limiting too aggressive | Low | Medium | Configurable limits |
| Domain validation too restrictive | Medium | Medium | Maintain blocklist, allow exceptions |
Dependencies
| Dependency | Type | Status |
|---|---|---|
| Umbraco Members system | Internal | Complete |
| Foxy.io API credentials | External | Complete |
| SMTP configuration | Internal | Complete |
| Professionals role | Internal | Pending |
Member Portals — Functional Requirements
Overview
Registration, authentication, role-based access, and Foxy.io integration for the stakeholder portal system. All MVP features are complete.
Registration & Authentication
| ID | Requirement | Priority | Status |
|---|---|---|---|
| FR-01 | Stakeholder registration with email, password, and stakeholder type | Must Have | Complete |
| FR-02 | Validate school email domains (.school.nz) for Schools type | Must Have | Complete |
| FR-03 | Block personal email domains (gmail, hotmail, etc.) for Workplaces | Must Have | Complete |
| FR-04 | Send email confirmation with activation link | Must Have | Complete |
| FR-05 | Require email confirmation before login | Must Have | Complete |
| FR-06 | Assign member to appropriate role on registration | Must Have | Complete |
| FR-07 | Authenticate members via email/password | Must Have | Complete |
| FR-08 | Redirect to appropriate Resource Hub after login | Must Have | Complete |
| FR-12 | Support logout with role-based redirect | Must Have | Complete |
Security
| ID | Requirement | Priority | Status |
|---|---|---|---|
| FR-13 | Rate limiting on registration (5/10min) | Must Have | Complete |
| FR-14 | Rate limiting on login (10/5min) | Must Have | Complete |
| FR-15 | CAPTCHA verification (hCaptcha/reCAPTCHA) | Must Have | Complete |
Foxy.io Integration
| ID | Requirement | Priority | Status |
|---|---|---|---|
| FR-09 | Foxy SSO for checkout authentication | Must Have | Complete |
| FR-10 | Create/update Foxy customer on login | Must Have | Complete |
| FR-11 | Foxy portal access via SSO | Must Have | Complete |
Pending Enhancements
| ID | Requirement | Priority | Status |
|---|---|---|---|
| FR-16 | Registration redirect based on stakeholder type | Should Have | Gap |
| FR-17 | Support Professionals as third stakeholder type | Should Have | Gap |
Member Portals — Non-Functional Requirements
Performance
| Metric | Target | Priority |
|---|---|---|
| Login completion | < 2 seconds | Should Have |
Security
| Requirement | Description | Priority |
|---|---|---|
| Authentication logging | All authentication events logged | Must Have |
| Password policy | Umbraco default password policy enforced | Must Have |
| Email enumeration prevention | System shall not reveal whether an email is registered | Must Have |
| Foxy SSO resilience | Handle Foxy API failures gracefully | Must Have |
Member Portals — User Requirements
User Personas
School Educator
Workplace Professional
Mental Health Professional
User Stories
| ID | As a... | I want to... | So that... | Priority |
|---|---|---|---|---|
| US-01 | School educator | register for portal access | I can access school-specific resources | Must Have |
| US-02 | Workplace professional | register with my business email | I can order resources for my organisation | Must Have |
| US-03 | Registering user | confirm my email | my account is activated securely | Must Have |
| US-04 | School educator | log in and go directly to the Schools Resource Hub | I see relevant content immediately | Must Have |
| US-05 | Member | access the Foxy order portal via SSO | I can view my order history without logging in again | Must Have |
| US-06 | Mental health professional | register and access a dedicated Resource Hub | I can find clinical and professional materials | Should Have |
E-Commerce Operations — Business Requirements
Executive Summary
Enhance the MHF webstore operational capabilities to address five critical gaps identified in the current Umbraco/Foxy.io implementation: stock management, order modification, product configuration, reporting, and fulfilment workflow. Analysis reveals most gaps are configuration or training issues rather than fundamental capability gaps, with the notable exception of stock management which requires custom development.
Business Drivers
Business Objectives
| Objective | Success Measure | Target |
|---|---|---|
| Stock visibility | Operator can view current stock levels | 100% of SKUs tracked |
| Order modification | Operator can adjust quantities post-order | Documented workflow |
| Flexible product quantities | Customers select from predefined options | Configurable per product |
| Sales reporting | Item-based sales reports available | Weekly reports |
| Fulfilment workflow | Mailshop integration documented and tested | Process operational |
Scope
Phase 1 — MVP
- Custom stock management system
- Order modification workflow (training)
- Product quantity tier dropdowns
- Sales reporting training
- Mailshop fulfilment workflow
Phase 2 — Enhancements
- Looker Studio reporting dashboard
- Stock reconciliation process
Phase 3 — Future
- Bundle stock sync (custom development)
- Automated Mailshop webhook integration
- Advanced BI platform (if needed)
Out of Scope
- ERP/MYOB integration
- Salesforce CRM integration
- Real-time courier tracking
- Donation functionality
- Bundle product creation (client-managed)
- Customer shipping cost calculator
Gap Analysis Summary
| Gap | Type | Remediation |
|---|---|---|
| Stock management | Development | Custom inventory tracking in Umbraco with Foxy webhooks |
| Order modification | Training | Document workflow, provide Foxy admin training |
| Quantity options | Configuration | Configure Foxy product modifiers |
| Sales reporting | Training | Document Foxy reports + Looker Studio dashboard |
| Fulfilment workflow | Process | Define CSV export workflow with Mailshop |
Risks & Dependencies
Risks
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Split fulfilment causes stock discrepancies | High | Medium | Regular reconciliation process with Mailshop |
| Webhook integration complexity | Medium | Medium | Test with Foxy sandbox, reference existing patterns |
| Mailshop workflow friction | Medium | Medium | Clear documentation, regular review |
| Reporting inadequate for funding compliance | Low | High | Looker Studio dashboard, document requirements |
| Staff unfamiliar with Foxy admin | High | Medium | Training and documentation |
Dependencies
| Dependency | Type | Status |
|---|---|---|
| Foxy account admin access | Internal | Complete |
| Product SKU list | Internal (MHF) | To be provided |
| Mailshop CSV format agreement | External | To be confirmed |
| Mailshop stock reporting format | External | To be defined |
| Training session availability | Internal (MHF) | To be scheduled |
E-Commerce Operations — Functional Requirements
Overview
Nine features spanning custom development, configuration, training, and process definition. F-04 (Bundle Products) has been removed from scope as the client can manage this configuration directly.
F-01: Stock Management System (Custom Development)
| ID | Requirement | Priority |
|---|---|---|
| FR-01 | Inventory properties added to product content type in Umbraco | Must Have |
| FR-02 | Stock quantities manageable in Umbraco backoffice | Must Have |
| FR-03 | Out-of-stock products automatically hidden/disabled | Must Have |
| FR-04 | Foxy quantity_max attribute set from current stock | Must Have |
| FR-05 | Webhook endpoint receives Foxy transactions and decrements stock | Must Have |
| FR-06 | Low stock email notifications triggered at threshold | Should Have |
| FR-07 | Stock levels viewable/exportable for reporting | Must Have |
F-02: Order Modification Workflow (Training)
| ID | Requirement | Priority |
|---|---|---|
| FR-08 | Workflow documented: pending → review → modify → fulfil | Must Have |
| FR-09 | Foxy admin order editing demonstrated | Must Have |
| FR-10 | Training provided to operator | Must Have |
F-03: Product Quantity Options (Configuration)
| ID | Requirement | Priority |
|---|---|---|
| FR-11 | Foxy product modifiers configured for quantity tiers (1, 5, 10, 20, 50, 100) | Must Have |
| FR-12 | Umbraco product pages display dropdown correctly | Must Have |
| FR-13 | Maximum limits respected per product | Must Have |
F-05: Foxy Sales Reporting (Training)
| ID | Requirement | Priority |
|---|---|---|
| FR-14 | Transaction and item sales reports documented | Must Have |
| FR-15 | CSV export procedure documented | Must Have |
| FR-16 | Training provided to operator | Must Have |
F-06: Looker Studio Dashboard (Phase 2)
| ID | Requirement | Priority |
|---|---|---|
| FR-17 | Looker Studio dashboard with item-based sales visualisation | Should Have |
| FR-18 | Stock level indicators and trend analysis | Should Have |
| FR-19 | Campaign comparison (PSD, MHAW) | Should Have |
| FR-20 | Data refresh procedure documented | Should Have |
F-07: Mailshop Fulfilment Workflow (Process)
| ID | Requirement | Priority |
|---|---|---|
| FR-21 | Workflow documented: order → review → export → send → fulfil → update | Must Have |
| FR-22 | CSV export format defined and agreed with Mailshop | Must Have |
| FR-23 | Delivery frequency defined (daily batch) | Must Have |
| FR-24 | Mailshop agreement confirmed | Must Have |
F-09: Bundle Stock Sync (Future — Phase 3)
Automatic decrement of component stock when bundles are sold. This is the only part of the bundle feature requiring custom development — creating and selling bundles is configuration the client handles directly.
| ID | Requirement | Priority |
|---|---|---|
| FR-25 | Webhook detects bundle SKU orders | Could Have |
| FR-26 | Component SKUs identified from bundle mapping | Could Have |
| FR-27 | Component inventory decremented automatically | Could Have |
| FR-28 | Error handling for stock conflicts | Could Have |
E-Commerce Operations — Non-Functional Requirements
Performance
| Metric | Target | Priority |
|---|---|---|
| Inventory update latency | Real-time (via Foxy webhook) | Must Have |
| Report generation | < 30 seconds | Should Have |
| Dashboard load time | < 5 seconds | Should Have |
| Campaign peak support | 1,000–2,000 orders/day (PSD, MHAW) | Should Have |
Security
| Requirement | Description | Priority |
|---|---|---|
| Foxy admin access | Limited to authorised operators | Must Have |
| CSV exports | Handled securely (no public sharing) | Must Have |
| Webhook validation | HMAC signature verification on all Foxy webhooks | Must Have |
Reliability
| Metric | Target | Priority |
|---|---|---|
| Foxy uptime | 99.9% (SLA) | Should Have |
| Inventory accuracy | 95%+ (with reconciliation) | Should Have |
E-Commerce Operations — User Requirements
User Personas
Zooey
Mailshop Staff
Bulk Orderer
Individual Seeker
User Stories
| ID | As a... | I want to... | So that... | Priority |
|---|---|---|---|---|
| US-001 | Webstore operator | view current stock levels for all products | I can plan reprints proactively | Must Have |
| US-002 | Webstore operator | have out-of-stock products automatically disabled | customers can't order unavailable items | Must Have |
| US-003 | Webstore operator | receive low stock email alerts | I know when to reorder before items run out | Should Have |
| US-005 | Webstore operator | modify order quantities before fulfilment | I can accommodate approved bulk requests | Must Have |
| US-007 | Webstore operator | export orders to CSV for Mailshop | fulfilment can proceed without manual data entry | Must Have |
| US-008 | Bulk orderer | select from predefined quantity tiers | I can quickly order the right amount | Must Have |
| US-010 | Individual | order small quantities simply | I get what I need without a complicated process | Must Have |
| US-011 | Webstore operator | generate item-based sales reports | I can report on distribution for funding compliance | Must Have |
| US-012 | Webstore operator | view sales trends over time | I can identify patterns and plan campaigns | Should Have |
| US-014 | Mailshop staff | receive orders in an importable CSV format | I can process shipments without re-keying data | Must Have |