Menu
Repræsentativ købsopgave

Prøv ét produkt. Se hvert ærligt svar.

Se butikker i nærheden for dette produkt. Sammenlign derefter de otte widgets og prøv værktøjet.

Hvor du kan købe

Purus Corner Linear Drain nær Stockholm

Bygget widgetpakke

Indlæser den publicerede indlejring fra cdn.test.stockisto.com…

Dette eksempel viser butikker i nærheden for eksempelproduktet.

Din egen indgang

Lad det sidste klik lande hos dig

En kunde, der leder efter dit produkt, bør lande et sted, du selv styrer. Det er dit eget websted: „hvor kan man købe”-siden eller produktsiderne, du allerede driver. Stockisto vises der under dit brand.

yourbrand.example/where-to-buy
Bag hver indlejring

Én pakke, én renderer, én kontrakt.

Alle kort ovenfor bygger på samme script, der læser forskellige attributter. Forhandlerens egne data afgør, hvad en række viser. Tagget afgør, hvordan indlejringen ser ud og opfører sig.

Forhandlerstigen

Fem trin, fra offentlig profil til reservation og afhentning.

En række viser kun det, som forhandlerens data giver belæg for. Hvert trin giver kunden en tydeligere vej videre og motiverer forhandleren til at holde sine oplysninger ajour.

  1. 01OpførtNavn, adresse og offentliggjorte åbningstider fra offentlige data. En ubekræftet lageroplysning mærkes som rapporteret og får den neutrale farve, aldrig den grønne farve for bekræftet lagerstatus.Offentlige data
  2. 02Kan nåsEt link til webstedet, når butikken har offentliggjort et, en ringeknap, når telefonnummeret kan bruges, og rutevejledning, når profilen har rigtige koordinater. Hver knap vises kun, når den tilsvarende oplysning findes.Telefon eller hjemmeside
  3. 03Bekræftet lagerEn butik, der sender sit eget lagerfeed, får markeringen for bekræftet lagerstatus og en linje med datoen for den seneste rapport. De rækker rangerer foran ubekræftede oplysninger.Et lagerfeed
  4. 04PrisPå forhandlerens egne produktsider kan rækken vise butikkens pris. Serveren sender kun prisen, når butikken har offentliggjort den, og oplysningen er under en måned gammel.En offentliggjort pris
  5. 05ReservérVisningen til reservation og afhentning lader kunden gennemføre en reservation fra en række med bekræftet lagerstatus uden at forlade siden. Rækken viser først »Reserveret«, når anmodningen er lykkedes.Reservation aktiveret

Bekræftet lagerstatus og afstand afgør rækkefølgen. Placering sælges aldrig. Hvert tryk på Besøg, Ring eller Rutevejledning registreres som et udgående klik, men kun når dit samtykkeværktøj har slået statistik til. Indtil da sender indlejringen ingen hændelser.

Temaer

Et tema er attributter, ikke en særskilt kodegren

De fem navngivne forvalg og værdierne nedenfor læses fra script-tagget. Alle udtryk på siden bruger samme pakke og renderer, så temaet kræver hverken en særskilt version eller et særskilt build.

  • heritageStandardvalget. Varm papirfarve, skovgrøn accent og blød skygge. Det bruges af alle indlejringer på denne side.
  • lightNeutral grå og hvid til værtssider, hvor den varme papirfarve støder sammen med designet.
  • darkVarme, mørke flader til mørke værtssider, uden glød og med en flad kant.
  • minimalHvid uden ekstra rammedele: små hjørneradier, tynde kanter og ingen skygge. Tekstfarven arves fra din side.
  • denseHeritage-farver med kompakt tekst og mindre luft til sidepaneler og sidefødder.
De tokens, den læser
data-theme-preset="dark"
En af de fem ovenstående. Alt andet falder tilbage til Heritage.
data-theme="#C06B4A"
Din accent, som en 3- eller 6-cifret hex.
data-radius-scale="sm"
Hjørneradius: sm, md eller lg.
data-density="compact"
Rækkerytme: hyggelig eller kompakt.
data-shadow="flat"
Skygge: soft, flat eller none.
data-font="serif"
Type: grotesk, sans, serif, mono eller system. Navngivet, aldrig uploadet, så indlejringen bruger en stak, siden allerede har.
Hvem redigerer detDen, der har ansvaret for tagget. Byggeværktøjet i dit kontrolpanel forhåndsviser værdierne og skriver dem i kodestykket. Derefter styrer taggets attributter temaet, så du kan ændre en placering uden at udrulle indlejringen igen.
Kontrast kontrolleres ved gengivelseEn accentfarve, der ikke når kontrasten 4,5:1 mod sin baggrund, afvises, og widgetten bruger sin egen accent i stedet. Kontrollen foretages ved hver sidevisning. Farver for lagerstatus og oplysningernes alder påvirkes ikke af temaet, så intet forvalg kan ændre farven på en lagerpåstand.
Hver indlejring bærer sin egenIndlejringen på en brandside og den på en butiks eget websted har separate tags og attributter, men bruger samme data. Derfor kan butikssiden beholde sit eget udtryk.
Tre lag af konfiguration

