← Volver al inicio Documentación
Embed SDK v1 · Spalopia · Siana

Una línea, todos los casos.

Esta guía recorre, paso a paso y caso por caso, los atributos data-siana-* que el SDK reconoce, las llamadas de window.SianaBooking y los flujos completos (modal, drawer, inline, widget, recuperación post-pago). Copia, pega, sustituye tu subdominio. No hay paquete que instalar.

Paso 1

Cómo mostrar el motor

El script y nada más

Pega este <script> una sola vez en cada página donde quieras que aparezca el motor — idealmente antes de </body>. No hay paquete que instalar; el script se descarga del subdominio que Siana provisiona para ti.

<script src="https://reservas.tuhotel.com/embed.js"></script>

El script no pinta nada por sí solo. Sólo reacciona a los elementos con marcas data-siana-* que añadas debajo (o que aparezcan después en el DOM — escucha mutaciones).

Modal centrado

Marca cualquier botón con data-siana-open. Al pulsarlo se abre el motor en una capa centrada sobre tu web. Cierra con la X interna, Esc o click en el backdrop.

<button type="button" data-siana-open>Reservar</button>

Drawer lateral

Mismo botón con data-siana-mode="drawer". Entra por la derecha (default), o por la izquierda con data-siana-drawer-side="left". El ancho lo controlas con data-siana-drawer-width (acepta px, %, vw y funciones CSS min/max/clamp).

<button
  type="button"
  data-siana-open
  data-siana-mode="drawer"
  data-siana-drawer-side="right"
  data-siana-drawer-width="min(560px,80vw)"
>Reservar</button>

Inline (como una sección más)

Un <div data-siana-inline></div> vacío hace de hueco. El script monta el iframe dentro y auto-redimensiona a medida que el contenido crece — no tienes que medir alturas.

<h1>Reserva tu experiencia</h1>
<div data-siana-inline data-siana-chrome="minimal"></div>

data-siana-mode se ignora dentro de data-siana-inline — el contenedor inline no puede convertirse en overlay aunque alguien lo pida.

Esconder la navegación del motor

data-siana-chrome="minimal" oculta los breadcrumbs, la flecha "atrás" y el bloque de info del centro. Útil cuando el motor vive dentro de un contexto que ya provee su propia navegación (una ficha, un drawer, una sección inline).

<button
  type="button"
  data-siana-open
  data-siana-chrome="minimal"
>Reservar</button>

Auto-open al cargar la página

Marca el botón con data-siana-auto-open (sin valor) y el SDK lo "clica" en cuanto el DOM está listo. Patrón típico de la página de vuelta de Redsys: el cliente aterriza, el drawer se abre solo, la confirmación se pinta.

<button
  type="button"
  data-siana-open
  data-siana-auto-open
  data-siana-locator="abcd-1234"
  data-siana-pin="fdd2bt"
  data-siana-mode="drawer"
>Cargando…</button>
Simular la vuelta de Redsys →

Si añades data-siana-auto-open a varios elementos, sólo se dispara el primero (con warning).

Anchos del modal y del drawer

Sólo modal: data-siana-modal-width, data-siana-modal-height (px o %). Sólo drawer: data-siana-drawer-width (px, %, vw, o CSS min/max/clamp) — default min(480px,80vw). Inline (antes del primer resize): data-siana-min-height en px.

<button
  type="button"
  data-siana-open
  data-siana-modal-width="720px"
  data-siana-modal-height="80%"
>Modal estrecho</button>

<button
  type="button"
  data-siana-open
  data-siana-mode="drawer"
  data-siana-drawer-width="clamp(360px, 50vw, 720px)"
>Drawer fluido</button>

<div data-siana-inline data-siana-min-height="640"></div>

Un enlace, sin código

La forma más simple de todas: un enlace normal a la dirección del motor. El cliente llega a la pantalla de reserva en su propia página o pestaña. Cero JavaScript, sin script que instalar — la activas tú en unos minutos, sin depender de nadie.

<a href="https://163-f1401005.bysiana.com">Reservar</a>

Es la opción recomendada para empezar sin ayuda técnica. Cuando quieras que el motor aparezca encima de tu web sin cambiar de página, pasa al modal (B), al panel (C) o al insertado (D).

Paso 2

Tu dominio

¿Qué dominio quieres utilizar?

