Skip to content

Skaneeringute jälgimine ja analüütika

Ülevaade

Iga dünaamilise QR-koodi skaneerimine loob sinu töölaual (Workspace) skaneerimiskirje (Scan-Record). Andmete kogumine toimub täielikult Cloudflare-Edge’is — ilma väliste jälgimisteenusteta, ilma küpsisteta ja ilma, et algne IP-aadress kunagi sinu andmebaasi jõuaks.

Kolm viisi skaneerimisandmete kasutamiseks:

Agregeerimise API

GET /v1/codes/:id/scans — aegread + parimad riigid/seadmed/operatsioonisüsteemid ühe koodiobjekti kohta.

Veebikonksud (reaalaeg)

qr.scanned-sündmus iga skaneeringu kohta, HMAC-SHA256 allkirjastatud. Vaata Webhooks.

Töölaud

Visualiseerimine qr3.app töölaual — API-päringut pole vaja.


Milliseid andmeid kogutakse

Iga skaneeringu kohta luuakse kirje tabelisse scans:

VäliAllikasNäide
idServeri loodud UUIDscn_d1f8…
code_idSkaneeritud QR-koodi IDqr_a1b2c3d4
workspace_idKoodi Workspacews_xxx
countryCloudflare cf.countryAT
regionCloudflare cf.regionVienna
cityCloudflare cf.cityWien
device_typeUser-Agent’i parsiminemobile, tablet, desktop
osUser-Agent’i parsimineiOS, Android, macOS, Windows
browserUser-Agent’i parsimineSafari, Chrome, Firefox
refererHTTP Referer-päishttps://example.com/landing
languageAccept-Language-päis (esimene keel)de
redirected_toTegelik ümbersuunamise sihtkohthttps://example.com
ip_hashSHA-256(IP + igapäevane sool) — pöördumatu8f3a…
scanned_atISO-8601 ajatempel2026-05-12T14:32:11.000Z

Geo-lokaliseerimine Edge’is

Kõik geoandmed (country, region, city) pärinevad Cloudflare’i cf-objektist ja põhinevad Cloudflare’i Geo-IP andmebaasil. Väliseid Geo-IP teenuseid ei pärita — tuvastamine toimub samas Workeris, mis teostab ka ümbersuunamise.

Sellel on kolm tagajärge:

  1. Madal viivitus — puudub täiendav vahesamm (hop), puudub DNS-päring välisele teenusepakkujale.
  2. Andmekaitse — IP-aadress ei lahku Cloudflare’ist ja seda ei edastata kunagi kolmandatele osapooltele.
  3. Piiratud täpsuscity (linn) ei ole alati saadaval (nt VPN-ide, mobiilsideoperaatorite või väikeste piirkondade puhul). Arvesta null-väärtustega ja võta neid oma töölaudadel arvesse.

Skaneerimisanalüütika päringud

GET /v1/codes/:id/scans

Tagastab agregeeritud analüütika ühe QR-koodi kohta valitud ajavahemikus.

Terminal window
curl "https://qr3.app/v1/codes/qr_a1b2c3d4/scans?days=30" \
-H "Authorization: Bearer qr3_sk_..."

Päringu parameetrid:

ParameeterTüüpVaikimisiKirjeldus
daysinteger30Ajavahemik päevades (1–365)

Vastus (HTTP 200):

{
"data": {
"code_id": "qr_a1b2c3d4",
"short_code": "r7f3Kx",
"total_scans": 1842,
"period_days": 30,
"period_scans": 367,
"scans_by_day": [
{ "date": "2026-04-13", "count": 12 },
{ "date": "2026-04-14", "count": 18 }
],
"top_countries": [
{ "value": "AT", "count": 142 },
{ "value": "DE", "count": 98 },
{ "value": "CH", "count": 41 }
],
"top_devices": [
{ "value": "mobile", "count": 281 },
{ "value": "desktop", "count": 72 },
{ "value": "tablet", "count": 14 }
],
"top_os": [
{ "value": "iOS", "count": 158 },
{ "value": "Android", "count": 123 },
{ "value": "macOS", "count": 48 }
]
},
"meta": { "request_id": "req_xyz123" }
}

