Public Service management workspace

Kupona Data Feed

Integrated view of Kupona referral, assessment, mood, resource, emergency-support, consultation, and intervention status data.

Data synced today
Referral connectionActiveReceiving status updates
Assessment categories6Mapped from Kupona
Resource events89Articles and fact sheets
Emergency usage7Aggregate only

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

HR flagsCaptured in GHI dashboard
ReferralSent to Kupona
CareManaged by Kupona
StatusSynced back
ReportAggregated for Directors

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.

Depression and mood
258
Anxiety and worry
370
Sleep problems
222
Memory and concentration
111
Weekly mood logs
4500
Articles and fact sheets viewed
600
Crisis support opened
217

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?

UsesHR trackingEmployee-level status without clinical notes.
DirectorsAggregate onlyCounts, trends, and performance indicators.
RiskMissed careNon-compliance and missed appointment signals.

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.

POST /api/kupona/webhook
Webhook behaviour: Kupona can send one event or a bulk records array. The dashboard validates each record before processing. If the same event is submitted repeatedly with the same data, it is skipped as a duplicate. If the same event ID arrives with changed data, it is counted as an update.

Webhook single event

Kupona sends one event to GHI for validation, duplicate checking, and processing.

DirectionKupona to GHI dashboard
Privacysource_event_id is required. Re-sending the same event payload is skipped as a duplicate.
{
    "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
        }
    }
}
Download JSON

Webhook bulk events

Kupona sends many events in one request. GHI processes new rows, updates changed rows, and skips exact duplicates.

DirectionKupona to GHI dashboard
PrivacyEach record uses event_type + source_event_id. Same ID with changed data is treated as an update.
{
    "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
    }
}
Download JSON

Referral hand-off

GHI sends an HR referral to Kupona after workplace concern review.

DirectionGHI dashboard to Kupona
PrivacyAdministrative referral data only
{
    "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"
    }
}
Download JSON

Referral status updates

Kupona confirms whether the referred employee has accepted, booked, started care, or closed the referral.

DirectionKupona to GHI dashboard
PrivacyStatus fields only
{
    "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"
    }
}
Download JSON

Assessment events

Kupona shares assessment category results as dashboard-safe categories and risk bands.

DirectionKupona to GHI dashboard
PrivacyCategory and risk band, no raw answers
{
    "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
    }
}
Download JSON

Mood check-ins

Kupona shares engagement and risk signals from mood logs without exposing private journal notes.

DirectionKupona to GHI dashboard
PrivacyScore/risk signal only
{
    "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"
    }
}
Download JSON

Resource engagement

Kupona shares whether employees are using assigned articles, fact sheets, or support resources.

DirectionKupona to GHI dashboard
PrivacyEngagement metadata only
{
    "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"
    }
}
Download JSON

Emergency support usage

Kupona shares aggregate crisis-support usage for safeguarding and service planning.

DirectionKupona to GHI dashboard
PrivacyAggregate only unless emergency protocol authorises escalation
{
    "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
    }
}
Download JSON

Consultation events

Kupona shares appointment status, attendance, and follow-up status for HR compliance tracking.

DirectionKupona to GHI dashboard
PrivacyAppointment metadata only
{
    "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
    }
}
Download JSON

Intervention outcomes

Kupona shares case closure and outcome status used for impact reporting.

DirectionKupona to GHI dashboard
PrivacyOutcome classification only
{
    "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"
    }
}
Download JSON

Kupona feed monitor

Operational tables for each incoming Kupona event group. Each tab shows the latest synced records, last received timestamp, realtime search, and pagination for large feeds.

Realtime search
Referral status 1,753 Last received: 2026-08-14 15:30
Consultations 1,753 Last received: 2026-08-14 15:00
Assessments 1,850 Last received: 2026-08-14 11:00
Mood and resources 1,200 Last received: 2026-08-18 16:26
Emergency support 23 Last received: 2026-08-14 00:00
Intervention outcomes 1,753 Last received: 2026-08-14 16:00
Active feedReferral status
Records tracked0
Last received-