Get Conversion Tracking Analytics
curl --request POST \
--url https://management.scanova.io/analytics/ct/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_by": "qrid",
"q": [
"Q20a18d4af3e947a1"
]
}
'import requests
url = "https://management.scanova.io/analytics/ct/"
payload = {
"filter_by": "qrid",
"q": ["Q20a18d4af3e947a1"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({filter_by: 'qrid', q: ['Q20a18d4af3e947a1']})
};
fetch('https://management.scanova.io/analytics/ct/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://management.scanova.io/analytics/ct/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter_by' => 'qrid',
'q' => [
'Q20a18d4af3e947a1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://management.scanova.io/analytics/ct/"
payload := strings.NewReader("{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://management.scanova.io/analytics/ct/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/analytics/ct/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"conversion": {
"meta": {
"warnings": [],
"unlinked_qrs": []
},
"count": {
"total_events": 12,
"total_conversions": 12,
"unique_sessions": 2,
"conversion_rate": 600,
"revenue": 0,
"primary_currency": null,
"currency_warning": null,
"period": {
"start": "2026-02-08",
"end": "2026-03-10"
}
},
"trend": [
{
"date": "2026-02-26",
"unique_sessions": 1,
"conversions": 7,
"events": 7,
"conversion_rate": 700
},
{
"date": "2026-03-02",
"unique_sessions": 1,
"conversions": 5,
"events": 5,
"conversion_rate": 500
}
],
"event_breakdown": [
{
"event": "scroll",
"total_events": 7,
"unique_sessions": 2,
"conversions": 7
},
{
"event": "click",
"total_events": 3,
"unique_sessions": 1,
"conversions": 3
},
{
"event": "pageview",
"total_events": 2,
"unique_sessions": 2,
"conversions": 2
}
],
"site_breakdown": [
{
"site": {
"site_id": "pID5CJUPr6VgP53FJLCeNZpk9tQwQi0JpPmECQoxAEeTzrtzoQxCOAkSxrCQb3c4",
"name": "Sample Site 1"
},
"total_events": 12,
"unique_sessions": 2,
"conversions": 12,
"conversion_rate": 600
}
],
"funnel": [
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 0
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0
}
],
"hybrid_funnel": [
{
"step": "scan",
"sessions": 17,
"drop_off_percent": 0
},
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 88.24
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0
}
],
"summary": {
"visitors": 2,
"pageviews": 2,
"events": 12,
"conversions": 12,
"revenue": 0
},
"traffic": {
"visitors_by_date": [
{
"date": "2026-02-26",
"visitors": 1
},
{
"date": "2026-03-02",
"visitors": 1
}
],
"top_pages": []
},
"audience": {
"countries": [],
"devices": [],
"browsers": []
},
"behavior": {
"top_events": [
{
"event": "scroll",
"total_events": 7,
"unique_sessions": 2,
"conversions": 7
}
],
"event_timeline": [
{
"date": "2026-02-26",
"unique_sessions": 1,
"conversions": 7,
"events": 7,
"conversion_rate": 700
}
]
},
"qr_performance": [
{
"qrid": "Q20a18d4af3e947a1",
"total_events": 12,
"unique_sessions": 2,
"conversions": 12,
"conversion_rate": 600,
"revenue": 0
}
]
},
"scan_overview": {
"total": 17,
"elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"unique": 2,
"unique_elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"scan_qr": 0,
"scan_url": 17
}
}Conversion Tracking
Conversion Analytics
Generate conversion analytics for selected QR Codes, with KPI, trend, event/site breakdown, and funnel outputs.
POST
/
analytics
/
ct
/
Get Conversion Tracking Analytics
curl --request POST \
--url https://management.scanova.io/analytics/ct/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_by": "qrid",
"q": [
"Q20a18d4af3e947a1"
]
}
'import requests
url = "https://management.scanova.io/analytics/ct/"
payload = {
"filter_by": "qrid",
"q": ["Q20a18d4af3e947a1"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({filter_by: 'qrid', q: ['Q20a18d4af3e947a1']})
};
fetch('https://management.scanova.io/analytics/ct/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://management.scanova.io/analytics/ct/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter_by' => 'qrid',
'q' => [
'Q20a18d4af3e947a1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://management.scanova.io/analytics/ct/"
payload := strings.NewReader("{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://management.scanova.io/analytics/ct/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://management.scanova.io/analytics/ct/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_by\": \"qrid\",\n \"q\": [\n \"Q20a18d4af3e947a1\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"conversion": {
"meta": {
"warnings": [],
"unlinked_qrs": []
},
"count": {
"total_events": 12,
"total_conversions": 12,
"unique_sessions": 2,
"conversion_rate": 600,
"revenue": 0,
"primary_currency": null,
"currency_warning": null,
"period": {
"start": "2026-02-08",
"end": "2026-03-10"
}
},
"trend": [
{
"date": "2026-02-26",
"unique_sessions": 1,
"conversions": 7,
"events": 7,
"conversion_rate": 700
},
{
"date": "2026-03-02",
"unique_sessions": 1,
"conversions": 5,
"events": 5,
"conversion_rate": 500
}
],
"event_breakdown": [
{
"event": "scroll",
"total_events": 7,
"unique_sessions": 2,
"conversions": 7
},
{
"event": "click",
"total_events": 3,
"unique_sessions": 1,
"conversions": 3
},
{
"event": "pageview",
"total_events": 2,
"unique_sessions": 2,
"conversions": 2
}
],
"site_breakdown": [
{
"site": {
"site_id": "pID5CJUPr6VgP53FJLCeNZpk9tQwQi0JpPmECQoxAEeTzrtzoQxCOAkSxrCQb3c4",
"name": "Sample Site 1"
},
"total_events": 12,
"unique_sessions": 2,
"conversions": 12,
"conversion_rate": 600
}
],
"funnel": [
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 0
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0
}
],
"hybrid_funnel": [
{
"step": "scan",
"sessions": 17,
"drop_off_percent": 0
},
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 88.24
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0
}
],
"summary": {
"visitors": 2,
"pageviews": 2,
"events": 12,
"conversions": 12,
"revenue": 0
},
"traffic": {
"visitors_by_date": [
{
"date": "2026-02-26",
"visitors": 1
},
{
"date": "2026-03-02",
"visitors": 1
}
],
"top_pages": []
},
"audience": {
"countries": [],
"devices": [],
"browsers": []
},
"behavior": {
"top_events": [
{
"event": "scroll",
"total_events": 7,
"unique_sessions": 2,
"conversions": 7
}
],
"event_timeline": [
{
"date": "2026-02-26",
"unique_sessions": 1,
"conversions": 7,
"events": 7,
"conversion_rate": 700
}
]
},
"qr_performance": [
{
"qrid": "Q20a18d4af3e947a1",
"total_events": 12,
"unique_sessions": 2,
"conversions": 12,
"conversion_rate": 600,
"revenue": 0
}
]
},
"scan_overview": {
"total": 17,
"elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"unique": 2,
"unique_elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"scan_qr": 0,
"scan_url": 17
}
}Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Comma-separated sections to return. Supported: count, trend, event_breakdown, site_breakdown, funnel, scan_overview, hybrid_funnel, summary, traffic, audience, behavior, qr_performance, raw. |
from | string (YYYY-MM-DD) | Yes | Inclusive start date. |
to | string (YYYY-MM-DD) | Yes | Inclusive end date. |
all | boolean | No | Include all QR Codes in scope. |
search | string | No | Search value used with all=true. |
category | string | No | Comma-separated category slugs. |
users | string | No | Comma-separated user IDs. |
conversion_events | string | No | Comma-separated conversion event keys. Default: purchase,signup,lead,conversion. |
funnel_steps | string | No | Ordered comma-separated event keys for funnel calculation. |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
filter_by | string | Yes | One of: qrid, id, tags. |
q | array[string] | Yes | Values corresponding to filter_by. |
Example Request
curl -X POST "https://management.scanova.io/analytics/ct/?type=count,trend,event_breakdown,site_breakdown,funnel&from=2026-03-03&to=2026-03-10&search=trac&conversion_events=purchase,signup,lead,conversion&funnel_steps=pageview,click,purchase" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filter_by": "qrid",
"q": ["Q20a18d4af3e947a1"]
}'
Example Response
{
"conversion": {
"meta": {
"warnings": [],
"unlinked_qrs": []
},
"count": {
"total_events": 12,
"total_conversions": 12,
"unique_sessions": 2,
"conversion_rate": 600.0,
"revenue": 0.0,
"primary_currency": null,
"currency_warning": null,
"period": {
"start": "2026-02-08",
"end": "2026-03-10"
}
},
"trend": [
{
"date": "2026-02-26",
"unique_sessions": 1,
"conversions": 7,
"events": 7,
"conversion_rate": 700.0
},
{
"date": "2026-03-02",
"unique_sessions": 1,
"conversions": 5,
"events": 5,
"conversion_rate": 500.0
}
],
"event_breakdown": [
{
"event": "scroll",
"total_events": 7,
"unique_sessions": 2,
"conversions": 7
},
{
"event": "click",
"total_events": 3,
"unique_sessions": 1,
"conversions": 3
},
{
"event": "pageview",
"total_events": 2,
"unique_sessions": 2,
"conversions": 2
}
],
"site_breakdown": [
{
"site": {
"site_id": "pID5CJUPr6VgP53FJLCeNZpk9tQwQi0JpPmECQoxAEeTzrtzoQxCOAkSxrCQb3c4",
"name": "Sample Site 1"
},
"total_events": 12,
"unique_sessions": 2,
"conversions": 12,
"conversion_rate": 600.0
}
],
"funnel": [
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 0
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50.0
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0.0
}
],
"hybrid_funnel": [
{
"step": "scan",
"sessions": 17,
"drop_off_percent": 0
},
{
"step": "pageview",
"sessions": 2,
"drop_off_percent": 88.24
},
{
"step": "click",
"sessions": 1,
"drop_off_percent": 50.0
},
{
"step": "scroll",
"sessions": 1,
"drop_off_percent": 0.0
}
]
},
"scan_overview": {
"total": 17,
"elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"unique": 2,
"unique_elevation": {
"percent": 100,
"previous": 0,
"type": "+",
"period": {
"start": "2026-01-08T18:07:00Z",
"end": "2026-02-07T18:07:00Z"
}
},
"scan_qr": 0,
"scan_url": 17
}
}
Authorizations
API key authentication. Enter your API key directly in the Authorization header.
Query Parameters
Comma-separated analytics sections.
Start date (inclusive). Format: YYYY-MM-DD
End date (inclusive). Format: YYYY-MM-DD
Include all QRs in scope.
Search value used with all=true.
Comma-separated category slugs.
Comma-separated user IDs.
Comma-separated conversion event keys.
Ordered comma-separated funnel step event keys.
Body
application/json
Response
200 - application/json
Conversion analytics generated successfully
The response is of type object.
Was this page helpful?
⌘I