Skrives én gang i tagget. Læses ved hver gengivelse.

  1. 01Dit dashboard skriver taggetWidgetbyggeren forhåndsviser indstillingerne, opretter script-tagget og gemmer de varianter, du vil genbruge. Ved gengivelse hentes ingen indstillinger fra din konto. Indlejringen følger det, der står i tagget, så den fortsætter med at fungere på en side, der ikke er ændret længe.
  2. 02Tagget konfigurerer placeringendata-widget-type vælger widget, data-view vælger en visning for Hvor kan man købe, og data-map-height angiver højden på en indrammet butikssøgning. Temaattributterne styrer resten. Attributter, som parseren ikke genkender, ignoreres i stedet for at blive gættet.
  3. 03Rækken tjener restenForhandlerens egne data, ikke tagget, afgør, hvad en enkelt række viser. Trinnene ovenfor er hele modellen. Du kan ikke slå en pris til for en butik, der ikke offentliggør en, og indlejringen finder ikke på en.
Forberedt til implementering

Hvad dine udviklere accepterer

Alt ovenfor gengives fra script-tagget øverst på siden. Adfærden bag det kontrolleres enten af et buildtrin eller af en test i kodebasen.

Et tag
Ét asynkront script pr. placering og intet buildtrin. Widgetten gengives i sin egen shadow root, når browseren understøtter det, så værtssidens CSS og indlejringens typografi holdes adskilt. Hjørneknappen og reservationsbekræftelsen monteres på body-niveau.
Vægten styres af en grænse, ikke et løfte
Den publicerede pakke måles ved hvert build, og buildet fejler, hvis pakken overskrider sit registrerede loft. Grænsen står i widgettens egen budgetfil, ikke i denne tekst, så siden kan ikke angive et forældet tal.
Intet indlæses tidligt
Tagget er asynkront, og dataanmodningen venter, indtil indlejringen nærmer sig den synlige del af siden. Kort- og montørvisningerne ligger i iframes, så deres kortfelter belaster den indrammede side og ikke din produktside.
Privatlivsstandarder
Ingen cookies. Statistik er slået fra, indtil data-analytics-consent er true. Indtil da sender indlejringen ingen hændelser. Den skriver kun én sessionStorage-nøgle, som forhindrer tilbagenavigation i at tælle samme resultat to gange.
Tastatur og kontrast
Rækker, skifteknapper og udvidelser er rigtige knapper, så Enter, mellemrum og fokusring fungerer via platformen. Dialoger tager fokus, fastholder Tab-fokus, lukker med Escape og afleverer fokus igen. Tekstparrene i hvert forvalg testes mod WCAG AA. Forvalget, der arver sidens tekstfarve, oplyser det og angiver ingen ukendt kontrast.
Når tingene fejler
Et blokeret eller svigtende script gengiver intet og påvirker ikke siden. Et langsomt API viser en skeletvisning. Et API, der ikke svarer, viser en indlæsningsfejl med mulighed for at prøve igen, aldrig et forkert tomt resultat. Et forkert konfigureret tag logger den manglende attribut og sætter et mærke til overvågning uden at vise noget defekt for kunden.
Testområde

Tilpas den, og kopiér så tagget

Vælg visning, temaforvalg, accentfarve og layoutværdier. Forhåndsvisningen gengives igen, og kodestumpen opdateres, mens du ændrer. Hver attribut, du ser, bliver fortolket af den publicerede indlejring.

