MyWiFi Networks
mywifiWhite-label captive portal platform. Poll-based connector that ingests aggregate WiFi analytics — footfall counts, session duration, bandwidth, and device-type breakdowns — per location. No per-guest data is ever collected.
Configuration schema
Setup instructions
Log into the MyWiFi Control Panel.
Navigate to Branding (or Settings > API) and copy your App Secret Key. This becomes the api_key.
Note the numeric Location ID for the venue from the location settings page. This becomes the location_id.
Register the integration via POST /api/venues/:id/integrations with connector_type "mywifi", providing api_key and location_id.
No webhook configuration is required — v1 uses polling only. The GuestNetworks scheduler calls POST /internal/connectors/mywifi/poll on a recurring schedule to fetch the latest aggregate data.
Once configured, footfall counts and environment metrics appear in the dashboard within the next poll cycle.
Webhook / polling format
// MyWiFi connector v1 is POLL-ONLY — no webhook is required.
// The scheduler calls these MyWiFi API endpoints on each cycle:
//
// GET https://www.mywifi.io/api/get-visits
// ?location_id=<id>&start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&granularity=daily
// → aggregate footfall buckets (total_visits per date bucket)
//
// GET https://www.mywifi.io/api/get-social-logins?location_id=<id>
// → aggregate auth-method counts (whatsapp/sms/email/passcode/oauth …)
//
// GET https://www.mywifi.io/api/average-session-time?location_id=<id>
// → average & median session duration (minutes)
//
// GET https://www.mywifi.io/api/average-bandwidth-used?location_id=<id>
// → average & total bandwidth consumed (MB/GB)
//
// GET https://www.mywifi.io/api/device-metrics?location_id=<id>
// → device-type and OS breakdown (aggregate counts, no MAC)
//
// Auth: identifier: <api_key> (custom header — NOT Authorization: Bearer)
// All responses return PRE-AGGREGATED counts. Zero device identifiers are present.Normalized canonical event
After normalization, the connector output becomes a standard GNCanonicalEvent:
// /get-visits → GN "count" event (footfall bucket, PRIMARY signal)
{
"event_type": "count",
"venue_id": "v_ghi789",
"zone_id": null,
"device_hash": null,
"operator_device_hash": null,
"time": "2026-06-17T00:00:00.000Z",
"source_id": "mywifi",
"count": 214,
"metrics": {},
"meta": {
"kind": "footfall_bucket",
"granularity": "daily",
"bucket_date": "2026-06-17",
"new_guests": "138",
"returning_guests": "76"
}
}
// /average-session-time → GN "environment" event (aggregate metric snapshot)
{
"event_type": "environment",
"venue_id": "v_ghi789",
"device_hash": null,
"operator_device_hash": null,
"count": 1,
"metrics": { "session_duration_s": 1320 },
"meta": {
"kind": "session_time_agg",
"median_session_minutes": "18",
"total_sessions": "312"
}
}