Hvem: Mariusz Szatkowski, commerce-ingeniør med praktisk tyngde fra store WooCommerce-leveranser og produksjonsklare Shopify-miljøer der ytelse og integrasjoner dokumenteres like grundig som kundedialogen.
Hva: Storefront API-drevet headless inkludert Hydrogen og Remix-lignende lastefeil der det passer, ren Liquid-arkitektur, checkout-utvidelser som følger plattformens regler, ERP- og lagerkoblinger, plus redningsprosjekter der marketingpixels overdøver sidenes INP.
Hvor: Remote fra Gdynia til norske og nordiske merkevarer som må forholde seg til MVA, toll ved grensekunder og Bring-, PostNord- eller Instabox-realisme i leveringsløfter.
Pris:
- Temaombygging eller OS2-migrering: individuelt tilbud
- Headless eller Hydrogen-prosjekt: individuelt tilbud
- ERP eller mellomlagsintegrasjon: individuelt tilbud
- Redningsoppdrag og retainere: individuelt tilbud
- Kartleggingssamtale: gratis ved relevant volum og scope
Shopify-utvikler som bygger for nordiske kjøpsvaner og regulatoriske krav
Shopify gir hosted kjernelogikk og moderne betalingsspor som reduserer driftstrykket sammenlignet med selvbetjente PHP-stakkar. En erfaren Shopify-utvikler sørger for at Liquid ikke blir et virvar av snippets, at GraphQL-kall tåler kampanje-spiker, og at webhooks ikke sender dubletter til ERP-lageret når nettene er korte før jul.
Norske netthandlere konkurrerer med marketplace-er og kjedenes omnikanal. Shopify fungerer når katalog, lagersteder og prisregler er tydeligere enn markedsføringsteamets siste «quick win». Hvis bedriften fortsatt trenger dyp redaksjonell frihet, kobler vi ofte WordPress bevisst som innholdsarm, men vi dupliserer aldri produktsannhet i to kilder uten sync-kontrakt.
Hva Shopify løser godt, og hva som må tegnes tidlig
Shopify er en handelsmotor, ikke en generell CMS-obergrens. Styrken er sammenhengen mellom produkt, pris, frakt og betaling. Det faller fra hverandre når ERP-kunder forventer full debiteringslogikk i Liquid. Vi starter derfor med markeder, fraktprofiler, returer og app-krav. Shopify Markets blir bare nyttig når økonomi og logistikk har signert på samme tall som vises i checkout.
Nordiske forbrukere sammenligner pris og frakt raskt mot rene markedsplasser. Når checkout viser uventede gebyrer sent i flyten, stiger brudd, ikke bare irritasjon. Vi sikrer at frakt- og MVA-meldinger i Liquid og i policy-sider samsvarer med de faktiske reglene som ERP bruker i fakturagrunnlaget, slik at kundeservice slipper manuelle krediteringer i peak.
Tredjeparts script og markedsføring
Mange butikker legger inn flere tag-manager containere, CRO-verktøy og anmeldelseswidget parallelt. Hver nye ID i GTM utløser ofte nye lyttere som aldri fjernes. Vi gjennomfører en tag-opprydding med tydelig eierskap: hvem eier koden, hva er kvartalsvis review, og hvilke hendelser er faktisk i bruk. Målet er færre long tasks i hovedtråden, ikke flere «dashboards» ingen leser.
Personvern i EU/EØS betyr kontrollerbare dataflyter. Webhooks som sprer kundedata til CRM må kunne slettes og loggføres i tråd med deres behandlingsgrunnlag. Vi beskriver overleveringer slik at DPO-en vet hvilke felter som forlater Shopify-miljøet. Når kundeservice verktøy får PII, dokumenterer vi koblingen slik at slett-ønsker i henhold til personvernforordningen spores til alle nedstrøms kopier, ikke bare Shopify-admin.
Rollen til en Shopify-utvikler i et blandet team
Det er mer enn å «bytte tema». Typiske leveranser inkluderer:
- Metafelt og metaobjekter for tekniske tabeller, kompatibilitet og merking som tåler CSV-importer fra leverandør.
- OS2-seksjoner der merchandiser endrer layout uten å ødelegge LCP på kolleksjonssidene.
- Storefront API med robust paginering og feilhåndtering når Meta-annonser sender trafikk-topper.
- Admin API og fulfilment for delte sendinger, flere lager og karriereskifter med egne regler.
- App-gjennomgang som fjerner overlapp mellom anmeldelser, upsell og lojalitet som hver legger til JS.
- Observabilitet der du ser webhook-kø og ERP-diff før supporttelefonen gløder.
Liquid og Online Store 2.0
OS2 gjør JSON-styrte seksjoner til faste deler. Gamle temaer henger igjen fordi migrering krever innholdsflyt og ny testing. Vi migrerer kontrollert: duplikat-snippets ryddes, bilder får forutsigbare proporsjoner for CLS, og tastaturbruk i drawer-cart er ivaretatt for universell utforming.
Kodeeksempler for gjennomgang
Typiske produksjonsmønstre: trygge OS2-innstillinger for merchandisere, avgrenset GraphQL for kolleksjonsruter og webhook-worker som tåler duplikater.
Section-schema (Online Store 2.0)
{% schema %}
{
"name": "Featured collection",
"tag": "section",
"class": "section-featured-collection",
"settings": [
{
"type": "collection",
"id": "collection",
"label": "Collection"
},
{
"type": "range",
"id": "products_to_show",
"min": 2,
"max": 12,
"step": 1,
"default": 4,
"label": "Products to show"
}
],
"presets": [{ "name": "Featured collection" }]
}
{% endschema %}
Storefront API med paginering
Variabler: handle (kolleksjon), first (sidestørrelse), after (peker).
query CollectionProducts($handle: String!, $first: Int!, $after: String) {
collection(handle: $handle) {
id
title
products(first: $first, after: $after) {
pageInfo {
hasNextPage
endCursor
}
edges {
cursor
node {
id
handle
title
}
}
}
}
}
Idempotent webhook-behandler (skisse)
Shopify kan sende webhook på nytt; dedupliser på X-Shopify-Webhook-Id før ERP-kø.
// Pseudokode: Node-lignende worker med kort dedupe-cache
async function handleOrderCreate(payload, headers) {
const webhookId = headers["x-shopify-webhook-id"];
const orderId = payload?.id?.toString();
if (!webhookId || !orderId) return { status: 400 };
const dedupeKey = `orders/create:${webhookId}`;
if (await cache.has(dedupeKey)) {
return { status: 200, body: "duplicate ignored" };
}
await enqueueErpExport(orderId);
await cache.set(dedupeKey, "1", { ttlSeconds: 86400 });
return { status: 200 };
}
Begrenset Liquid-løkke for produktgrid
Fast limit og faste image_url-bredder hindrer at store kataloger blir dyre løkker og for store bildefiler på mobil.
{% assign cap = section.settings.products_to_show | default: 8 %}
{% assign collection = section.settings.collection %}
<ul class="product-grid" role="list">
{% for product in collection.products limit: cap %}
<li>
<a href="{{ product.url }}">
{{
product.featured_image
| image_url: width: 640
| image_tag: loading: 'lazy', widths: '320,640,960'
}}
</a>
</li>
{% endfor %}
</ul>
Storefront API: legge linjer i handlekurv (mutasjonsskiss)
Når trusselbildet krever det, kjør mutasjoner fra server, kø-worker eller Remix-action i Hydrogen slik at storefront-token ikke ligger i hver nettleserbundle.
mutation cartLinesAdd($cartId: ID!, $lines: [CartLineInput!]!) {
cartLinesAdd(cartId: $cartId, lines: $lines) {
cart {
id
totalQuantity
}
userErrors {
field
message
}
}
}
Eksempelvariabler:
{
"cartId": "gid://shopify/Cart/YOUR_CART_ID",
"lines": [
{
"merchandiseId": "gid://shopify/ProductVariant/YOUR_VARIANT_ID",
"quantity": 1
}
]
}
Headless med Storefront API, Hydrogen, Remix og Oxygen
Storefront API eksponerer katalog og handlekurv via GraphQL slik at et eget frontend kan håndtere kolleksjoner, mutasjoner og kjøpsrelevante flyter uten Liquid-maler på nettbutikklaget. Hydrogen samler React-mønstre for streaming, cart-state og data-last som passer handels-URL-er; konvensjonene er Remix-nære og kjente for team som forventer eksplisitte loaders og error boundaries.
Oxygen er Shopifys hosting for Hydrogen og reduserer manuelt edge-glue. Det betyr ikke at Hydrogen er obligatorisk: modne Next.js- eller Astro-team kaller ofte Storefront API direkte og bytter offisiell boilerplate mot eksisterende designsystem.
GraphQL som tåler kampanjer
Vi designer operasjoner med paginering for store kolleksjoner, robust feilhåndtering når midlertidige feil treffer samtidig med peak, og handlekurvlinjer som gjør rabatter og selling plans forståelige for support. Innlogging og konto flyttes ikke til tilfeldige fetch-kall utenfor personvernprogrammet deres.
Når Hydrogen, når Liquid
Hydrogen passer ved React-kultur og dokumentert Shopify-deploy. Liquid-first er sterkt når merchandiser lever i tema-editoren og gevinsten er app-rydding eller Liquid-refaktor.
Headless er ikke «magisk raskt» hvis bundle og tag-lag er tunge. Vi sammenligner felt-LCP, JS-kost og redaksjonell preview-behov. Hvis Liquid holder mål med slankere apper, dropper vi headless og investerer i datakvalitet og caching der det monner.
Checkout, Functions og trygg tilpasning
Checkout er låst av gode grunner. Vi implementerer rabatt-, frakt- og betalingsregler via Functions og godkjente UI-utvidelser. Vi lover ikke «full JavaScript-frihet» som bryter retningslinjer og PCI.
Webhooks, køer og ERP
orders/create og inventory_levels/update må tåle duplikater og omkjøringer. Vi bruker idempotente worker-lag med kø og alarm når retry stopper. Norske virksomheter med netthandel og fysisk butikk må ofte synkronisere VAT og lager mellom kanaler uten dobbeltbooking.
Ytelse og Core Web Vitals
Edge-nettverket hjelper, men tema og tredjeparts script avgjør INP. Vi setter budsjetter per mal, utsetter ikke-kritisk JS og reduserer layout-skift fra fonter og dynamiske rader. Vi lover ikke konverteringsprosent, vi leverer målinger og klare forbedringskurver.
Markeder, valuta og B2B
For grensehandel og feriekunder må frakt og tid til utlevering være ærlig i checkout. Shopify Plus brukes til B2B når reelle firmaprosesser finnes, ikke som statussymbol.
Migrering og SEO
301-kart, handles og strukturerte produktdata må stemme. Vi overvåker 404 etter lansering og flytter attributter til metafelt for å beholde filtrering. Over tid vedlikeholder vi internlenker fra blogg og kjøpsguide slik at autoritet ikke flyter til orphan-produkter uten parent-kategori i Shopify-strukturen.
Lanseringsrytme og QA-matrise
Før DNS kuttes kjører vi regresjon på mobilnett med throttling som speiler typiske CrUX-forhold i Oslo og Bergen, ikke bare kontor-Wi-Fi. Betalingstester dekker del-refusjon og mellomsalg der ERP krever korrekt avgiftsfordeling mellom linjer, slik at regnskapsavstemming forblir ryddig etter go-live og interne revisjoner tåler prøving.
AEO og strukturerte fakta
Assistenter treffer riktig når returprosess, leveringstid og produktspesifikasjoner er identiske i synlig FAQ, JSON-LD og ERP-stamdata. Vi unngår fantastiske «AI-blokker» uten operativ sannhet.
Hva vi leverer
- OS2-temaer, revisjon av Liquid og ytelsesoppdrag
- Headless-konstruksjoner med Storefront API og cache-plan
- Checkout-regler innenfor policy
- ERP-, OMS- og logistikk-koblinger med logging
- Abonnement og komplekse produktpakker
- Migrering med SEO og datarutiner
Nordiske scenarier vi kjenner
Nordiske kjøpere forventer klare returregler, sporbar frakt og mobil-first checkout. Vinterkampanjer og Black Week samler trafikk som avslører trege menyer og tunge anbefalingswidgets. Vi rydder INP-kritiske komponenter og sikrer at betalingsflyten overlever app-oppdateringer.
Sesongrytme og releasekalender
Vi planlegger deploy-vinduer utenom regnskapsluking og lagerkritisk peak. Kritiske app-oppdateringer testes på staging som speiler produksjonsdatavolum. Integrasjons-endringer dokumenteres slik at nattevakt kan se hvilke felt som endret seg når ERP-leverandør kutter gamle endepunkter.
Betaling og leverandørlandskap
Vipps og kortdominans varierer etter målgruppe. Vi sørger for at checkout-kopien og gebyrstrukturen samsvarer med det økonomi har publisert, og at webhookene ikke eksponerer mer persondata enn nødvendig til CRM.
Hvorfor seniorkompetanse betaler seg