widgettens standard (#1E5E45)

Værdier uden for listen afvises sikkert i widgetten. Et ukendt forvalg eller en farve, der ikke er hexadecimal, falder tilbage på Heritage. En tastefejl kan ikke ødelægge produktsiden.

Indlæser den publicerede indlejring fra cdn.test.stockisto.com…

<script
  src="https://cdn.test.stockisto.com/widget.js"
  data-stockisto-widget="true"
  data-stockisto-slug="demo-purus"
  data-api-base="https://api.test.stockisto.com"
  data-widget-type="where-to-buy"
  data-lat="59.3293"
  data-lng="18.0686"
  data-radius="50"
  data-supplier-name="Purus"
  data-jsonld="off"
  data-analytics-consent="false"
  async
></script>

data-analytics-consent er "false" i alle genererede kodestykker. Sæt det først til "true", når samtykkeværktøjet (CMP) har registreret kundens samtykke.

Besværlige værtssider

Bygget til sider, der gør modstand

Rigtige værtssider kan have aggressiv CSS, strenge sikkerhedspolitikker og defekte miljøer. Tre af disse forhold kan køres her. Resten køres som automatiske test mod syntetiske, besværlige værtssider i CI og mod det udrullede miljø. Intet i dette afsnit er en påstand uden en test bag.

Fjendtlig: tom CSS

Containerens stylesheet angiver div:empty { display:none !important }, en regel som kan skjule enkle indlejringer, før de indlæses. Widgettens monteringsfelt indeholder en skjult markør, så det aldrig matcher :empty og gengives alligevel.

Indlæser den publicerede indlejring fra cdn.test.stockisto.com…

Fejlkonfigureret med vilje

Denne indlejring mangler en datakilde: ingen brand-slug, intet leverandør-id og ingen forhandler. Se, hvad widgetten gør, og hvad den nægter at gøre.

Indlæser den publicerede indlejring fra cdn.test.stockisto.com…

Åbn browserkonsollen. Widgetten loggede præcis, hvilken attribut der mangler. Konsolfejlen er tilsigtet og den eneste korrekte bivirkning af en forkert konfigureret indlejring.

320px kolonne

Den samme publicerede indlejring begrænses til en 320 px bred kolonne, det smalleste almindelige felt i et sidepanel eller på mobil. Intet vandret overløb og ingen beskårne handlinger.

Indlæser den publicerede indlejring fra cdn.test.stockisto.com…

Oversigt over testede forhold

Hver række svarer til automatiske test, der findes i kodebasen i dag: enhedsbeskyttelse ved hvert push og browsertest mod syntetiske, besværlige værtssider. Tabellen viser den dækning og drager ingen konklusioner ud over den.

ForholdHvad indlejringen garantererDokumentation
Værtsside med streng CSP: default-src 'none'; kun CDN-scriptet og API-forbindelsen er tilladtStarter og gengiver uden afhængighed af inline-script eller eval og uden sidefejl.Udrullet e2e (widget-hostile-host-matrix) + oversigt i rigtig browser (tests/e2e/widget-host)
Side med almindelig HTTP (usikker kontekst, ingen crypto.randomUUID)Starter uden sidefejl. Widget-id'er falder tilbage på en beskyttet UUID-reservevej.Udrullet e2e (widget-hostile-host-matrix) + beskyttelse af opstart i enhedstestene (packages/widget)
Værtsside uden krypto: window.crypto mangler, eller randomUUID er fjernetStarter med et v4-widget-id, der følger specifikationen. En kastet TypeError stopper ikke indlejringen.Enhedstesten for besværlige værter (packages/widget hostile-host-boot) ved hvert push + udrullet e2e
Besværlig CSS på værtssiden: div:empty { display:none } på hele sidenMonteringsfeltet beholder sin plads i layoutet med en skjult markør og er aldrig :empty. Doven indlæsning udløses stadig, og widgetten gengives.Udrullet e2e (widget-host-css-deadlock, widget-hostile-host-matrix) + livedemoen ovenfor
Langsomt eller svigtende API: 503, afvist netværksforbindelse, 8 sekunders forsinkelse eller helt blokeret domæneEn tydelig og retvisende tilstand med »kunne ikke indlæse, prøv igen« og manuel gentagelse. Aldrig et forkert »ingen forhandlere« eller et tomt felt uden forklaring.Enhedsdækning af gengivelsesfejl (packages/widget render-failure) ved hvert push
Værtsside hos en tredjepart: indlejringen kører på et domæne, der ikke tilhører StockistoAlle dataanmodninger er anonyme API-kald med åben CORS-understøttelse, uden cookies eller antagelser om samme oprindelse.Alle specifikationer for udrullede widgets køres på syntetiske tredjepartsdomæner (*.stockisto-e2e.example)
Datakilde mangler: ingen brand-slug, intet leverandør-id eller intet sæt af forhandlereNægter at starte. En konsolfejl angiver attributten, og mærket data-stockisto-error sættes til overvågning. Intet defekt gengives for de besøgende.Enhedstesten for manglende datakilde (packages/widget missing-data-source-boot) ved hvert push + livedemoen ovenfor
Publicering

Ingen udviklersprint nødvendig.

01

Indsæt ét tag

Ét script-tag pr. side. Intet byggetrin, ingen pakke at installere og ingen iframe, der skal tilpasses manuelt.

02

Den passer til siden, den står på

Bredde, rækkehøjde og præsentation styres med attributter. Integrerede visninger og fanevisninger bliver på siden, så søgemaskiner kan læse dem.

03

Den siger kun det, den kan dokumentere

Lagerstatus, som vi ikke kan bekræfte, markeres og fremhæves aldrig. Når der ikke er noget at vise, siger indlejringen det uden at vise et nul.

04

Forhandlerne bevæger sig opad

Lagerfeed, priser, købslink, overførsel til indkøbskurv, reservation. Hvert trin, en forhandler opnår, giver kunderne en stærkere række, så det betaler sig at holde data retvisende.

Se den med dit eget katalog.

Importér dit forhandlernetværk, indsæt ét tag, og se, hvilke butikker kunderne vælger.

cebf50c · 2026-10-05 22:57