Slik fungerer Glede

Sjekk ut hvordan Erik gir 1000 gavekort på under 2 minutter.

Slik fungerer Glede steg-for-steg

Arrow pointing downwards
star

Velg beløp og hilsen

Gi gaven ditt personlige preg med hyggelig melding og et stilig kort for enhver anledning.

Arrow pointing downwards
favorite

Mottaker får en unik pakkeopplevelse

Gaven sendes på SMS eller e-post. Få frem selskapets merkevare ved å skreddersy pakkeopplevelsen med farger og logo.

Utforsk flere måter å gi gavekortet på

Varsel om å teste ut Glede

Opplev hvordan det er å motta

Vi sender deg en demo-gave på e-post så du får se hvordan det er å motta en Glede. Helt gratis.

Gøy, sant?

Hvis du lurer på noe mer er det bare å ta kontakt med oss i chatten nede til høyre.

Obs, noe gikk galt. Kanskje e-postadressen er ugyldig?

favorite

Få full oversikt i etterkant

Med Storgleder konto får du full innsikt etter utsendelsen, slik at du slipper å lure på om gavekortet faktisk ble brukt.

Utforsk fordelene med bedriftskonto

Se hvorfor selskaper elsker Glede

...eller les hva kundene våre sier

...eller les hva kundene våre sier

Glede er ekstremt enkelt. Både for meg som gir, og den som bruker gavekortet.

Mette Maarnes Pedersen
Daglig leder
star
star
star
star
star

Glede gjør det utrolig enkelt å gi noe hyggelig. Det er bare å legge inn kontaktinformasjon og trykke send.

Maria Lunde
People Advisor
star
star
star
star
star

Glede er en bærekraftig og smidig løsning. Det gjorde jobben med å sende ut gaver betydelig enklere.

Linn Sara Furu
Senior Recruiter
star
star
star
star
star

Det er alltid vanskelig å finne ut hva man skal gi i jobbsammenheng. Glede gjør det superenkelt ved at jeg slipper å forholde meg til hva folk ønsker seg!

Sofia Allstrin
Programmatic Solutions Manager
star
star
star
star
star

Vi har fått veldig positive tilbakemeldinger fra mottakerne som setter spesielt pris på at gavekortet kan brukes overalt, både i butikk og på nett.

Anita Holseth
Seniorkonsulent
star
star
star
star
star

Det er ikke slik at vi som arbeidsgiver alltid vet hva den ansatte foretrekker. Ved at de kan velge selv øker sannsynligheten for at de får noe de faktisk vil ha.

Nora Kristine Frebergsvik
HR & Graduate Recruiter
star
star
star
star
star

Det er veldig fint at jeg kan gi heldigitale og bærekraftige gavekort gjennom Glede, som ikke fører til unødvendig avfall.

Heidi Hopstock
Prosjektleder
star
star
star
star
star

Tidligere har jeg brukt timesvis på å forberede og sende ut gaver, men nå er det gjort på under 10 minutter.

Julie Tufte-Johnsen
Talent Attraction & Acquisition Manager
star
star
star
star
star

Med Glede kan jeg sende gaver til ansatte på noen få minutter, uavhengig av hvor de bor.

Tonje Magnussøn
HR-direktør
star
star
star
star
star
Les kundehistorier

Kom i gang med Glede

Gi gavekortet som kan brukes overalt — i butikk og på nett!

Kom i gang med Glede

Gi gavekortet som kan brukes overalt — i butikk og på nett!

(function () { const DEBUG = false; const log = (...a) => DEBUG && console.log('[weglot-ui]', ...a); const normalize = (code) => { if (!code) return ''; code = String(code).toLowerCase(); if (code.includes('-')) code = code.split('-')[0]; // en-US -> en if (code === 'nb') code = 'no'; // Bokmål -> 'no' if (code === 'se') code = 'sv'; // common slip return code; }; // We cache a template per language so we can rebuild the list let TEMPLATES = { inner: {}, outer: {} }; function cacheTemplates(wrapper) { // Grab any [lang] blocks (from toggle OR list) and store inner/outer wrapper.querySelectorAll('[lang]').forEach(el => { const lang = normalize(el.getAttribute('lang')); if (!lang) return; if (!TEMPLATES.inner[lang]) TEMPLATES.inner[lang] = el.innerHTML; if (!TEMPLATES.outer[lang]) TEMPLATES.outer[lang] = el.outerHTML; }); log('cached templates', TEMPLATES); } function updateSwitcher(currentLang) { currentLang = normalize(currentLang); const wrappers = document.querySelectorAll('.wg-element-wrapper.sw6'); if (wrappers.length === 0) { log('no wrappers'); return; } else { wrappers.forEach(wrapper => { const toggle = wrapper.querySelector('.wg-dropdown-toggle'); const list = wrapper.querySelector('.wg-dd-1-list'); if (!toggle || !list) { log('missing toggle/list'); return; } // Ensure templates are cached (first run on this page load) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { cacheTemplates(wrapper); } // If any template still missing, bail (structure not as expected) if (!TEMPLATES.inner.no || !TEMPLATES.inner.sv || !TEMPLATES.inner.en) { log('incomplete templates'); return; } // 1) Set TOGGLE visual (attribute + optional state class + content) toggle.setAttribute('lang', currentLang); toggle.classList.remove('is-no','is-sv','is-en'); toggle.classList.add(`is-${currentLang}`); toggle.innerHTML = TEMPLATES.inner[currentLang]; // 2) Rebuild LIST to contain ONLY the two other languages (fresh each time) const ALL = ['no','sv','en']; const others = ALL.filter(l => l !== currentLang); // Build a clean list using the captured OUTER html so structure/classes match const htmlA = TEMPLATES.outer[others[0]]; const htmlB = TEMPLATES.outer[others[1]]; // Clear and insert exactly two items list.innerHTML = ''; // Insert via range to keep outerHTML intact const r1 = document.createRange(); r1.selectNode(list); list.appendChild(r1.createContextualFragment(htmlA)); const r2 = document.createRange(); r2.selectNode(list); list.appendChild(r2.createContextualFragment(htmlB)); // Optional: normalize classes on list items too list.querySelectorAll('[lang]').forEach(el => { const l = normalize(el.getAttribute('lang')); el.classList.remove('is-no','is-sv','is-en'); el.classList.add(`is-${l}`); }); log('updated → current:', currentLang, 'others:', others); } ) } } // Event delegation (survives DOM swaps) document.addEventListener('click', function (e) { const link = e.target.closest('.wg-element-wrapper.sw6 [lang]'); if (!link) return; e.preventDefault(); const lang = normalize(link.getAttribute('lang')); // Trigger Weglot switch (subdomain setups will reload; path setups will not) document.cookie = "glede_locale=" + lang + "; path=/; domain=.glede.app; max-age=31536000"; Weglot.switchTo(lang); // Do NOT call update here for subdomain setups; page will reload anyway. }); // Run AFTER Weglot has rendered (important on subdomain reload) function runAfterWeglotReady() { const run = () => { const lang = normalize(Weglot.getCurrentLang()); // Wait one frame to let Weglot paint its switcher nodes requestAnimationFrame(() => updateSwitcher(lang)); }; Weglot.on('initialized', run); // If already initialized (script included late), run immediately if (Weglot.getCurrentLang && Weglot.getCurrentLang()) run(); // For path-based projects (no reload), update visuals after change Weglot.on('languageChanged', (newLang) => { updateSwitcher(newLang) }); } // Boot when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runAfterWeglotReady); } else { runAfterWeglotReady(); } })();