Meny
Representativ kjøpsoppgave

Prøv ett produkt. Se hvert ærlige svar.

Sjekk butikker i nærheten for dette produktet. Sammenlign deretter de åtte widgetene og prøv verktøyet.

Hvor du kan kjøpe

Purus Corner Linear Drain nær Stockholm

Bygget widgetpakke

Laster inn den aktive innbyggingen fra cdn.test.stockisto.com…

Dette eksemplet viser butikker i nærheten for eksempelproduktet.

Din egen inngang

La det siste klikket lande hos deg

En kunde som leter etter produktet ditt, bør lande et sted du kontrollerer. Det er ditt eget nettsted: «hvor kjøpe»-siden eller produktsidene du allerede driver. Stockisto vises der under merkevaren din.

yourbrand.example/where-to-buy
Bak hver innbygging

Én pakke, én gjengiver, én kontrakt.

Alle kortene ovenfor er det samme skriptet som leser ulike attributter. Hva en rad viser, bestemmes av forhandlerens egne data. Hvordan innbyggingen ser ut og oppfører seg, bestemmes av taggen.

Forhandlerstigen

Fem trinn, fra offentlig oppføring til reservasjon og henting.

En rad viser bare hva forhandleren har tjent. Hvert trinn legger til en sterkere handling, og å ønske den sterkere handlingen er det som holder en forhandlers data oppdatert.

  1. 01OppførtNavn, adresse og publiserte åpningstider fra offentlige data. En lagerrapport ingen har gått god for er merket som en rapport og bærer den nøytrale oppførte fargen, aldri den selvsikre grønne.Offentlige data
  2. 02Kan nåsEn besøkskobling der butikken publiserte et nettsted, en anropskobling der nummeret kan ringes opp, og veibeskrivelser der oppføringen har reelle koordinater. Hver kontroll vises bare når det finnes et eget felt.Telefon eller nettside
  3. 03Bekreftet lagerstatusEn butikk som sender inn egen lagerstatus, får et bekreftet signal og en ferskhetslinje datert fra siste rapport. Disse radene rangeres over alt som ikke er bekreftet.En lagerfeed
  4. 04PrisPå forhandlerens egne produktsider kan raden vise butikkens pris. Serveren sender den bare når butikken publiserer en pris som er under én måned gammel, slik at radene ikke viser utdaterte priser.En publisert pris
  5. 05ReservasjonReserver-og-hent-visningen gjør bekreftede rader til en reservasjon kunden fullfører uten å forlate siden. Raden viser «Reservert» først etter at reservasjonsforespørselen faktisk er gjennomført.Reservasjon aktivert

Bekreftet lager og avstand bestemmer bestillingen; plassering selges aldri. Hvert trykk på besøk, anrop og veibeskrivelse registreres som ett klikk, og bare når samtykkeverktøyet ditt har slått på analyse: før det sender innbyggingen ingenting i det hele tatt.

Temaer

Et tema er attributter, ikke en egen forgrening

Fem navngitte forhåndsinnstillinger og attributtene nedenfor leses alle fra skripttaggen. Én pakke og én gjengiver står bak alle uttrykkene på denne siden, så et tema krever verken et eget bygg eller en egen versjon som må holdes oppdatert.

  • heritageStandardvalget. Varm papirfarge, skogsgrønn aksent og myk skygge. Alle innbyggingene på denne siden bruker dette temaet.
  • lightNøytral grå og hvit for vertssider der den varme papirfargen skurrer.
  • darkVarme, mørke flater for mørke vertssider, uten glød og med en flat kant.
  • minimalHvit uten rammeelementer: små hjørner, hårtynne kanter og ingen skygge. Tekstfargen arves fra siden din, det eneste dette forvalget overlater til vertssiden.
  • denseHeritage-farger med kompakt skrift og avstand for sidefelt og bunntekst.
Attributtene den leser
data-theme-preset="dark"
En av de fem over. Alt annet faller tilbake til Heritage.
data-theme="#C06B4A"
Aksentfargen din som en 3- eller 6-sifret heksadesimal kode.
data-radius-scale="sm"
Hjørneskala: sm, md eller lg.
data-density="compact"
Radavstand: romslig eller kompakt.
data-shadow="flat"
Skygge: myk, flat eller ingen.
data-font="serif"
Skrift: grotesk, sans, serif, mono eller system. Den navngis, men lastes aldri opp, så innbyggingen bruker en skriftstabel siden allerede har.
Hvem redigerer denDen som eier taggen. Byggeren i dashbordet forhåndsviser attributtene og skriver dem inn i kodesnutten du limer inn. Deretter ligger temaet i taggen: endre en plassering ved å redigere attributtene, ikke ved å rulle ut innbyggingen på nytt.
Kontrasten kontrolleres ved gjengivelseEn aksentfarge som ikke oppnår kontrastforholdet 4,5:1 mot flaten den står på, avvises, og widgeten bruker sin egen aksent i stedet. Sjekken skjer ved hver sidevisning, ikke bare når du lagrer, så en merkevarefarge kan ikke gjøre en rad uleselig i det stille. Fargene for lagerstatus og ferskhet kan ikke tematiseres: ingen aksent eller forhåndsinnstilling kan endre fargen på en lagerpåstand.
Hver innbygging har sitt eget temaEn merkesides innebygging og en butikks innebygging på sitt eget nettsted er separate tagger med separate attributter over de samme dataene, slik at en butikkside forblir en butikkside.
Tre lag med konfigurasjon

