Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.replied.dk/llms.txt

Use this file to discover all available pages before exploring further.

JavaScript API

Widgetten eksponerer en global RepliedWidget objekt som I kan bruge til at kontrollere den programmatisk.
RepliedWidget er tilgængelig efter scriptet er loaded. Brug window.addEventListener('replied:ready', ...) for at sikre det.

Metoder

Åbn/luk widgetten

// Åbn formularen
RepliedWidget.open();

// Luk formularen
RepliedWidget.close();

// Toggle (åbn hvis lukket, luk hvis åben)
RepliedWidget.toggle();

Pre-udfyld felter

// Udfyld felter inden brugeren åbner formularen
RepliedWidget.prefill({
  name: 'Lars Hansen',
  email: 'lars@firma.dk',
  subject: 'Spørgsmål om ordre #4521',
  message: 'Hej, jeg har et spørgsmål om min ordre...',
});

// Åbn med pre-udfyldte felter
RepliedWidget.prefill({ email: brugerEmail });
RepliedWidget.open();

Skjul/vis widgetten

// Skjul widgetten helt (knap + formular)
RepliedWidget.hide();

// Vis widgetten igen
RepliedWidget.show();

Nulstil formularen

// Ryd alle felter
RepliedWidget.reset();

Events

Lyt på widget-events for at integrere med jeres egne systemer:
// Widgetten er loaded og klar
window.addEventListener('replied:ready', () => {
  console.log('Widget er klar');
});

// Formularen blev åbnet
window.addEventListener('replied:open', () => {
  console.log('Formular åbnet');
});

// Formularen blev lukket
window.addEventListener('replied:close', () => {
  console.log('Formular lukket');
});

// Henvendelse sendt succesfuldt
window.addEventListener('replied:submit', (event) => {
  console.log('Henvendelse sendt:', event.detail);
  // event.detail indeholder: { id, name, email, message }
});

// Fejl ved afsendelse
window.addEventListener('replied:error', (event) => {
  console.error('Fejl:', event.detail.error);
});

Eksempler

Åbn widget fra en custom knap

<button onclick="RepliedWidget.open()">
  Kontakt os
</button>

Åbn med kontekst fra siden

// Når en bruger klikker "Hjælp med dette produkt"
function kontaktOmProdukt(produktNavn) {
  RepliedWidget.prefill({
    subject: `Spørgsmål om ${produktNavn}`,
    message: `Hej, jeg har et spørgsmål om ${produktNavn}...`,
  });
  RepliedWidget.open();
}
<button onclick="kontaktOmProdukt('Premium-pakken')">
  Spørgsmål om dette produkt
</button>

Track submissions i analytics

window.addEventListener('replied:submit', (event) => {
  // Google Analytics 4
  gtag('event', 'contact_form_submit', {
    form_source: 'replied_widget',
  });

  // Meta Pixel
  fbq('track', 'Lead');

  // Custom tracking
  fetch('/api/track', {
    method: 'POST',
    body: JSON.stringify({ event: 'contact_submit', email: event.detail.email }),
  });
});

Skjul widget på specifikke sider

// Skjul på login/signup sider
window.addEventListener('replied:ready', () => {
  const path = window.location.pathname;
  if (path.startsWith('/login') || path.startsWith('/signup')) {
    RepliedWidget.hide();
  }
});

Pre-udfyld fra logged-in bruger

window.addEventListener('replied:ready', () => {
  // Hent brugerdata fra jeres app
  const user = getCurrentUser();
  
  if (user) {
    RepliedWidget.prefill({
      name: user.name,
      email: user.email,
    });
  }
});

Tilgængelighed

Widgetten er bygget med tilgængelighed i tankerne:
  • Fuld keyboard-navigation
  • ARIA-labels på alle interaktive elementer
  • Focus trap når formularen er åben
  • Respekterer prefers-reduced-motion