Antes de configurar el dominio, decide cómo quieres que funcione el motor en tu web (Paso 1). En todos los casos te dejamos una dirección lista para usar, sin que toques nada. Si abre como enlace externo —la redirección—, no hay ninguna configuración DNS por tu parte. Si el motor va insertado dentro de tu web (modal, drawer o inline), no se ve ninguna dirección del motor, así que no hay nada que configurar: puedes saltarte este paso.

Opción A — Motor con enlace externo

El cliente hace clic en un botón de tu web y el motor se abre en una página nueva. Tienes dos alternativas y ninguna requiere configuración técnica:

A1 · Usar el dominio de bysiana.com. Dinos qué alias personalizado quieres utilizar —por ejemplo tu-spa.bysiana.com— y te proporcionamos el enlace bajo nuestro dominio, listo para usar.

A2 · Usar tu propio dominio. Si prefieres que el enlace lleve tu marca —por ejemplo reservas.tu-dominio.com—, escríbenos a soporte@spalopia.com indicando el dominio que quieres usar y nosotros nos encargamos de la configuración interna necesaria.

Opción B — Motor insertado en tu web

El motor aparece integrado dentro de tu propia página (modal, drawer o inline), sin que el cliente la abandone en ningún momento. Como no se ve ninguna dirección del motor, no hay nada que configurar aquí: pasa directamente al Paso 3.

Paso 3

Qué mostrar

Aterriza en la ficha del tratamiento

Cuando tu propia tarjeta ya describe el tratamiento, salta el listado: pasa el UUID del servicio con data-siana-service y el iframe abre directamente la ficha (PDP).

<button
  type="button"
  data-siana-open
  data-siana-mode="drawer"
  data-siana-service="a809b572-b2eb-52bb-acdc-42e862e09063"
  data-siana-chrome="minimal"
>Reservar masaje</button>

Combina con data-siana-chrome="minimal" para ocultar la flecha "atrás" del motor — no tiene a dónde volver, el cliente venía de tu tarjeta.

Sólo el cuadro de reserva

data-siana-view="widget" renderiza únicamente el bloque "Personas + Fecha + Reservar" del servicio — sin descripción, imágenes ni recomendaciones. Necesita un data-siana-service válido.

<button
  type="button"
  data-siana-open
  data-siana-mode="drawer"
  data-siana-view="widget"
  data-siana-service="a809b572-b2eb-52bb-acdc-42e862e09063"
  data-siana-chrome="minimal"
>Reservar (widget)</button>

Forzar el idioma de entrada

data-siana-locale arranca el motor en el idioma que indiques. Si tu web ya tiene un selector de idioma, pásalo aquí para que el motor herede el contexto.

<button type="button" data-siana-open data-siana-locale="en">Book</button>

Pre-rellenar fecha

data-siana-date="YYYY-MM-DD" llega al motor como query param para arrancar con esa fecha pre-seleccionada cuando el servicio lo soporta.

<button
  type="button"
  data-siana-open
  data-siana-service="a809b572-b2eb-52bb-acdc-42e862e09063"
  data-siana-date="2026-06-15"
>Reservar el 15 de junio</button>

Abrir en un canal concreto

Un canal aplica precios y condiciones propios (socios, empresa, una promoción…), y los configuras en Siana. En un enlace directo el canal es el prefijo del subdominio (promo-tudominio.com); embebido, se pasa con data-siana-channel.

<!-- Como enlace: el canal va en el subdominio -->
<a href="https://promo-reservas.tuhotel.com">Reservar</a>

<!-- O embebido (data-siana-channel) -->
<button data-siana-open data-siana-channel="promo">Reservar</button>

Abrir filtrado por categoría

Filtra el catálogo a una categoría (su slug en Siana) con el parámetro ?exp=<categoria>. En el demo usamos masajes-corporales.

<!-- Como enlace -->
<a href="https://reservas.tuhotel.com/?exp=masajes-corporales">Ver categoría</a>

<!-- O embebido (data-siana-exp) -->
<button data-siana-open data-siana-exp="masajes-corporales">Ver categoría</button>
Paso 4

Vuelta del pago

Abrir directamente la confirmación de una reserva

data-siana-locator apunta el iframe a /purchase/{LOCATOR} en lugar del catálogo. Sirve para enlaces "Revisa tu reserva" en emails, área de cliente o landing post-pago. Si el cliente no ha validado el PIN en este navegador, el motor se lo pide.

