Kompletná referencia pre nasadenie a integráciu. Widget nasadíš jedným
<script> tagom bez programovania; pokročilí si postavia vlastné UI nad
verejným Search API alebo automatizujú import a štatistiky cez Management API.
Od registrácie po živé vyhľadávanie na e-shope v štyroch krokoch.
Vytvor si účet na findio a prihlás sa do dashboardu. Nový účet má plán Beta zdarma.
V sekcii Import nahraj katalóg ako JSON súbor, alebo zadaj URL automatického feedu (Heureka XML / Google Merchant). Findio si postaví vlastný izolovaný index. Detaily v sekcii Import produktov.
V sekcii Domény pridaj domény e-shopu (pozor na www aj bez www variant) a v sekcii API Token skopíruj svoj verejný app token.
Do stránky e-shopu vlož prázdny cieľový element a jeden script tag. Widget sa doň sám namountuje.
<!-- 1. Cieľový element vo vašej šablóne -->
<div id="findio-search"></div>
<!-- 2. Widget (na koniec <body>) -->
<script src="https://app.shopium.sk/widget.js"
data-token="VÁŠ_APP_TOKEN"
data-target="#findio-search"
data-placeholder="Hľadať produkty…"
defer></script>
src script tagu, preto src musí smerovať na https://app.shopium.sk/widget.js. Atribút defer zaručí, že sa widget spustí až po načítaní DOM.
Jeden skript, štyri režimy. Widget je bez závislostí, XSS-bezpečný (DOM staví výhradne cez createElement/textContent) a plne responzívny — na mobile prechádza do celoobrazovkového režimu.
Režim sa volí atribútom data-mode (default search).
Rozbaľovací panel s výsledkami, facetami (kategórie, značky, parametre) a našeptávaním priamo pod vyhľadávacím poľom.
<div id="findio-search"></div>
<script src="https://app.shopium.sk/widget.js"
data-token="VÁŠ_APP_TOKEN"
data-target="#findio-search"
data-limit="8"
data-all-results-url="https://vas-eshop.sk/vyhladavanie"
defer></script>
Režim page vyrenderuje inline výsledkovú stránku (mriežka + bočný panel filtrov + radenie). Dopyt číta z URL parametra (default q); s data-with-input="1" pridá aj vyhľadávacie pole nad výsledky.
<div id="findio-vysledky"></div>
<script src="https://app.shopium.sk/widget.js"
data-token="VÁŠ_APP_TOKEN"
data-target="#findio-vysledky"
data-mode="page"
data-query-param="q"
data-with-input="1"
defer></script>
Režim similar vykreslí horizontálny pás odporúčaní na detaile produktu — z endpointu /api/recommend?id=. Vlož data-product-id zhodný s poľom identity produktu.
<div id="findio-podobne"></div>
<script src="https://app.shopium.sk/widget.js"
data-token="VÁŠ_APP_TOKEN"
data-target="#findio-podobne"
data-mode="similar"
data-product-id="NH757A"
data-title="Mohlo by sa vám páčiť"
defer></script>
Režim conversion nič nevykresľuje — po načítaní jednorazovo nahlási hodnotu objednávky. Vlož ho na ďakovaciu stránku (po dokončení objednávky).
<script src="https://app.shopium.sk/widget.js"
data-token="VÁŠ_APP_TOKEN"
data-mode="conversion"
data-order-value="129.90"
data-order-id="OBJ-2026-0042"
data-currency="EUR"
defer></script>
| Atribút | Režim | Default | Popis |
|---|---|---|---|
data-token | všetky | povinné | Verejný app token projektu (z dashboardu → API Token). |
data-target | search, page, similar | povinné | CSS selektor cieľového elementu. V režime conversion sa ignoruje. |
data-mode | všetky | search | search · page · similar · conversion. |
data-limit | search, page, similar | 8 | Počet výsledkov na dávku. Max 24 (vyššia hodnota sa oreže). |
data-placeholder | search, page | Hľadať produkty… | Text placeholderu vyhľadávacieho poľa. |
data-all-results-url | search | — | URL celostránkových výsledkov (tlačidlo „Zobraziť všetky"). Validuje sa na http/https. |
data-theme | search, page, similar | auto | dark alebo light. Bez atribútu rozhoduje prefers-color-scheme. |
data-product-id | similar | povinné | identity produktu, pre ktorý sa hľadajú podobné. |
data-title | similar | Podobné produkty | Nadpis pásu odporúčaní. |
data-query-param | page | q | Názov URL parametra, z ktorého sa číta dopyt. |
data-with-input | page | 0 | 1 = zobraz vyhľadávacie pole nad výsledkami. |
data-order-value | conversion | povinné | Hodnota objednávky. Toleruje čiarku aj bodku (129,90 aj 129.90). |
data-order-id | conversion | — | Identifikátor objednávky — zaisťuje idempotenciu (nezapočíta sa dvakrát). |
data-currency | conversion | EUR | Mena konverzie (3-znakový kód). |
Ak nechceš deklaratívny režim, zavolaj globálny helper priamo (napr. z eventu potvrdenia objednávky). Je dostupný v každom režime widgetu.
window.Findio.trackConversion({
value: 129.90, // povinné, číselné (toleruje aj "129,90")
orderId: "OBJ-2026-0042", // voliteľné — idempotencia
currency: "EUR" // voliteľné, default "EUR"
});
Helper automaticky priloží atribúciu posledného kliku vo vyhľadávaní (ak je čerstvá, v okne 24 hodín), odošle požiadavku cez navigator.sendBeacon (s fallbackom na fetch keepalive) a atribúciu po odoslaní zmaže. Token sa berie z posledného inicializovaného widgetu, prípadne z opts.token.
Widget sa štýluje sám a rešpektuje prefers-color-scheme. Chceš tému vynútiť? Použi data-theme="dark" alebo data-theme="light" — vynútená téma prebije systémové nastavenie.
Widget si drží krátky profil posledných klikov výhradne v localStorage prehliadača (kľúč findio_profile_v1, max 30 klikov). Z neho odvodí top značky a kategórie a posiela ich ako parametre pref_b/pref_c pri vyhľadávaní a odporúčaní — výsledky sa jemne prispôsobia.
Katalóg dostaneš do Findia dvomi spôsobmi: nahraním JSON súboru (alebo push cez Management API) alebo napojením automatického feedu.
Feed je objekt s poľom items. Každá položka musí obsahovať tri povinné polia; ostatné sú voliteľné a obohacujú výsledky (obrázky, ceny, filtre, radenie).
| Pole | Povinné | Typ | Popis |
|---|---|---|---|
identity | áno | string / int | Jednoznačný identifikátor produktu (kľúč pri opakovanom importe, tracking, odporúčania). |
title | áno | string | Názov produktu (hlavné vyhľadávané pole). |
web_url | áno | string | URL produktovej stránky (cieľ prekliku z výsledku). |
brand | nie | string | Značka — facet, filter aj detekcia značky v dopyte. |
category | nie | pole polí stringov | Kategórie ako cesty, napr. [["Obuv","Muži","Bežecká obuv"]]. Findio z nich dopočíta category_paths (spojené cez „ > "). |
price | nie | string | Zobrazená cena, napr. "149 EUR". |
price_amount | nie | number | Číselná cena — pre cenové filtre a radenie podľa ceny. |
price_old / price_old_amount | nie | string / number | Pôvodná cena (prečiarknutá, výpočet zľavy). |
image_link_s / _m / _l | nie | string | URL obrázka (malý / stredný / veľký). Widget používa image_link_m. |
availability | nie | 0 / 1 | Dostupnosť (skladom / nedostupné). |
availability_rank / _rank_text | nie | int / string | Jemnejšie poradie dostupnosti a jeho textový popis (napr. „Skladom / expedícia ihneď"). |
description | nie | string | Popis produktu (tiež vyhľadávaný). |
product_code | nie | string | Kód produktu / SKU (vyhľadávaný). |
ean | nie | string | EAN / čiarový kód (vyhľadávaný). |
boost | nie | int | Ručné navýšenie poradia (vyššie = vyššie vo výsledkoch). |
introduced_at | nie | ISO 8601 | Dátum zaradenia — radenie „najnovšie". |
parameters | nie | pole {name, value} | Parametre produktu. Findio z nich odvodí params_flat pre parametrové filtre; viac-hodnotové polia oddeľuj čiarkou ("XS, M, L"). |
{
"items": [
{
"identity": "AD990B",
"title": "Bežecké tenisky Adidas Ultraboost",
"web_url": "https://vas-eshop.sk/3310-bezecke-tenisky-adidas-ultraboost",
"brand": "Adidas",
"category": [["Obuv", "Muži", "Bežecká obuv"]],
"price": "149 EUR",
"price_amount": 149.0,
"price_old": "179 EUR",
"price_old_amount": 179.0,
"image_link_m": "https://vas-eshop.sk/img/200/3310.png",
"availability": 1,
"availability_rank_text": "Skladom / expedícia ihneď",
"description": "Ľahké bežecké tenisky s medzipodrážkou Boost.",
"product_code": "AD3310U",
"ean": "4062051234567",
"boost": 2,
"introduced_at": "2026-06-15T00:00:00Z",
"parameters": [
{ "name": "Veľkosť", "value": "40, 41, 42, 43, 44, 45" },
{ "name": "Farba", "value": "Čierna" }
]
}
]
}
name/value sa rozloží na jednotlivé výbery vo formáte "Skupina: hodnota" (napr. "Veľkosť: 42"). Tie sa vo widgete zobrazia ako parametrové facety a v Search API sa filtrujú parametrom params.
V sekcii Import zadaj URL svojho XML feedu. Findio formát autodetekuje a mapuje na interné polia. Feed sa automaticky sťahuje každých 6 hodín; okamžitú synchronizáciu spustíš tlačidlom Synchronizovať teraz.
| Interné pole | Heureka XML | Google Merchant |
|---|---|---|
identity | ITEM_ID | g:id |
title | PRODUCTNAME | title |
web_url | URL | link |
image_link_m | IMGURL | g:image_link |
price / price_amount | PRICE_VAT | g:price (akciovú g:sale_price) |
brand | MANUFACTURER | g:brand |
category | CATEGORYTEXT (delené |) | g:product_type (delené >) |
availability | DELIVERY_DATE | g:availability |
description | DESCRIPTION | description |
ean | EAN | g:gtin |
product_code | PRODUCTNO | g:mpn |
parameters | PARAM (PARAM_NAME / VAL) | — |
Heureka: úvodný segment Heureka.sk/Heureka.cz v kategórii sa automaticky odstráni. Veľké feedy (100k+ položiek) sa čítajú streamovane — celý XML sa do pamäte nenačítava.
Pre pokročilých, ktorí si stavajú vlastné vyhľadávacie UI namiesto widgetu. Endpointy sú stateless a autentifikujú sa app tokenom v query parametri + overením domény (Origin/Referer). Dynamické CORS rieši server automaticky. Základná adresa: https://app.shopium.sk/api.
/api/search, /api/track, /api/recommend, /api/convert) sú obmedzené na 120 požiadaviek za minútu.
Vyhľadá v indexe projektu a vráti výsledky, facety, našeptávanie a detegované filtre.
| Parameter | Typ | Default | Popis |
|---|---|---|---|
token | string | povinné | Verejný app token projektu. |
q | string | povinné | Hľadaný dopyt. Po orezaní nesmie byť prázdny (inak 422). |
limit | int | 10 | Počet výsledkov. Oreže sa do rozsahu 1–50. |
offset | int | 0 | Stránkovanie. Rozsah 0–10000. |
sort | string | relevance | relevance · price_asc · price_desc · newest. Neplatná hodnota → relevance. |
brand | string | — | Explicitný filter značky (max 255 znakov). |
category | string | — | Explicitný filter kategórie / cesty (max 255 znakov). |
params | string | — | Vybrané parametre "Skupina: hodnota" oddelené znakom | (nie čiarkou — hodnoty smú obsahovať čiarku). Max 5 položiek. |
pref_b | string | — | Preferované značky pre personalizáciu, oddelené čiarkou. Max 3. |
pref_c | string | — | Preferované kategórie pre personalizáciu, oddelené čiarkou. Max 2. |
nlp | 0 / 1 | 1 | nlp=0 vypne rozumenie dopytu (detekciu cien a značky). |
curl "https://app.shopium.sk/api/search?token=VÁŠ_APP_TOKEN&q=tenisky+adidas&limit=8&sort=price_asc" \
-H "Origin: https://vas-eshop.sk"
{
"query": "tenisky adidas",
"query_effective": "tenisky",
"total": 3,
"processingTimeMs": 2,
"offset": 0,
"sort": "price_asc",
"applied_params": [],
"applied_filters": { "brand": null, "category": null },
"detected_filters": { "price_min": null, "price_max": null, "brand": "Adidas" },
"personalized": false,
"relaxed_query": null,
"suggestions": ["tenisky", "tenisky panske"],
"hits": [
{
"identity": "AD990B",
"title": "Bežecké tenisky Adidas Ultraboost",
"title_highlighted": "Bežecké tenisky Adidas Ultraboost",
"web_url": "https://vas-eshop.sk/3310-...",
"price": "149 EUR",
"price_amount": 149.0,
"price_old": "179 EUR",
"price_old_amount": 179.0,
"image_link_m": "https://vas-eshop.sk/img/200/3310.png",
"brand": "Adidas",
"availability": 1,
"availability_rank_text": "Skladom / expedícia ihneď",
"category_paths": ["Obuv > Muži > Bežecká obuv"]
}
],
"facets": {
"categories": [ { "value": "Obuv > Muži > Bežecká obuv", "count": 3 } ],
"brands": [ { "value": "Adidas", "count": 3 } ],
"params": [
{
"group": "Veľkosť",
"values": [ { "value": "42", "count": 2 } ]
}
]
}
}
Pole title_highlighted ohraničuje zvýraznenú zhodu neviditeľnými riadiacimi znakmi (U+E000 / U+E001) — spracuj ich čisto ako hranicu štýlu, nikdy nie ako HTML. Widget to robí za teba.
| Kód | Telo error | Význam |
|---|---|---|
| 200 | — | OK. Aj neexistujúci index vráti 200 s prázdnym hits. |
| 401 | invalid_token | Token chýba alebo neexistuje. |
| 403 | domain_not_allowed | Doména (Origin/Referer) nie je na whiteliste projektu. |
| 422 | missing_query | Prázdny dopyt q. |
| 429 | plan_limit_exceeded | Vyčerpaný mesačný limit vyhľadávaní plánu. |
| 503 | search_unavailable | Vyhľadávací server je dočasne nedostupný. |
Zaznamená klik na produkt z výsledkov (pre CTR a atribúciu konverzií). Rovnaká autentifikácia ako /api/search. Vždy vráti 204 No Content.
| Parameter | Popis |
|---|---|
token | Verejný app token (povinné). |
id | identity kliknutého produktu (max 100 znakov). |
q | Kontext dopytu, pri ktorom klik nastal. |
curl "https://app.shopium.sk/api/track?token=VÁŠ_APP_TOKEN&id=AD990B&q=tenisky" \
-H "Origin: https://vas-eshop.sk" # → 204
Nahlási konverziu (dokončenú objednávku). Prijíma telo ako application/x-www-form-urlencoded alebo ako text/plain s JSON objektom (to posiela widget cez sendBeacon). Token môže byť v tele aj v query. Idempotencia je zaručená cez order_id (rovnaká objednávka sa nezapočíta dvakrát).
| Pole | Typ | Popis |
|---|---|---|
token | string | Verejný app token (povinné). |
value | number | Hodnota objednávky > 0, max 10 000 000. Toleruje čiarku aj bodku. Inak 422. |
currency | string | 3-znakový kód meny. Default = mena projektu. |
order_id | string | Identifikátor objednávky (max 64) — idempotencia. |
identity | string | Produkt z atribúcie (max 100). |
query | string | Dopyt z atribúcie (max 255). |
clicked_seconds_ago | int | Koľko sekúnd pred konverziou nastal klik. |
curl -X POST "https://app.shopium.sk/api/convert" \
-H "Origin: https://vas-eshop.sk" \
-d "token=VÁŠ_APP_TOKEN&value=129.90&order_id=OBJ-2026-0042¤cy=EUR"
# → 204 (aj pri opakovaní tej istej objednávky)
Odpovede: 204 úspech / idempotentný duplikát · 401 invalid_token · 403 domain_not_allowed · 422 invalid_value (neplatná suma).
Odporúčania pre widget. Režim sa určuje z parametrov, autentifikácia je zhodná so /api/search. Odpoveď má tvar { "type": "...", "hits": [...] } (hity v rovnakom tvare ako search).
| Parameter | Režim | Popis |
|---|---|---|
id | similar | identity produktu — podobné produkty. Neexistujúci produkt → 404 product_not_found. |
pref_b / pref_c | personalized | Preferované značky (max 3) / kategórie (max 2) — personalizované odporúčania. |
| — | popular | Bez parametrov → najpopulárnejšie / najboostnutejšie produkty. |
limit | všetky | Počet položiek. Oreže sa do rozsahu 1–24 (default 8). |
curl "https://app.shopium.sk/api/recommend?token=VÁŠ_APP_TOKEN&id=AD990B&limit=8" \
-H "Origin: https://vas-eshop.sk"
Verejné endpointy sa volajú z prehliadača na cudzej doméne. Server preto overuje pôvod požiadavky:
Access-Control-Allow-Origin odzrkadlí iba konkrétny povolený Origin — server nikdy nevracia *.vas-eshop.sk aj www.vas-eshop.sk sú z pohľadu whitelistu rôzne hostname. Chýbajúci variant je najčastejšia príčina chyby 403 domain_not_allowed.
Server-to-server REST API na https://app.shopium.sk/api/v1 pre automatizáciu importu a čítanie štatistík (napr. z cronu e-shopu). Autentifikuje sa tajným kľúčom v hlavičke Authorization, bez CORS.
Authorization: Bearer fnd_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
data-token) je verejný — patrí do HTML e-shopu. Tajný API kľúč s prefixom fnd_sk_ vygeneruješ v dashboarde (API Token) a nikdy ho nevkladaj do prehliadača ani do klientskeho kódu — dáva plný prístup k importu a dátam projektu.
invalid_api_key.
Naimportuje produkty. Telo požiadavky je priamo JSON feed { "items": [...] } (rovnaký formát ako web upload).
curl -X POST "https://app.shopium.sk/api/v1/import" \
-H "Authorization: Bearer fnd_sk_..." \
-H "Content-Type: application/json" \
--data-binary @feed.json
// 200 OK
{ "total": 120, "imported": 118, "failed": 2, "errors": ["Položka #7: chýba povinné pole 'web_url'."] }
Chyby: 422 invalid_feed (nevalidný JSON / chýba items) · 422 plan_limit_exceeded (nad limit produktov plánu) · 503 import_failed.
Prehľad stavu účtu — počet produktov v indexe, posledný import, domény a počet hľadaní za 30 dní.
curl "https://app.shopium.sk/api/v1/status" -H "Authorization: Bearer fnd_sk_..."
{
"products": 118,
"last_import": { "at": "2026-07-11T04:00:03+00:00", "imported": 118, "failed": 2 },
"domains": ["vas-eshop.sk", "www.vas-eshop.sk"],
"searches_30d": 5231
}
Súhrn vyhľadávania za obdobie. Parameter days (rozsah 1–90, default 30).
curl "https://app.shopium.sk/api/v1/stats/summary?days=30" -H "Authorization: Bearer fnd_sk_..."
{ "period_days": 30, "searches": 5231, "clicks": 1876, "ctr": 35.9, "no_results_pct": 4.2 }
Najčastejšie dopyty. Parametre days (1–90, default 30) a limit (rozsah 1–100, default 20).
curl "https://app.shopium.sk/api/v1/stats/top-queries?days=30&limit=20" \
-H "Authorization: Bearer fnd_sk_..."
{
"period_days": 30,
"items": [
{ "query": "tenisky", "count": 312, "avg_results": 18, "clicks": 140, "ctr": 44.9 }
]
}
Dopyty bez výsledkov — najlepší zdroj námetov na synonymá a chýbajúce produkty. Parametre days (1–90, default 30) a limit (1–100, default 20).
curl "https://app.shopium.sk/api/v1/stats/no-results?days=30&limit=20" \
-H "Authorization: Bearer fnd_sk_..."
{
"period_days": 30,
"items": [ { "query": "sluchadla sony", "count": 27 } ]
}
Jeden účet môže mať viac projektov — každý je samostatný e-shop / jazyk / mena s vlastným izolovaným indexom, tokenom a whitelistom domén. Dáta sa medzi projektmi nikdy nemiešajú.
EUR → €, eur, euro, eura; CZK → kč, czk, korun, koruny. Je to zároveň predvolená mena konverzií.Findio spája synonymá z troch zdrojov, aby zákazník našiel produkt aj pod iným pomenovaním:
Findio rozpozná v dopyte cenové obmedzenie a značku, „očistí" od nich text a zvyšok použije ako vyhľadávaný výraz. Detekcia je necitlivá na veľkosť písmen aj diakritiku. Podporované cenové vzory (mena podľa projektu):
| Typ | Vzory | Príklad |
|---|---|---|
| Rozsah | od X do Y, medzi X a Y (mena voliteľná), X – Y mena (mena povinná) | od 50 do 100 € |
| Horná hranica | do / pod / max / najviac X mena, lacnejšie ako X mena | mobil do 300 eur |
| Dolná hranica | nad / min X mena, od X mena, drahšie ako X mena | notebook nad 800 eur |
Pri projekte s menou CZK funguje rovnako s korunami, napr. pod 500 kč. Cena musí byť kladná a najviac 1 000 000; ak je dolná hranica vyššia než horná, detekcia ceny sa zahodí. Značka sa deteguje ako jedno alebo dvojslovný názov zo zoznamu značiek v indexe (vyhráva najdlhšia zhoda).
relaxed_query.Findio meria dopyty, kliky (CTR), podiel dopytov bez výsledkov a konverzie. Konverzia sa atribuuje vyhľadávaniu, ak niesla kontext posledného kliku (produkt alebo dopyt) v okne 24 hodín. Vďaka tomu vidíš nielen aktivitu, ale aj tržby, ktoré vyhľadávanie reálne prinieslo. Dáta sú v dashboarde aj cez Management API.
Limity vynucuje systém podľa plánu účtu. Nový účet štartuje na pláne Beta.
| Plán | Cena / mesiac | Max. produktov | Vyhľadávaní / mesiac |
|---|---|---|---|
| Beta východzí | Zadarmo@else0 € | 10 000 | 100 000 |
| Štandard | 50 000 | 500 000 | |
| Business | 250 000 | 2 000 000 |
Aktuálne využitie svojho plánu vidíš v dashboarde v sekcii Môj plán a využitie.
401 invalid_tokenToken chýba alebo neexistuje. Skontroluj, či data-token (resp. parameter token) presne zodpovedá tokenu z dashboardu (API Token) a či nebol medzitým pregenerovaný.
403 domain_not_allowedDoména stránky nie je na whiteliste. Najčastejšia príčina: chýba www variant (alebo naopak). Pridaj v sekcii Domény obe podoby — vas-eshop.sk aj www.vas-eshop.sk. Overuje sa hostname z hlavičky Origin/Referer.
422 — neplatný vstupSearch: prázdny dopyt (missing_query). Convert: neplatná suma (invalid_value — musí byť > 0). Import: nevalidný JSON alebo chýbajúce pole items (invalid_feed).
429 plan_limit_exceededVyčerpaný mesačný limit vyhľadávaní tvojho plánu. Limit sa obnoví na začiatku kalendárneho mesiaca; medzitým je možné prejsť na vyšší plán. (Pozor, nezamieňaj s technickým rate limitom 120 požiadaviek/min.)
Skontroluj, či prebehol import (v Import alebo cez /api/v1/status pole products). Ak zákazníci hľadajú výraz, ktorý nemáš v názvoch, pridaj synonymum. Inšpiráciu nájdeš v štatistike dopyty bez výsledkov.
Cieľový element z data-target musí v čase spustenia existovať v DOM — over CSS selektor a to, že element je v stránke. Používaj defer. V konzole prehliadača widget vypíše konkrétny dôvod (chýbajúci token/target, neplatný selektor, nenájdený cieľ).
Konverzný snippet (režim conversion) alebo volanie window.Findio.trackConversion musí byť na ďakovacej stránke po dokončení objednávky. Atribúcia k vyhľadávaniu funguje len v okne 24 hodín od posledného kliku. Idempotencia cez order_id zabráni dvojitému započítaniu — rovnaká objednávka sa zaráta raz.
Nenašiel si odpoveď? Vytvor si účet a vyskúšaj Findio na svojom katalógu.
Registrácia zdarma Späť na web