Public Service management workspace
Kupona Data Feed
Integrated view of Kupona referral, assessment, mood, resource, emergency-support, consultation, and intervention status data.
What this page means
This page is the hand-off view between the GHI dashboard and Kupona. HR creates or tracks referrals in the dashboard, Kupona manages care activity, then Kupona sends back safe operational data such as referral status, consultation attendance, assessment category, compliance, resource engagement, emergency-support usage, and intervention outcome.
The key rule is separation: HR and Directors should see operational status and aggregate reporting, while private clinical session notes remain inside Kupona unless explicitly authorised.
Integration boundaries
Kupona event groups
These are the types of records expected from Kupona. The bars compare volume against the largest current event group, so high-engagement events such as mood logs naturally appear larger than clinical status events.
Status feed register
The table below is a sample of the operational status feed Kupona should send back after referrals are created. It helps HR answer: has Kupona accepted the referral, did the employee attend, is follow-up needed, and is compliance becoming a risk?
Developer integration section
This section is for Kupona and GHI/Craft Cart developers. It defines the expected JSON feeds, copyable payload examples, downloadable JSON files, and the webhook endpoint that accepts single or bulk records.
Webhook single event
Kupona sends one event to GHI for validation, duplicate checking, and processing.
{
"title": "Webhook single event",
"purpose": "Kupona sends one event to GHI for validation, duplicate checking, and processing.",
"direction": "Kupona to GHI dashboard",
"endpoint": "POST /api/kupona/webhook",
"idempotency": "source_event_id is required. Re-sending the same event payload is skipped as a duplicate.",
"payload": {
"event_type": "consultation_events",
"source_event_id": "KUP-CON-55802",
"employee_id": "PS-10042",
"occurred_at": "2026-08-14T14:35:00+02:00",
"data": {
"referral_id": "REF-02400",
"consultation_id": "CON-55802",
"appointment_status": "Attended",
"sessions_completed": 2
}
}
}
Webhook bulk events
Kupona sends many events in one request. GHI processes new rows, updates changed rows, and skips exact duplicates.
{
"title": "Webhook bulk events",
"purpose": "Kupona sends many events in one request. GHI processes new rows, updates changed rows, and skips exact duplicates.",
"direction": "Kupona to GHI dashboard",
"endpoint": "POST /api/kupona/webhook",
"idempotency": "Each record uses event_type + source_event_id. Same ID with changed data is treated as an update.",
"payload": {
"records": [
{
"event_type": "referral_status_updates",
"source_event_id": "KUP-REF-02400-001",
"employee_id": "PS-10042",
"occurred_at": "2026-08-14T09:40:00+02:00",
"data": {
"referral_id": "REF-02400",
"kupona_status": "Accepted",
"compliance_status": "Compliant"
}
},
{
"event_type": "intervention_outcomes",
"source_event_id": "KUP-OUT-02400-001",
"employee_id": "PS-10042",
"occurred_at": "2026-08-28T10:00:00+02:00",
"data": {
"referral_id": "REF-02400",
"intervention_status": "Successful",
"outcome_band": "Improved"
}
}
]
},
"response_example": {
"status": "processed",
"received": 10,
"created": 2,
"updated": 2,
"duplicates": 6,
"invalid": 0
}
}
Referral hand-off
GHI sends an HR referral to Kupona after workplace concern review.
{
"title": "Referral hand-off",
"purpose": "GHI sends an HR referral to Kupona after workplace concern review.",
"direction": "GHI dashboard to Kupona",
"privacy_level": "Administrative referral data only",
"expected_schedule": "Real-time or near real-time",
"payload": {
"referral_id": "REF-02400",
"employee_id": "PS-10042",
"employee_name": "Miriam Banda",
"ministry": "Ministry of Health",
"province": "Lusaka",
"city": "Lusaka",
"gender": "Female",
"reason_category": "Absenteeism",
"urgency": "Urgent",
"consent_status": "Consent captured",
"hr_observation": "Workplace concern summary only. No clinical session notes.",
"referred_at": "2026-08-14T09:30:00+02:00"
}
}
Referral status updates
Kupona confirms whether the referred employee has accepted, booked, started care, or closed the referral.
{
"title": "Referral status updates",
"purpose": "Kupona confirms whether the referred employee has accepted, booked, started care, or closed the referral.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Status fields only",
"expected_schedule": "Every status change and nightly reconciliation",
"payload": {
"referral_id": "REF-02400",
"employee_id": "PS-10042",
"kupona_status": "Accepted",
"consultation_status": "Consultation completed",
"compliance_status": "Compliant",
"last_status_at": "2026-08-14T15:10:00+02:00",
"next_follow_up_date": "2026-08-21"
}
}
Assessment events
Kupona shares assessment category results as dashboard-safe categories and risk bands.
{
"title": "Assessment events",
"purpose": "Kupona shares assessment category results as dashboard-safe categories and risk bands.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Category and risk band, no raw answers",
"expected_schedule": "Nightly aggregate plus case-level status where authorised",
"payload": {
"assessment_id": "ASM-89301",
"employee_id": "PS-10087",
"category": "Anxiety and worry",
"risk_band": "Moderate",
"completed_at": "2026-08-13T11:45:00+02:00",
"requires_follow_up": true
}
}
Mood check-ins
Kupona shares engagement and risk signals from mood logs without exposing private journal notes.
{
"title": "Mood check-ins",
"purpose": "Kupona shares engagement and risk signals from mood logs without exposing private journal notes.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Score/risk signal only",
"expected_schedule": "Nightly aggregate",
"payload": {
"employee_id": "PS-11011",
"average_mood_score": 3.6,
"checkins_count": 7,
"best_day": "Saturday",
"risk_signal": "Watch",
"period": "2026-08"
}
}
Resource engagement
Kupona shares whether employees are using assigned articles, fact sheets, or support resources.
{
"title": "Resource engagement",
"purpose": "Kupona shares whether employees are using assigned articles, fact sheets, or support resources.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Engagement metadata only",
"expected_schedule": "Nightly aggregate",
"payload": {
"employee_id": "PS-11019",
"resource_type": "Article",
"resource_category": "Anxiety",
"resource_title": "Understanding Anxiety: Signs, Symptoms, and Coping Strategies",
"engagement_status": "Viewed",
"viewed_at": "2026-08-12T18:20:00+02:00"
}
}
Emergency support usage
Kupona shares aggregate crisis-support usage for safeguarding and service planning.
{
"title": "Emergency support usage",
"purpose": "Kupona shares aggregate crisis-support usage for safeguarding and service planning.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Aggregate only unless emergency protocol authorises escalation",
"expected_schedule": "Daily aggregate",
"payload": {
"period": "2026-08-14",
"province": "Lusaka",
"ministry": "Ministry of Health",
"emergency_opens": 7,
"hotline_clicks": 4,
"escalations_authorised": 1
}
}
Consultation events
Kupona shares appointment status, attendance, and follow-up status for HR compliance tracking.
{
"title": "Consultation events",
"purpose": "Kupona shares appointment status, attendance, and follow-up status for HR compliance tracking.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Appointment metadata only",
"expected_schedule": "Every appointment update and nightly reconciliation",
"payload": {
"consultation_id": "CON-55802",
"referral_id": "REF-02400",
"employee_id": "PS-10042",
"consultation_type": "Counselling",
"appointment_status": "Attended",
"scheduled_for": "2026-08-14T14:00:00+02:00",
"sessions_completed": 2
}
}
Intervention outcomes
Kupona shares case closure and outcome status used for impact reporting.
{
"title": "Intervention outcomes",
"purpose": "Kupona shares case closure and outcome status used for impact reporting.",
"direction": "Kupona to GHI dashboard",
"privacy_level": "Outcome classification only",
"expected_schedule": "On intervention status change",
"payload": {
"referral_id": "REF-02400",
"employee_id": "PS-10042",
"intervention_status": "Successful",
"outcome_band": "Improved",
"case_closed_at": "2026-08-28T10:00:00+02:00",
"recommended_hr_follow_up": "Monitor attendance for 30 days"
}
}