intermediate
reservas
widget
embed

Incorporar o Widget

Coloque o widget Levy Bookings no seu site com uma unica tag <script>, em modos inline, modal ou botao flutuante

Equipe Levy FleetsMay 18, 20269 min read

Incorporar o Widget

O widget Levy Bookings e um bundle JavaScript pequeno e sem dependencias (~6 KB) que carrega de widget.levyelectric.com/v1.js e injeta um iframe seguro apontando para sua pagina hospedada.

Funciona em:

  • Squarespace, Wix, Webflow, Shopify
  • WordPress (qualquer tema com bloco HTML custom)
  • HTML codado a mao / Next.js / React / Astro / Hugo / Jekyll

O snippet

Pegue do dashboard:

  1. Dashboard > Bookings > Widgets > {seu widget}.
  2. Obter codigo embed.
  3. Escolha modo (inline, modal, botao flutuante).
  4. Copie e cole no site.

O snippet:

<!-- Embed inline -->
<div id="levy-bookings"></div>
<script
  src="https://widget.levyelectric.com/v1.js"
  data-slug="front-beach-bikes"
  data-mode="inline"
  data-target="#levy-bookings"
  data-theme="light"
  async
></script>

Modos de incorporacao

Inline

Widget injeta iframe num elemento alvo. Use em pagina dedicada "Reservar bike".

<div id="levy-bookings"></div>
<script
  src="https://widget.levyelectric.com/v1.js"
  data-slug="front-beach-bikes"
  data-mode="inline"
  data-target="#levy-bookings"
  async
></script>

O iframe se redimensiona automaticamente.

Widget injeta iframe oculto e abre como overlay ao clicar em elemento com data-levy-book="open".

<button data-levy-book="open">Reservar bike</button>

<script
  src="https://widget.levyelectric.com/v1.js"
  data-slug="front-beach-bikes"
  data-mode="modal"
  async
></script>

Botao flutuante

Widget injeta botao "Reservar agora" fixo no canto inferior direito em toda pagina.

<script
  src="https://widget.levyelectric.com/v1.js"
  data-slug="front-beach-bikes"
  data-mode="floating-button"
  data-button-label="Reservar bike"
  data-button-position="bottom-right"
  async
></script>

Referencia de atributos data

AtributoObrigatorioPadraoDescricao
srcsim-Deve ser https://widget.levyelectric.com/v1.js
data-slugsim-Slug do seu widget
data-modesiminlineinline, modal, floating-button
data-targetinline#levy-bookingsSeletor CSS do host
data-themenaolightlight, dark, minimal
data-button-labelfloatingReservar agoraTexto do botao
data-button-positionfloatingbottom-rightPosicao do botao
data-localenaonavegadorForcar en, es, fr, de, pt
data-utm-sourcenao-UTM
data-pixel-ga4nao-GA4 ID
data-pixel-metanao-Meta Pixel ID
asyncrecomendado-Carregamento nao bloqueante

Eventos de conversao

<script>
  window.addEventListener('message', (event) => {
    if (event.origin !== 'https://widget.levyelectric.com') return;
    if (event.data?.type === 'levy:event') {
      const { eventName, payload } = event.data;
      console.log('Evento Levy:', eventName, payload);
    }
  });
</script>

Com data-pixel-ga4 ou data-pixel-meta, eventos sao encaminhados automaticamente.

Dominios personalizados

book.frankebikes.com em vez de fleets.levyelectric.com/book/{slug}:

  1. CNAME book.frankebikes.com para cname.levyelectric.com.
  2. Ticket de suporte com dominio desejado. Provisionamos TLS e roteamento em um dia util.
  3. Atualize a URL Publica no widget.

Squarespace

Squarespace bloqueia <script> em blocos de texto:

  1. Edite a pagina.
  2. Adicione bloco Code.
  3. Cole o snippet.

Para botao flutuante: Configuracoes > Avancado > Code Injection > Footer.

Wix

  1. Editor > + Adicionar Elementos > Embed Code > Embed HTML.
  2. Cole.

WordPress

Em bloco HTML custom (Gutenberg) ou widget Text (Classico) cole direto.

Shopify

  1. Temas > Editar codigo.
  2. layout/theme.liquid.
  3. Cole antes de </body>.

Performance

Script ~6 KB com async. Iframe lazy-load, Stripe.js so na etapa de pagamento. TTI < 200 ms em 3G.

Origens permitidas

Antes do widget aceitar POSTs, liste origens:

https://www.frankebikes.com
https://frankebikes.com

GETs sao CORS-abertos. So POSTs precisam da lista.

Apple Pay

Apple Pay em iframes funciona porque hospedamos em widget.levyelectric.com, registrado como dominio de comerciante em cada conta Stripe conectada.

Guias relacionados