Vastuse väljad:

VäliKirjeldus
total_scansKoodi eluaegne skaneeringute koguarv (sõltumata days-aknast)
period_scansSkaneeringute koguarv valitud ajavahemikus
scans_by_dayPäevapõhised andmed, kuupäeva järgi kasvavas järjekorras, tühjad päevad jäetakse vahele
top_countriesTop 8 riiki valitud ajavahemikus, kahanevas järjekorras
top_devicesTop 5 seadmetüüpi (mobile, tablet, desktop)
top_osTop 5 operatsioonisüsteemi

Agregeerimine mitme koodi vahel

Workspace’i-ülesed kogusummad (nt skaneeringud kuus kõigi koodide lõikes) on saadaval päringu GET /v1/workspaces/:id kaudu väljal scans_this_month. Koodidevaheliseks analüüsiks soovitame kasutada töölauda või perioodilist eksporti.


Reaalajas tarbimine veebikonksude kaudu

Kui soovid skaneerimissündmusi töödelda kohe, kui need toimuvad — näiteks reaalajas töölaudade, vihjete jälgimise (lead tracking) või CRM-integratsioonide jaoks — telli sündmus qr.scanned:

Terminal window
curl -X POST https://qr3.app/v1/webhooks \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/qr3",
"events": ["qr.scanned"],
"secret": "my-secret-key-min-16-chars"
}'

Payload:

{
"id": "evt_abc123xyz",
"type": "qr.scanned",
"created": "2026-05-12T14:32:11.000Z",
"data": {
"code_id": "qr_a1b2c3d4",
"short_code": "r7f3Kx",
"scan_id": "scn_d1f8...",
"country": "AT",
"device_type": "mobile",
"os": "iOS"
}
}

Täielik dokumentatsioon allkirja verifitseerimise, korduskatsete loogika ja tarne logide kohta on saadaval jaotises API → Webhooks.


Isikuandmete kaitse üldmäärus (GDPR) & andmekaitse

Skaneerimiskirjed ei sisalda isikuandmeteks liigituvaid IP-aadresse. Algne IP-aadress asendatakse Edge-Workeris krüptograafilise räsifunktsiooniga (SHA-256), kasutades igapäevaselt vahetuvat soola (salt). See tähendab:

  • Isiku tuvastamine ei ole võimalik isegi algoritmi teadmise korral
  • Sama külastaja tegevust ei saa eri päevade vahel seostada
  • Algne IP-aadress ei jõua kunagi D1 andmebaasi

Säilitusaeg (Retention) sõltub paketist:

PakettSäilitusaeg
Free7 päeva
Pro90 päeva
Business / Agency1 aasta
EnterpriseKohandatud (SLA)

Igapäevaselt käivitatav cron-töö (purgeOldScans) eemaldab vanemad kirjed automaatselt — koodiobjekti väli total_scans jääb sellest puutumata.


Parimad tavad

  • Päringute sagedus (Polling): Agregeerimise API on ressursisäästlik, kuid pole mõeldud sekundipõhiseks päringute tegemiseks. Reaalajas uuenduste jaoks kasuta alati veebikonkse ja kasuta API-t ainult andmete tagantjärele täitmiseks või töölaudade jaoks.
  • Puhverdamine (Caching): Vastus sisaldab aegridu — suurte ajavahemike puhul (days=365) võib andmemaht (payload) olla mitu kilobaiti. Puhverda andmeid kliendi poolel lühikese elueaga (TTL, nt 60 s).
  • Top-N piirangud: top_countries, top_devices, top_os on serveri poolel piiratud vastavalt 8 või 5 kirjele. Põhjalikumaks analüüsiks ekspordi toorandmed.
  • null-väärtuste lubamine: country, region, city, referer, language võivad olla null. Käsitle neid oma analüüsis kui “Tundmatu”.