Skrives én gang i taggen. Leses ved hver gjengivelse.

  1. 01Dashbordet ditt skriver taggenWidgetbyggeren forhåndsviser en konfigurasjon, lager skripttaggen og lagrer konfigurasjonene du vil gå tilbake til. Ingen konfigurasjon hentes fra kontoen din under gjengivelsen: innbyggingen gjør det taggen beskriver. Derfor fortsetter taggen også å fungere på en side ingen har rørt på et år.
  2. 02Taggen konfigurerer plasseringendata-widget-type velger widgeten, data-view velger en visning for Hvor å kjøpe, data-map-height setter høyden på et innrammet butikksøk, og temaattributtene bestemmer resten. Attributter som parseren ikke kjenner igjen, ignoreres i stedet for å bli tolket ved gjetting.
  3. 03Raden gjør seg fortjent til restenDet forhandlerens egne data inneholder, ikke taggen, avgjør hva en rad viser. Trinnene ovenfor er hele modellen. Du kan ikke slå på en pris for en butikk som ikke publiserer en, og innbyggingen finner ikke opp en.
Forberedt for implementering

Dette forholder utviklerne dine seg til

Alt ovenfor gjengis fra den ene skripttaggen øverst på siden. Dette er virkemåten bak, og hvert punkt håndheves enten av en byggesjekk eller dekkes av en test i kodebasen.

Én tagg
Ett asynkront skript per plassering, uten byggetrinn. Widgeten gjengis i sin egen shadow root når nettleseren støtter det, slik at CSS fra vertssiden og innbyggingen ikke påvirker hverandre. Hjørneknappen og reservasjonsmeldingen monteres på body-nivå.
Størrelsen er en byggesjekk, ikke et løfte
Den publiserte pakken måles ved hvert bygg, og bygget feiler hvis størrelsen overstiger det registrerte taket. Tallet står i widgetens egen budsjettfil, ikke i denne teksten, så siden kan ikke komme i utakt med grensen.
Ingenting laster tidlig
Taggen er asynkron, og dataforespørselen venter til innbyggingen nærmer seg visningsområdet. De innrammede kart- og montørdelene er iframes, så kartflisene belaster den innrammede siden og ikke produktsiden din.
Personvern som standard
Ingen informasjonskapsler. Analyse er slått av til data-analytics-consent er true, og før det sender innbyggingen ingen hendelser. Den skriver bare én sessionStorage-nøkkel, som hindrer at tilbake-navigering teller samme resultat to ganger.
Tastatur og kontrast
Rader, brytere og utvidere er ekte knapper, så Enter, mellomromstasten og fokusringen håndteres av plattformen. Dialoger tar fokus, holder Tab-fokus inne, lukkes med Escape og gir fokuset tilbake. Tekstparene i hvert forvalg testes mot WCAG AA i widgetens testsuite. Forvalget som arver sidens tekstfarge, registrerer dette i stedet for å hevde et kontrastforhold det ikke kan kjenne.
Når ting feiler
Et blokkert eller mislykket skript gjengir ingenting og lar siden være uskadd. Et tregt API viser en skjelettvisning. Et utilgjengelig API opplyser at innlastingen mislyktes og tilbyr et nytt forsøk, aldri en uriktig tomtilstand. En feilkonfigurert tagg logger det manglende attributtet og setter et merke overvåkingen kan finne, men viser fortsatt ingenting ødelagt til kundene.
Lekeplass

Gjør den til din, og kopier deretter taggen

Velg en modus, et temaforvalg, aksentfarge og oppsettsegenskaper. Den aktive forhåndsvisningen gjengis på nytt, og kodesnutten oppdateres underveis. Hvert attributt du ser, blir faktisk lest av den publiserte innbyggingen.

