<!doctype html>
<html lang="pt-BR" translate="no" class="notranslate">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script>
      if (/w2n/i.test(navigator.userAgent)) {
        var m = document.querySelector('meta[name="viewport"]');
        if (m) m.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');
      }
    </script>
    <title>Volly - Gestão Inteligente para Agências de Viagem</title>
    <link rel="icon" type="image/png" href="/favicon.png" />
    <link rel="manifest" href="/manifest.webmanifest" />
    <meta name="theme-color" content="#001020" />
    <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="default" />
    <meta name="apple-mobile-web-app-title" content="Volly" />
    <meta name="description" content="A plataforma que transforma gestores de milhas em máquinas de resultado. Ideal para Agências de Viagens, Revendedores e Gestores de Milhas. Teste grátis por 7 dias.">
    <meta name="author" content="Volly" />
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <!-- Playfair Display só é usada em PublicQuote e no TravelDetailsPanel dos
         Acompanhamentos, mas como <link rel="stylesheet"> ela bloqueava o
         primeiro render de TODA página do sistema até o CSS chegar do Google.
         Em rede lenta isso é tela branca antes mesmo dos skeletons. O truque do
         media="print" + onload faz o browser baixar sem bloquear o render; já
         havia display=swap, então as duas telas que usam a fonte seguem
         idênticas. O <noscript> mantém o comportamento antigo sem JS.
         Nunito Sans saiu da URL em 2026-08-22: a fonte do corpo agora é a pilha
         de sistema, igual à do VollyChat (decisão do dono), então baixá-la era
         só peso morto. -->
    <link
      href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600&display=swap"
      rel="stylesheet"
      media="print"
      onload="this.media='all';this.onload=null;"
    />
    <noscript>
      <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600&display=swap" rel="stylesheet" />
    </noscript>
    <meta name="keywords" content="gestão de milhas, agência de viagens, revenda de milhas, LATAM Pass, Smiles, Azul Fidelidade, gestão de clientes, lucro com milhas" />

    
    
    <meta property="og:type" content="website" />
    <meta property="og:image" content="https://volly.com.br/og-volly.png">

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:site" content="@Volly" />
    <meta name="twitter:image" content="https://volly.com.br/og-volly.png">
    <meta property="og:title" content="Volly - Gestão Inteligente para Agências de Viagem">
  <meta name="twitter:title" content="Volly - Gestão Inteligente para Agências de Viagem">
  <meta property="og:description" content="A plataforma que transforma gestores de milhas em máquinas de resultado. Teste grátis por 7 dias.">
  <meta name="twitter:description" content="A plataforma que transforma gestores de milhas em máquinas de resultado. Teste grátis por 7 dias.">

  <!-- Microsoft Clarity -->
  <script type="text/javascript">
    (function(c,l,a,r,i,t,y){
        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
    })(window, document, "clarity", "script", "v1mr9aicn5");
  </script>
  <!-- End Microsoft Clarity -->

  <!-- Google tag (gtag.js) - Google Ads AW-18451485503
       Mesma trava de dominio do Meta Pixel (ver <body>): esta build tambem serve os
       apps white-label dos clientes em dominio proprio, e uma tag do Google solta ali
       passaria a coletar a navegacao do usuario final da agencia - o oposto da promessa
       de "sem rastro do Volly" do plano, e contaminacao da base de otimizacao.

       Aqui a trava precisa envolver ate o CARREGAMENTO do gtag.js. Diferente do fbq,
       onde da para carregar o script e pular so o init, o gtag.js ja inicia coleta ao
       ser baixado; por isso o <script src> e injetado dentro do if, e nao deixado solto
       no HTML como o Google entrega por padrao.

       A lista de dominios e a mesma do pixel de proposito: as duas tags travam juntas e
       ninguem precisa lembrar de atualizar duas listas. -->
  <script>
    (function () {
      var VOLLY_HOSTS = [
        'volly.com.br', 'www.volly.com.br',
        'milhasflow.com.br', 'www.milhasflow.com.br'
      ];
      if (VOLLY_HOSTS.indexOf(location.hostname) < 0) return;

      window.dataLayer = window.dataLayer || [];
      window.gtag = function () { window.dataLayer.push(arguments); };
      gtag('js', new Date());
      gtag('config', 'AW-18451485503');

      // Conversao auxiliar "PageView - Google Ads" (AW-18451485503/jbQnCKXT-_ccEL-mrd5E).
      // No painel do Google Ads ela esta marcada como AUXILIAR de proposito, e precisa
      // continuar assim: o Google conta uma conversao a cada carregamento de pagina de
      // quem clicou num anuncio dentro da janela de atribuicao, entao quem virou cliente
      // segue somando "conversao" a cada visita. Como principal, isso ensinaria a
      // campanha a comprar clique barato em vez de cadastro.
      //
      // So dispara nas paginas do funil de aquisicao. Fica de fora:
      //   - a area logada, que e uso de produto de quem ja e assinante;
      //   - as paginas publicas que pertencem ao CLIENTE da agencia (cotacao, portal,
      //     vitrine, relatorio, comprovante). Elas rodam neste dominio, mas quem navega
      //     ali e o viajante da agencia - mesma logica da trava de dominio acima.
      var PAGINAS_DE_AQUISICAO = ['/', '/lpnova', '/criarconta', '/signup'];
      var caminho = location.pathname.replace(/\/+$/, '') || '/';
      if (PAGINAS_DE_AQUISICAO.indexOf(caminho) >= 0) {
        gtag('event', 'conversion', { send_to: 'AW-18451485503/jbQnCKXT-_ccEL-mrd5E' });
      }


      var s = document.createElement('script');
      s.async = true;
      s.src = 'https://www.googletagmanager.com/gtag/js?id=AW-18451485503';
      document.head.appendChild(s);
    })();
  </script>
  <!-- End Google tag -->

  <script type="module" crossorigin src="/assets/index-DPgWat4-.js"></script>
  <link rel="stylesheet" crossorigin href="/assets/index-WC2aPMXB.css">
