Guía de integración de widgets

Instrucciones completas para integrar encuestas en línea y widgets de comentarios en tu sitio web.

1

Crea tu cuenta

Regístrate en Ask Users y elige el plan que se ajuste a tus necesidades. Recibirás una clave API que usarás para autenticar tus widgets.

Regístrate ahora

Añade scripts a tu sitio web

Añade estas etiquetas de script a la sección <head> de tu HTML. Reemplaza YOUR_API_KEY con tu clave API real del panel.

<!-- Add these to your <head> section -->
<script src="https://askusers.org/widget/widget-common.js"></script>

<!-- For survey widgets -->
<script src="https://askusers.org/widget/survey-widget.js?api-key=YOUR_API_KEY"></script>

<!-- For form widgets (waitlist, feedback, contact forms, feature requests, etc.) -->
<script src="https://askusers.org/widget/form-widget.js?api-key=YOUR_API_KEY"></script>

Nota: Solo incluye los scripts para los tipos de widget que planeas usar.

Añade el HTML del widget

Coloca el HTML del widget donde quieras que aparezca el widget en tu página.

Widget de encuesta en línea

<div class="askusers-survey-widget"
     data-survey-id="YOUR_SURVEY_ID"
     data-context-id="product-feedback"
     data-context-type="survey">
</div>

Widget de formulario (lista de espera, contacto, comentarios)

<div class="askusers-form-widget"
     data-form-id="YOUR_FORM_ID"
     data-context-id="product-launch"
     data-context-type="product">
</div>

Crea tu formulario en el panel y usa plantillas como "Lista de Espera / Registro de Email", "Comentarios Rápidos (Pulgares)", "Formulario de Contacto" o "Solicitud de Función". Reemplaza YOUR_FORM_ID con el ID de tu formulario.

Prueba tu integración

Una vez que hayas añadido los scripts y el HTML, prueba tus widgets para asegurarte de que funcionan correctamente:

  • Verifica que los widgets se carguen y se muestren correctamente
  • Prueba los envíos de formularios (aparecerán en tu panel)
  • Verifica que el estilo coincida con el diseño de tu sitio
  • Prueba en diferentes dispositivos y tamaños de pantalla

Configuración avanzada

Personalización de estilos

Personaliza la apariencia del widget usando propiedades CSS personalizadas. Añádelas al atributo style del elemento del widget.

Ejemplo: Colores personalizados de marca

<div class="askusers-form-widget"
     data-form-id="YOUR_FORM_ID"
     data-context-id="my-product"
     data-context-type="launch"
     style="
       --askusers-color-primary: #8b5cf6;
       --askusers-color-background: #ffffff;
       --askusers-color-text: #1f2937;
       --askusers-color-success: #10b981;
     ">
</div>

Múltiples widgets en una página

Puedes usar múltiples widgets en la misma página dándole a cada uno un context-id único.

<!-- Survey widget -->
<div class="askusers-survey-widget"
     data-survey-id="YOUR_SURVEY_ID"
     data-context-id="product-feedback"
     data-context-type="survey">
</div>

<!-- Form widget for feedback -->
<div class="askusers-form-widget"
     data-form-id="YOUR_FEEDBACK_FORM_ID"
     data-context-id="article-123"
     data-context-type="article">
</div>

<!-- Form widget for feature requests -->
<div class="askusers-form-widget"
     data-form-id="YOUR_FEATURE_REQUEST_FORM_ID"
     data-context-id="product-roadmap"
     data-context-type="roadmap">
</div>

Integración con frameworks

Para aplicaciones de una sola página (React, Vue, Angular, etc.), necesitas inicializar manualmente los widgets cuando los componentes se montan o las rutas cambian, ya que la inicialización automática solo ocurre en la carga de la página.

React

function MyComponent() {
  useEffect(() => {
    // Manual initialization required for SPAs
    if (window.AskUsersWidget) {
      // Initialize survey widgets
      window.AskUsersWidget.initializeSurveyWidgets?.();
      // Initialize form widgets (handles all form types)
      window.AskUsersWidget.initializeFormWidgets?.();
    }
  }, []);

  return (
    <div
      className="askusers-form-widget"
      data-form-id="YOUR_FORM_ID"
      data-context-id="my-component"
      data-context-type="feedback"
    />
  );
}

Vue.js

<template>
  <div
    class="askusers-form-widget"
    data-form-id="YOUR_FORM_ID"
    data-context-id="my-component"
    data-context-type="feedback"
  />
</template>

<script>
export default {
  mounted() {
    // Manual initialization required for SPAs
    if (window.AskUsersWidget) {
      window.AskUsersWidget.initializeSurveyWidgets?.();
      window.AskUsersWidget.initializeFormWidgets?.();
    }
  }
}
</script>

Angular

@Component({
  selector: 'app-my-component',
  template: `
    <div
      class="askusers-form-widget"
      data-form-id="YOUR_FORM_ID"
      data-context-id="my-component"
      data-context-type="feedback">
    </div>
  `
})
export class MyComponent implements OnInit {
  ngOnInit() {
    // Manual initialization required for SPAs
    if ((window as any).AskUsersWidget) {
      (window as any).AskUsersWidget.initializeSurveyWidgets?.();
      (window as any).AskUsersWidget.initializeFormWidgets?.();
    }
  }
}

Svelte

<script>
  import { onMount } from 'svelte';

  onMount(() => {
    // Manual initialization required for SPAs
    if (window.AskUsersWidget) {
      window.AskUsersWidget.initializeSurveyWidgets?.();
      window.AskUsersWidget.initializeFormWidgets?.();
    }
  });
</script>

<div
  class="askusers-form-widget"
  data-form-id="YOUR_FORM_ID"
  data-context-id="my-component"
  data-context-type="feedback"
/>

Importante: Llama al método init apropiado cada vez que renderices un componente de widget. Los widgets manejan múltiples inicializaciones de manera elegante y solo inicializarán nuevos widgets que no hayan sido procesados.

¿Necesitas ayuda?

Si encuentras problemas durante la configuración, estamos aquí para ayudar. Consulta nuestra documentación o contacta con soporte.