<button
  type="button"
  data-siana-open
  data-siana-locator="abcd-1234-efgh-5678"
  data-siana-mode="drawer"
  data-siana-chrome="minimal"
>Revisa tu reserva</button>

data-siana-locator tiene prioridad sobre data-siana-service y data-siana-view — la página de confirmación es autosuficiente.

Locator + PIN (vuelta del pago)

Las pasarelas que sacan al cliente de la pantalla para pagar —Redsys, PayPal, Bizum— lo devuelven después a una página de tu dominio. Creas esa página —por ejemplo /confirmation— y nos la pasas como return_url: Siana devuelve al cliente ahí con ?siana_locator=N-SPD-T5SB-A3EA-9&siana_pin=fdd2bt. Esa página empareja data-siana-locator con data-siana-pin (así el motor no le pide el PIN) y abre la confirmación sola (ver caso AA). Pruébalo en Simular.

<!-- Versión estática (locator + PIN conocidos a build time) -->
<button
  type="button"
  data-siana-open
  data-siana-auto-open
  data-siana-locator="abcd-1234-efgh-5678"
  data-siana-pin="fdd2bt"
  data-siana-mode="drawer"
  data-siana-chrome="minimal"
>Revisa tu compra</button>

<!-- Tu página /confirmation — recibe: ?siana_locator=N-SPD-T5SB-A3EA-9&siana_pin=fdd2bt -->
<div id="siana-confirmation"></div>
<script>
  var params = new URLSearchParams(window.location.search)
  var locator = (params.get('siana_locator') || '').trim()
  var pin = (params.get('d3226782744ce122d789ea8e03d32f53') || params.get('siana_pin') || '').trim()
  if (locator && pin) {
    var btn = document.createElement('button')
    btn.setAttribute('data-siana-open', '')
    btn.setAttribute('data-siana-auto-open', '')
    btn.setAttribute('data-siana-locator', locator)
    btn.setAttribute('data-siana-pin', pin)
    btn.setAttribute('data-siana-mode', 'drawer')
    btn.setAttribute('data-siana-chrome', 'minimal')
    btn.textContent = 'Revisa tu compra'
    document.getElementById('siana-confirmation').appendChild(btn)
  }
</script>
<script src="https://reservas.tuhotel.com/embed.js"></script>

Sin locator no se forwardea el PIN. data-siana-pin en solitario se ignora (con warning en consola).

Vuelta del banco a tu dominio

Redsys lleva al cliente a la pantalla de su banco para validar la tarjeta y después lo devuelve a una página de tu propio dominio —tu /confirmation—. Esa página reconoce su reserva por los parámetros de la URL y le muestra la confirmación automáticamente, sin pedirle nada. El mismo flujo aplica a PayPal y Bizum.

https://tudominio.com/confirmation?siana_locator=N-SPD-T5SB-A3EA-9&siana_pin=fdd2bt
Simular →

El botón abre una página de ejemplo (/confirmation) que lee siana_locator y siana_pin y levanta el motor con la confirmación. El código de esa página está en el caso Q.

Paso 5

Tu marca

Colores, tipografía y redondeo por query params

El motor adopta los colores de tu marca. Lo habitual es fijarlos desde tu configuración (panel), pero también puedes forzar o previsualizar una paleta añadiendo parámetros theme_* a la URL del motor — útil para enseñar variantes sin tocar la configuración. El override se mantiene durante la sesión hasta que lo limpias.

Formato: los colores son hex de 6 dígitos sin # (p. ej. a8456b). Un valor inválido se ignora y se mantiene el color por defecto.

