Triggers
En trigger afgør hvornår en popup vises. Triggeren konfigureres af dit team i Deepdots og leveres automatisk til SDK’et — du skriver aldrig trigger-definitioner i kode.
Afhængigt af trigger-typen kan din applikation dog have brug for at gøre noget, for at triggeren faktisk kan udløses: rendere et element med et bestemt id, udsende en forretnings-event osv. Denne side forklarer hver type og viser den host-side-kode, der kræves.
De fem trigger-typer
Sektion kaldt “De fem trigger-typer”| Type | Udløses når… | Semantik for value |
|---|---|---|
time_on_page | Brugeren har været på en side i N sekunder. | number — sekunder på siden |
scroll | Brugeren har scrollet N% af sidens højde. | number — procent 0–100 |
click | Brugeren klikker på et element med et bestemt DOM-id. | string — elementets id-attribut |
exit | Brugeren navigerer væk fra den nuværende rute. | number — sekunder forsinkelse på næste rute |
event | Din applikation kalder popups.triggerEvent(name). | string — event-navnet |
time_on_page
Sektion kaldt “time_on_page”Udløses efter at brugeren har brugt et antal sekunder på siden.
Host-side-kode: ingen. Så længe SDK’et er initialiseret og autoLaunch() er kaldt, starter SDK’et timeren, når siden indlæses.
import { DeepdotsPopups } from '@magicfeedback/popup-sdk';
const popups = new DeepdotsPopups();popups.init({ mode: 'server', apiKey: 'YOUR_PUBLIC_API_KEY' });popups.autoLaunch();// Tids-triggers konfigureret i Deepdots udløses af sig selv.scroll
Sektion kaldt “scroll”Udløses, når brugeren har scrollet forbi en given procentdel af sidens højde.
Host-side-kode: ingen. SDK’et tilkobler sin egen scroll-listener og fjerner den, når tærsklen er nået.
popups.init({ mode: 'server', apiKey: 'YOUR_PUBLIC_API_KEY' });popups.autoLaunch();// En scroll-trigger konfigureret til 70% i Deepdots udløses// automatisk, når brugeren når 70% af siden.Udløses, når brugeren klikker på et DOM-element med et bestemt id.
Host-side-kode: din applikation skal rendere et element, hvis id matcher den værdi, der er konfigureret i Deepdots.
<!-- Ethvert element med det konfigurerede id udløser popup'en --><button id="feedback-btn">Giv feedback</button>Eller i et framework:
// React<button id="feedback-btn" onClick={handleClick}> Giv feedback</button>SDK’et tilkobler en engangs-klik-listener til elementet. Når den udløses, fjernes listeneren automatisk.
Stiller en popup i kø til at vises på den næste rute, efter brugeren forlader den nuværende. Nyttigt til “før du går”-undersøgelser uden at blokere navigationen.
Host-side-kode: ingen for standard SPA-navigation. SDK’et patcher history.pushState / history.replaceState og lytter til popstate, hashchange og klik på links med samme origin. Ethvert normalt klientsidigt rute-skift detekteres.
popups.init({ mode: 'server', apiKey: 'YOUR_PUBLIC_API_KEY' });popups.autoLaunch();// Når brugeren navigerer væk fra en targetet rute,// stilles popup'en i kø og vises på den næste rute efter den konfigurerede forsinkelse.Sådan fungerer det i praksis:
- Brugeren er på
/priser(hvor en exit-trigger er targetet). - Brugeren klikker på et link til
/funktioner. - SDK’et stiller popup’en i kø i
sessionStorage. - På
/funktionervises popup’en efter den forsinkelse, der er konfigureret i Deepdots.
Udløses, når din applikation udsender en brugerdefineret forretnings-event ved navn. Dette er den trigger-type, du vil bruge mest i kode.
Host-side-kode: kald popups.triggerEvent(eventName), når forretningsbetingelsen er opfyldt. Event-navnet skal matche nøjagtigt den værdi, der er konfigureret for triggeren i Deepdots.
import { DeepdotsPopups } from '@magicfeedback/popup-sdk';
const popups = new DeepdotsPopups();popups.init({ mode: 'server', apiKey: 'YOUR_PUBLIC_API_KEY' });popups.autoLaunch();
// Senere, når noget interessant sker i din app:function onCheckoutCompleted() { popups.triggerEvent('checkout_completed');}
function onSearchAttempted(query: string) { if (searchAttempts >= 3) { popups.triggerEvent('search_no_results'); }}Eksempel: React
Sektion kaldt “Eksempel: React”function CheckoutButton({ popups }: { popups: DeepdotsPopups }) { return ( <button onClick={async () => { await placeOrder(); popups.triggerEvent('checkout_completed'); }} > Betal </button> );}Eksempel: Vanilla JS i en hvilken som helst flow
Sektion kaldt “Eksempel: Vanilla JS i en hvilken som helst flow”async function submitContactForm(data) { const ok = await api.submit(data); if (ok) { popups.triggerEvent('contact_form_sent'); }}Flere triggers på samme popup
Sektion kaldt “Flere triggers på samme popup”En popup i Deepdots kan have mere end én trigger. En hvilken som helst af dem udløser popup’en (med forbehold for cooldowns og rute-targeting). For eksempel: en popup kan konfigureres til at udløses efter 30 sekunder eller når brugeren udsender cart_abandoned, alt efter hvad der sker først.
Du behøver ikke gøre noget særligt i kode — sørg bare for, at din applikation leverer de rette host-signaler (montering af klik-mål-id, kald af triggerEvent osv.) for hver trigger-type popup’en bruger.
Vis en popup manuelt uden trigger
Sektion kaldt “Vis en popup manuelt uden trigger”Hvis du har brug for at omgå triggers helt — for eksempel en “Feedback”-knap altid tilgængelig i footeren — kald show() eller showByPopupId() direkte:
popups.show({ surveyId: 'survey-feedback-001', productId: 'product-main',});
// Eller, hvis du kender popup-id'et fra Deepdots:popups.showByPopupId('popup-footer-feedback');Cooldowns og rute-targeting respekteres stadig.