Når app-stacken er tyngre enn sortimentet
Vi ser ofte handlekurver der tre anmeldelsesapper og to upsell-moduler kjemper om samme DOM-node. Senior arbeid fjerner overlapp, gjenbruker native Shopify der mulig, og isolerer kritisk JavaScript. Resultatet er færre henvendelser om «knappen fryser på iPhone» i kampanjehelgen.
Hva vi optimaliserer kontra garanterer
Vi optimaliserer arkitektur, integrasjoner og måledata. Vi garanterer ikke omsetningshopper; det styres av kanal, tilbud og merkepositionering.

Eksempler på leveranser
Sportsutstyr og sesong
Størrelsesguider, lager på tvers av kanaler og trygg peak-håndtering.
Mer stabil checkout under kampanjer
Mat og kuldekjede
Cutoffs for produksjon, batch-sporing og ERP synk.
Synlige leveringsløfter i checkout
B2B-komponenter
Plus med firmaprofiler og eksport til økonomisystem.
Avstemte ordre mot fakturasync
Teknologistakk
The Autonomous Future: UCP Agent Mesh
Experience the next generation of decentralized commerce protocols through a high-fidelity tactile interface.
AI-agenter handler autonomt uten mellomledd, med under 1ms latens.
Hvert WordPress-nettsted blir en node i det globale UCP-handelsnettverket.
Automatiske oppgjør og escrow - ingen manuelt arbeid, ingen uautorisert tilgang.
Brukseksempler
AI-agent velger billigste betalingsgateway per transaksjon, i sanntid.
AI forhandler priser og leveringsbetingelser basert på lagerdata i sanntid.
Selg enkeltartikler, kurs eller PDF-er for brøkdeler av en krone.
Midler holdes i smart kontrakt - frigis automatisk etter bekreftelse.
Produktpriser oppdatert hvert minutt basert på etterspørsel og konkurrenter.
Smart kontrakt betaler provisjon innen millisekunder etter bekreftet kjøp.
UCP-Node v4.0
Kjerne-Vitalitet
Nett-Synkronisering
> Initialiserer UCP Mesh...
> Kobler til globalt agentnett [OK]
> Verifiserer Smart Contract v2.1... [VERIFISERT]
> Lytter etter handelshendelser...
> Innkommende transaksjon: TX-828-A1-Z [BEHANDLES]
_
Protokollkontroll
"UCP gjør det mulig for AI-agenter å gjennomføre transaksjoner autonomt, og fjerner friksjon fra global økonomi."
Vi bruker CI for tema, staging som speiler produksjon, og hemmeligheter utenfor Liquid. Integrasjoner dokumenteres med feltkart og runbooks.
Integrasjonskart
Betaling
Shopify Payments der tilgjengelig, regionale løsninger og klarna-lignende flyter der policy tillater.
Logistikk
Bring, PostNord, Instabox, Shipmondo eller egendefinerte API-er.
ERP
Admin API, kømønstre, avstemming av lagerdiff.
Analyse
GA4 og server-side tagging der samtykke tillater.
Markedsføring
Klaviyo-lignende verktøy med kontroll på webhook-belastning.
Innhold
WordPress eller headless CMS uten å miste produkt-sannhet.
Klare forventninger
Plattformsamsvar
Vi bygger innenfor dokumenterte grenser slik at oppgraderinger ikke blir spontane nedetidshendelser.
Målinger du kan vise i styret
Før-etter spor uten oppdiktede konverteringsprosenter.
Sikker drift
Tokens med minste mulige scope og rotasjon etter personellbytte.
Samme senior gjennom prosjektet
Ingen telefonnummer-kjede der ingen har tilgang til repo.
La oss kartlegge
Send URL, integrasjonsliste og trafikktopper. Du får en risikovurdert plan med milepæler, ikke bare timesalg uten definert slutt.
Sist oppdatert: 3. mai 2026