</head>

  <body>
    <!-- Meta Pixel Code -->
    <script>
      !function(f,b,e,v,n,t,s)
      {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
      n.callMethod.apply(n,arguments):n.queue.push(arguments)};
      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
      n.queue=[];t=b.createElement(e);t.async=!0;
      t.src=v;s=b.getElementsByTagName(e)[0];
      s.parentNode.insertBefore(t,s)}(window, document,'script',
      'https://connect.facebook.net/en_US/fbevents.js');

      // O pixel e a conta de anuncios sao da Volly, entao ele so pode inicializar
      // em dominio da Volly. Esta mesma build serve os apps white-label dos
      // clientes Starship em dominio proprio (app.cliente.com.br), e sem esta
      // trava o fbq('init') roda la dentro: o pixel passa a coletar navegacao do
      // usuario final da agencia, o que contraria a promessa de "sem rastro do
      // Volly" do plano, e contamina a base de otimizacao de anuncios com uso de
      // produto de quem ja e assinante.
      //
      // A edge function do CAPI ja faz o equivalente pelo header Origin
      // (DEFAULT_ALLOWED_HOSTS em supabase/functions/meta-conversions-api), entao
      // o lado servidor ja estava limpo; o vazamento era so no browser.
      (function () {
        var VOLLY_HOSTS = [
          'volly.com.br', 'www.volly.com.br',
          'milhasflow.com.br', 'www.milhasflow.com.br'
        ];
        if (VOLLY_HOSTS.indexOf(location.hostname) >= 0) {
          fbq('init', '3956837061274631');
        }
      })();
    </script>
    <!-- O <noscript> com o pixel de imagem saiu: ele dispara em qualquer dominio
         e nao ha como aplicar a trava de hostname sem JavaScript. Navegador sem JS
         nao roda o app, entao a perda de sinal e irrelevante. -->
    <!-- End Meta Pixel Code -->
    
    <div id="root"></div>
    <!-- O webchat antigo (webchat-widget do projeto rvfluufdjdsougxtdozp, herdado do
         Lovable) saiu daqui: o chat de suporte agora é o widget da Volly, montado só na
         área logada por <VollyWebchat /> — ver src/features/webchat/. Ele exige token de
         identidade assinado, então não pode ser um <script> solto no HTML. -->
  </body>
</html>