widget standard (#1E5E45)

Verdier utenfor listen avvises trygt i widgeten. Et ukjent forvalg eller en ugyldig heksadesimal farge faller tilbake til Heritage-standarden, slik at en skrivefeil ikke kan ødelegge produktsiden.

Laster inn den aktive innbyggingen 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 forblir "false" i hver genererte kodesnutt. Sett den til "true" først etter at samtykkeverktøyet (CMP) har registrert kundens samtykke.

Krevende vertssider

Bygget for sider som kjemper imot

Ekte vertssider leveres med aggressiv CSS, strenge sikkerhetsregler og ødelagte miljøer. Tre av disse forholdene kan kjøres direkte her. Resten kjøres som automatiserte tester mot syntetiske, krevende vertssider i CI og mot det utrullede miljøet. Ingen påstand i denne delen mangler en test som underbygger den.

Fiendtlig: tom CSS

Stilarket til denne beholderen angir div:empty { display:none !important }, en regel som i det stille stopper enkle innbygginger før de lastes. Widgetens monteringspunkt inneholder en skjult markør, så det samsvarer aldri med :empty og gjengis likevel.

Laster inn den aktive innbyggingen fra cdn.test.stockisto.com…

Feilkonfigurert med vilje

Denne innbyggingen leveres UTEN datakilde: ingen merkevareslug, leverandør-ID eller forhandler. Se hva widgeten gjør med det, og hva den nekter å gjøre.

Laster inn den aktive innbyggingen fra cdn.test.stockisto.com…

Åpne nettleserkonsollen: widgeten logget det nøyaktige attributtet som mangler. Konsollfeilen kommer fra widgeten med hensikt. Det er den ene ærlige bivirkningen av en feilkonfigurert innbygging.

320px kolonne

Den samme aktive innbyggingen er begrenset til en kolonne på 320px, den smaleste vanlige plassen i sidefelt og på mobil. Ingen vannrett overflyt eller avkuttede handlinger.

Laster inn den aktive innbyggingen fra cdn.test.stockisto.com…

Matrise over testede forhold

Hver rad er knyttet til automatisert dekning som finnes i kodebasen vår i dag: enhetssjekker ved hver push og nettlesertester mot syntetiske, krevende vertssider. Tabellen rapporterer denne dekningen. Den trekker ingen slutninger utover dette.

ForholdHva innbyggingen garantererDokumentasjon
Vert med streng CSP: default-src 'none'; bare CDN-skriptet og API-tilkoblingen er tillattStarter og tegner uten avhengighet av innebygde skript eller eval. Ingen feil på siden.Utrullet e2e (widget-hostile-host-matrix) + matrise i ekte nettlesere (tests/e2e/widget-host)
Vanlig HTTP-side (usikker kontekst, ingen crypto.randomUUID)Starter uten feil på siden. Widget-ID-er faller tilbake på en beskyttet UUID-bane.Utrullet e2e (widget-hostile-host-matrix) + enhetsbasert startsjekk for alle innsendte endringer (packages/widget)
Vert uten krypto: window.crypto mangler eller randomUUID er fjernetStarter med en v4-widget-ID som følger spesifikasjonen. Ingen utløst TypeError stopper innbyggingen.Enhetsbasert startsjekk i CI (packages/widget hostile-host-boot) + utrullet e2e
Aggressiv CSS på vertssiden: div:empty { display:none } på hele sidenMonteringspunktet beholder en oppsettsboks (skjult markør, aldri :empty), utsatt innlasting utløses fortsatt, og widgeten tegnes.Utrullet e2e (widget-host-css-deadlock, widget-hostile-host-matrix) + direktedemonstrasjonen ovenfor
Tregt eller sviktende API: 503, avvist nettverkskall, 8 sekunders stopp eller blokkering av hele opprinnelsenEn egen, ærlig tilstand med «kunne ikke laste, prøv igjen» og manuell gjentakelse. Aldri en uriktig «ingen forhandlere», og aldri en stille, tom boks.Enhetsdekning for alle innsendte endringer (packages/widget render-failure)
Tredjepartsopprinnelse: innbyggingen kjører på et domene utenfor StockistoAlle datakall er anonyme API-forespørsler med åpen CORS. Ingen informasjonskapsler eller antakelser om samme opprinnelse.Alle utrullede widgetspesifikasjoner kjører på syntetiske tredjepartsopprinnelser (*.stockisto-e2e.example)
Manglende datakilde: ingen merkevareslug, leverandør-ID eller forhandlersettNekter å starte: en konsollfeil navngir attributtet, og et data-stockisto-error-stempel gjør overvåking mulig. Ingenting ødelagt vises til kunder.Enhetsbasert starttest i CI (packages/widget missing-data-source-boot) + direktedemonstrasjonen ovenfor
Klar for publisering

Ingen utviklersprint er nødvendig.

01

Lim inn én tagg

Én skripttagg per side. Ingen byggetrinn, ingen pakke å installere og ingen iframe du må tilpasse for hånd.

02

Den passer siden den står på

Bredde, radhøyde og presentasjon er attributter. Innebygde visninger og fanevisninger forblir på siden, slik at søkemotorer kan lese dem.

03

Den sier bare det den kan bevise

Lagerstatus vi ikke kan bekrefte, merkes og fremheves aldri. Når det ikke finnes noe å vise, sier innbyggingen fra og viser ikke null.

04

Forhandlerne klatrer på en stige

Lagerfeed, priser, kjøpslenke, overføring til handlekurv, reservasjon. Hvert trinn en forhandler gjør seg fortjent til, gir kundene en sterkere rad. Det lønner seg å holde dataene ærlige.

Se den i din egen katalog.

Importer forhandlernettverket ditt, lim inn én tagg og se hvilke butikker kundene velger.

cebf50c · 2026-10-05 22:57