ParámetroValorQué cambia
theme_primaryhex (6, sin #)Color primario (botones y acentos principales)
theme_primary_lighthexPrimario claro (fondos suaves del primario)
theme_primary_darkhexPrimario oscuro (hover / estados)
theme_accenthexColor secundario / accent
theme_accent_lighthexAccent claro
theme_text_basehexColor del texto base
theme_body_bghexFondo de la página
theme_card_bghexFondo de las tarjetas
theme_radiussquare · semirounded · roundedRedondeo de esquinas (no acepta px/rem)
theme_fontOpen Sans · Roboto · Lato · Montserrat
Poppins · Inter · Nunito
Tipografía del motor (sólo familias permitidas; un valor fuera de lista se ignora)
theme_preset1 – 4Aplica una paleta completa predefinida (pisa los colores individuales)
theme_cleartrueBorra el override y vuelve a la configuración por defecto

Ejemplo — primario rosa-café, accent azul y esquinas redondeadas:

https://reservas.tuhotel.com/?theme_primary=a8456b&theme_primary_light=f3c9da&theme_primary_dark=5b2b3a&theme_accent=1e5fd0&theme_accent_light=bcd6ff&theme_radius=rounded

Atajo con una paleta predefinida:

https://reservas.tuhotel.com/?theme_preset=3

La tipografía también es configurable con theme_font, dentro de una lista de familias permitidas (Open Sans, Roboto, Lato, Montserrat, Poppins, Inter, Nunito). Colores, fondos, redondeo y fuente se adaptan a tu marca.

Desde el SDK (sin tocar la URL). No tienes que construir la URL del motor a mano: el SDK reenvía el tema al iframe por ti. Define una paleta global con window.SIANA_THEME (se aplica a todos los embeds de la página) o una puntual por botón con atributos data-siana-theme-* (pisan la global). El SDK valida cada valor y lo traduce a los theme_* de la tabla de arriba.

// Global — una vez, antes de embed.js. Aplica a modal, drawer, inline y widget.
<script>
  window.SIANA_THEME = {
    primary: '034c53', primaryDark: '033d42', primaryLight: 'cddbdd',
    accent: 'd07e40', accentLight: 'fff9f0',
    textBase: 'ffffff', bodyBg: 'ffffff', cardBg: 'ffffff',
    radius: 'semirounded', font: 'Open Sans'
  }
</script>
<script src="https://reservas.tuhotel.com/embed.js"></script>

<!-- Override puntual en un botón -->
<button data-siana-open
        data-siana-theme-primary="a8456b"
        data-siana-theme-accent="1e5fd0"
        data-siana-theme-radius="rounded"
        data-siana-theme-font="Poppins">Reservar</button>

// …o desde la API JS
SianaBooking.open({ mode: 'drawer', theme: { primary: '047074', font: 'Open Sans' } })
Atributo SDKClave en window.SIANA_THEME / APItheme_* equivalente
data-siana-theme-primaryprimarytheme_primary
data-siana-theme-primary-lightprimaryLighttheme_primary_light
data-siana-theme-primary-darkprimaryDarktheme_primary_dark
data-siana-theme-accentaccenttheme_accent
data-siana-theme-accent-lightaccentLighttheme_accent_light
data-siana-theme-text-basetextBasetheme_text_base
data-siana-theme-body-bgbodyBgtheme_body_bg
data-siana-theme-card-bgcardBgtheme_card_bg
data-siana-theme-radiusradiustheme_radius
data-siana-theme-fontfonttheme_font
data-siana-theme-presetpresettheme_preset
data-siana-theme-clearcleartheme_clear

Configura tu marca desde el panel de Siana

Lo recomendado para producción es no tocar código: fija la identidad del motor una vez desde tu back office, en Configuración › Motor de reservas. Ahí ajustas el color primario y secundario, la tipografía y el formato de los botones (relleno o contorno, y el redondeo de las esquinas). Una vista previa te muestra cómo lo verán tus clientes; cuando esté a tu gusto, guardas y publicas, y todos los embeds (modal, drawer, inline, widget) lo reflejan al instante.

¿Back office o theme_*? El back office es la fuente de verdad y el camino para clientes sin perfil técnico. Los theme_* / data-siana-theme-* del caso R sirven para forzar o previsualizar una variante puntual desde la propia integración, y pisan lo configurado en el panel mientras están presentes.

Integración avanzada

Controla el motor desde tu código

Una vez cargado embed.js, expone window.SianaBooking: una API global con los mismos atributos en forma de objeto. Útil cuando el botón se construye en runtime o desde un framework.

// Abrir el motor desde JS (default modal)
window.SianaBooking.open()

// Abrir un servicio concreto en drawer
window.SianaBooking.open({
  service: 'a809b572-b2eb-52bb-acdc-42e862e09063',
  mode: 'drawer',
  chrome: 'minimal',
  drawerSide: 'right',
  drawerWidth: 'min(560px,80vw)'
})

// Abrir la confirmación de una compra
window.SianaBooking.open({
  locator: 'abcd-1234-efgh-5678',
  pin: 'fdd2bt',
  mode: 'drawer'
})

// Montar inline en un elemento
window.SianaBooking.mount(document.getElementById('booking-slot'), {
  chrome: 'minimal',
  minHeight: 640
})

// Cerrar el overlay activo
window.SianaBooking.close()

Escuchar lo que pasa dentro

El motor emite eventos al host vía postMessage v1. Los recibes con SianaBooking.on(event, handler).

window.SianaBooking.on('ready',            () => console.log('motor listo'))
window.SianaBooking.on('open',             () => console.log('overlay abierto'))
window.SianaBooking.on('close',            () => console.log('overlay cerrado'))
window.SianaBooking.on('booking:complete', booking => {
  // { id, reference, total, currency }
  myAnalytics.track('purchase', booking)
})
window.SianaBooking.on('error', err => {
  // { code, message } — error recuperable, el motor sigue vivo
  console.warn('[motor]', err.code, err.message)
})
window.SianaBooking.on('cart:count', ({ count }) => {
  // nº de items en el carrito — pinta un badge en tu botón "Reservar"
  var badge = document.querySelector('#mi-badge')
  if (badge) badge.textContent = count
})

Para integraciones que no requieren página de vuelta (Stripe), suscríbete a booking:complete para tracking. Usa cart:count para mostrar un contador de items sobre tu botón de apertura. No necesitas crear nada más.

Un contador de carrito sobre tu botón

El motor avisa cada vez que cambia el número de items en el carrito con el evento cart:count. Suscríbete y pinta un badge sobre tu botón "Reservar", como en cualquier tienda online. Copia-pega tal cual:

<button id="reservar" data-siana-open data-siana-mode="drawer">
  Reservar
  <span id="cart-badge" hidden>0</span>
</button>

<script src="https://reservas.tuhotel.com/embed.js"></script>
<script>
  var badge = document.getElementById('cart-badge')
  function wire () {
    if (!window.SianaBooking) return false
    window.SianaBooking.on('cart:count', function (e) {
      badge.textContent = e.count
      badge.hidden = e.count === 0          // ocúltalo cuando está vacío
    })
    return true
  }
  // embed.js puede cargar después: reintenta hasta que exista
  if (!wire()) { var n = 0; var t = setInterval(function () { if (wire() || ++n > 100) clearInterval(t) }, 50) }
</script>

El conteo se emite también al abrir (con lo que el cliente tuviera guardado del carrito), así el badge aparece correcto desde el primer momento. El dato es sólo un número — no lleva información de la reserva.

El carrito y la navegación sobreviven

Si el cliente añade algo al carrito, navega por tu web y vuelve a la página del motor, el carrito sigue ahí (hasta 6 h). Está aislado por el dominio de tu web, así que dos sitios distintos que embeban el mismo motor nunca comparten carrito.

En una apertura genérica (sin data-siana-service ni otra intención concreta) el motor además reabre donde lo dejó el cliente (última ficha o catálogo). Si abres con una intención explícita (service, date, purchase-mode, view=widget, preset, locator), manda lo que llega y no se reanuda.

<!-- reabre donde lo dejó el cliente, con su carrito -->
<button data-siana-open data-siana-mode="drawer">Reservar</button>

<!-- empieza siempre en el catálogo (carrito intacto) -->
<button data-siana-open data-siana-mode="drawer" data-siana-fresh>Nueva reserva</button>

data-siana-fresh sólo reinicia la navegación: ignora la reanudación y entra en el catálogo. No vacía el carrito — es la selección del cliente y borrarla en silencio frustra. Si en el futuro necesitas vaciar también el carrito, se añadiría un atributo aparte explícito.

CSP & sandbox

Si tu sitio publica una política de seguridad (CSP), añade el dominio del motor a las directivas:

Content-Security-Policy:
  frame-src https://reservas.tuhotel.com;
  script-src https://reservas.tuhotel.com

No pongas sandbox en el iframe. Si tu plataforma lo fuerza, asegúrate de incluir allow-forms, allow-scripts, allow-same-origin, allow-popups y allow-top-navigation — sin este último el paso de pago falla.

Diagnóstico

Cualquier valor inválido en un data-siana-* se ignora con un warning en consola prefijado por [Siana]. Para inspeccionar el estado:

window.SianaBooking.diagnose()
// {
//   engineOrigin: 'https://reservas.tuhotel.com',
//   protocolVersion: 1,
//   modalOpen: false,
//   inlineFrames: 1,
//   lastError: null
// }

Si embed.js nunca carga, comprueba: (1) la URL del script, (2) el header script-src de tu CSP, (3) que el dominio resuelva DNS. El SDK también vigila errores ERR_BLOCKED_BY_ORB — suele significar que embed.js no se sirve con MIME tipo JavaScript.

Referencia

Tabla completa de atributos

Todos los data-siana-* reconocidos por el SDK v1. Marcan el botón con data-siana-open o el contenedor con data-siana-inline.

AtributoValorEfecto
data-siana-open(sin valor)Marca un elemento como trigger del overlay (modal o drawer)
data-siana-inline(sin valor)Marca un contenedor para incrustar el motor in-page
data-siana-auto-open(sin valor)Dispara el click automáticamente al cargar el DOM
data-siana-modemodal · drawerTipo de overlay (default modal). Ignorado en inline
data-siana-chromefull · minimalminimal oculta breadcrumbs, flecha atrás y info del centro
data-siana-serviceUUIDPre-selecciona un servicio (aterriza en su ficha)
data-siana-viewfull · widgetwidget = sólo cuadro de reserva (requiere service)
data-siana-locator4-128 [a-z0-9-]Apunta a la confirmación de una compra existente
data-siana-pin3-128 [a-z0-9]PIN auto-validado (requiere locator)
data-siana-dateYYYY-MM-DDFecha pre-seleccionada
data-siana-localees · en · fr · …Idioma inicial del motor
data-siana-drawer-sideright · leftLado del drawer (default right)
data-siana-drawer-widthCSS lengthAncho del drawer (default min(480px,80vw))
data-siana-modal-widthpx · %Ancho del modal
data-siana-modal-heightpx · %Alto del modal
data-siana-min-heightpxAlto inicial inline antes del primer resize
data-siana-session-id1-128 [A-Za-z0-9_-]Tu referencia de reserva — vuelve en el handoff para correlacionar
data-siana-item-id1-128 [a-z0-9_-]Item a dar de baja (delete mode) → el motor emite cart:remove
data-siana-callback-urlhttps URLEndpoint server-side que recibe el mismo payload del handoff por POST
data-siana-purchase-modevoucher · appointment · bothFiltra el catálogo: sólo bonos, sólo citas, o todo (default both)
data-siana-hide-add-to-cart1 · trueOculta el botón "añadir al carrito" (compra directa, sin cesta)
data-siana-fresh1 · trueAbre limpio: ignora la reanudación de ruta y entra en el catálogo. No toca el carrito (ver persistencia)

Prefijo siana_* en query params del host

Hay dos espacios de nombres distintos en esta integración. Conviene tenerlos claros para no mezclarlos:

CapaConvenciónDónde vive
SDK (HTML) data-siana-* Atributos del botón o contenedor en tu página. data-siana-locator, data-siana-pin, etc. El prefijo data-siana- ya namespacea el SDK — no colisiona con nada.
URL (host) siana_* Query params en la URL de tu página. ?siana_locator=…&siana_pin=…. El prefijo evita que choquen con params propios de tu sitio (mucha gente usa ?locator o ?id para otras cosas).

Siana configura el return_url de Redsys para emitir el prefijo automáticamente. Si construyes tú el enlace (email, área de cliente, footer "Consulta tu reserva"), úsalo también:

// Email post-venta enviado desde tu CRM
https://tuhotel.com/confirmacion?siana_locator=ABCD-1234&siana_pin=8421

// Vuelta de Redsys configurada por Siana
https://tuhotel.com/confirmacion?siana_locator=ABCD-1234&siana_pin=8421

El motor también acepta el mismo prefijo si construyes a mano la URL del iframe (integración avanzada, sin SDK):

<iframe src="https://reservas.tuhotel.com/?embed=1&siana_locator=ABCD-1234"></iframe>

Lo importante: el SDK no lee la URL de tu página padre. Eres tú quien lee window.location.search en tu snippet y luego se lo pasa al SDK como atributos data-siana-* (ver caso Q). El prefijo siana_ sólo aplica a la URL del host.