Login

Fortalecimento de analytics de usuário com a identidade

Saiba como a Auth0 ajuda no seu processo de tomada de decisão e facilita a coleta de dados sobre seus usuários. Veja um exemplo específico de Analytics de usuário, incluindo trechos de código.

powering-user-analytics-identity

O problema

A InnovaShoes é um fabricante de calçados que comercializa os seus produtos através de uma loja online. A empresa planeja lançar uma nova linha de tênis de corrida masculino com tecnologia de ponta. Como parte deste lançamento, a InnovaShoes lançará uma campanha de marketing direcionada aos clientes masculinos existentes que demonstraram interesse em fitness. A campanha tem três objetivos:

  • Envie um e-mail de pré-encomenda sobre os novos tênis de corrida para os clientes masculinos de sua loja online. Além disso, a empresa quer segmentar esses usuários por idade e interesse em fitness, já que homens entre 20 e 40 anos têm maior probabilidade de ter interesse e renda disponível para comprar um produto premium de fitness.
  • Ela quer saber quais usuários registrados não retornaram após o registro, para oferecer a eles um desconto especial que os atraia de volta.
  • Por último, sabendo que muitos clientes utilizam o Twitter, a InnovaShoes quer entender melhor como é que eles, ao utilizarem essa rede social, se sentem em relação à empresa.

A InnovaShoes quer recolher as informações necessárias sobre os usuários da loja online para executar sua campanha de marketing e acredita que o melhor momento para obter estes dados é o momento do registo e login. É aí que a gestão de identidades e, em particular, a Auth0, podem ajudar.

A solução

Quanto melhor a InnovaShoes conhecer os seus clientes, mais eles poderão personalizar a experiência do cliente, agregando mais valor a eles. Os logins sociais permitem que a empresa aproveite os dados coletados pelo Facebook, Twitter e outras redes sociais para aprimorar o conhecimento dos clientes e tratá-los de forma individualizada. Adicionar logins sociais a aplicações é muito simples com a Auth0, e é um bom ponto de partida para obter dados do cliente. Os logins sociais têm várias vantagens, incluindo:

  • Endereços de e-mail de melhor qualidade: O provedor da rede social é encarregado de verificar o e-mail do usuário. Se o provedor compartilhar essas informações, você receberá um endereço de e-mail real, em vez do endereço falso que alguns usuários fornecem ao se registrar em aplicações da Web.
  • Acesso a perfis de usuário mais detalhados: Os provedores de redes sociais frequentemente podem fornecer informações adicionais sobre os usuários, como localização, interesses e aniversário. Usando esses dados, você pode direcionar conteúdo personalizado e relevante para os usuários.
  • Perfis atualizados: Os usuários geralmente não mantêm os perfis atualizados em sites menos visitados, mas sim em redes sociais. Os logins sociais podem fornecer informações mais precisas sobre os clientes.
  • Melhor segurança de login: Quando os usuários não precisam criar outro nome de usuário e senha, é mais provável que usem práticas recomendadas na escolha de senhas difíceis de adivinhar e usem autenticação multifator para os poucos sites, como redes sociais, que mantêm as informações de identidade. Seus clientes estão cansados de usar seu nome de usuário e senha – é por isso que eles vão “Entrar com o Facebook”.

Essas informações são muito úteis para obter informações e dados demográficos sobre seus usuários, o que, por sua vez, é útil para campanhas de marketing direcionadas ou em decisões de gerenciamento de produtos.

Como você obtém o Analytics de usuário?

A Auth0 inclui um recurso poderoso chamado “regras” – pequenos trechos de código Javascript que são executados como parte de cada autenticação – que permite estender a plataforma da maneira que você precisar, bem como implementar recursos avançados. É essa extensibilidade que será o segredo da implementação da InnovaShoes.

Quando os usuários se registram na loja online usando um login social, a InnovaShoes pode usar uma regra que chama uma API para um serviço, como a FullContact, para estender as informações do usuário – localização, idade, sexo, faixa de renda, redes sociais e assim por diante e, além disso, chama a API da rede social para aprimorar o perfil do usuário com interesses, curtidas, gráfico social, etc. Crie uma regra para acessar poderosas APIs de análise social de terceiros – por exemplo, invocando um serviço de análise de sentimento para avaliar os tweets dos usuários que mencionam @InnovaShoes. Crie ainda outra regra que armazene as informações do usuário em sua plataforma de análise escolhida, seja em um data warehouse e analisadas com um conjunto de produtos de BI, transmitida para uma plataforma de análise de Big Data baseada em Hadoop, carregada em um serviço de indexação de texto completo , extraído para um produto de análise SaaS – tudo o que seus cientistas de dados e equipe de marketing precisam.

O trecho a seguir mostra as informações básicas de um perfil de usuário da Auth0:

{
    'email': 'johndoe@gmail.com',
    'email_verified': false,
    'updated_at': '2016-01-18T19:42:13.322Z',
    'picture': 'https://s.gravatar.com/avatar/1fda90f0e712deed531294cd044a2d05?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fkl.png',
    'user_id': 'auth0|569d401336afe17803eba2ba',
    'name': 'johndoe@gmail.com',
    'nickname': 'johndoe',
    'identities': [
        {
            'user_id': '569d401336afe17803eba2ba',
            'provider': 'auth0',
            'connection': 'Username-Password-Authentication',
            'isSocial': false
        }
    ],
    'created_at': '2016-01-18T19:42:11.846Z',
    'last_ip': '174.66.196.104',
    'last_login': '2016-01-18T19:42:13.322Z',
    'logins_count': 1,
    'blocked_for': []
}

Observe como algumas dessas informações são imediatamente úteis para a campanha. Por exemplo, usando a propriedade `last_login`, a Innovashoes pode determinar se faz algum tempo que o usuário não visita o site e enviar uma oferta se ele retornar à loja.

Você pode usar a API FullContact para obter informações estendidas sobre seus usuários, como as redes sociais associadas ao endereço de e-mail. Para isso, você pode usar o modelo FullContact ao criar uma nova regra no painel de gerenciamento Auth0.

Combinadas, essas informações podem ajudá-lo a realizar análises mais complexas necessárias para a campanha – como descobrir quem de seus clientes são os homens de 20 a 40 anos (FullContact) interessados ​​em fitness (Facebook). Com esse perfil estendido, você pode se conectar a um banco de dados ou serviço de indexação/pesquisa – como o ElasticSearch – para armazenar os dados dos usuários registrados. Isso pode ser feito usando uma regra, ou em um processo diferente, usando uma tarefa cron conforme mostrado neste exemplo. Se você decidir salvar as informações do usuário de uma regra, obterá análises em tempo real. Por outro lado, se você usar uma tarefa cron, obterá as análises apenas com a frequência com que a tarefa é executada. Você deve decidir qual é a melhor abordagem para o seu caso/necessidade, levando em consideração a possibilidade de que, se você tiver milhões de usuários, salvar informações em tempo real pode ser uma carga enorme e seu serviço pode não ser capaz de lidar com isso.

Você pode até mesmo enviar essas informações diretamente para um provedor SaaS de Analytics, como Azure Stream Analytics, RapidMiner, uma instância do Hadoop ou onde quiser.

Cada vez que um usuário faz login, esse evento é um forte sinal de engajamento. Você pode aprender ainda mais sobre suas preferências e interesses usando as regras Auth0 para registrar cada evento de autenticação em seu sistema de análise e, em seguida, correlacionar esses eventos com outros sinais, como itens colocados no carrinho de compras, páginas visitadas, comentários e assim por diante. Essa ideia de “descoberta progressiva” é uma maneira eficiente de criar um perfil abrangente de um usuário ao longo do tempo, tanto solicitando informações quanto observando o comportamento.

Depois que as informações necessárias são armazenadas, você pode criar um painel com widgets que moldam suas análises em um formulário fácil de ler. O repositório a seguir contém o código-fonte de um painel simples que acessa diretamente os perfis de usuário na Auth0 e que você pode usar como ponto de partida para criar o próprio.

Seus cientistas de dados ou especialistas em métricas de marketing podem ter o próprio método preferido de visualização de dados do usuário e análises derivadas, com base em suas necessidades exclusivas. A plataforma facilmente estendida e orientada por API da Auth0 se encaixa perfeitamente em qualquer plataforma de análise, não importa quão direta ou complexa seja. A Auth0 não sobrecarrega você com análises e visualizações pré-construídas e inflexíveis como parte de sua plataforma de identidade – deixamos as ferramentas de análise e suporte à decisão para especialistas nesses campos, mas nos integramos com as melhores soluções com apenas alguns linhas de Javascript.

Exemplo de painel de análise

Exemplo de painel de análise

Por fim, você pode adicionar outra regra que envia o identificador do Twitter de um usuário – se disponível – para uma API que pesquisa os tweets do usuário mencionando @InnovaShoes e avalia o sentimento. Com essas informações, o departamento de marketing pode enviar um e-mail aos usuários que tuitaram um sentimento negativo sobre a empresa para tentar consertar ou neutralizar a situação.

Para obter estatísticas quase em tempo real, você pode armazenar em buffer eventos de autenticação de alta frequência usando um componente de fila, como o RabbitMQ de código aberto, e ter uma regra que envie as informações de login para ele: a fila enviará as informações para o data warehouse, a plataforma de análise ou a solução de análise SaaS. Isso é mostrado no diagrama a seguir.

Arquitetura de caso de uso com análise em tempo real

Arquitetura de caso de uso com análise em tempo real

Conclusão

A Auth0 é uma poderosa plataforma de autenticação, não um mecanismo de análise, portanto, não fornece análises elaboradas imediatamente. No entanto, o mecanismo de regras da Auth0 oferece flexibilidade para extrair facilmente quaisquer dados necessários dos eventos de autenticação e aprimorar os dados do perfil do usuário por meio de APIs da Web à medida que os usuários se registram e autenticam. Com esse poderoso recurso em tempo real, você pode implementar qualquer cenário analítico que imaginar. A Auth0 inclui uma lista cada vez maior de modelos de regras divididos por categorias. Você pode usar o poder na entrega de uma experiência ainda mais personalizada para seus clientes por meio de análises avançadas de usuários. Adicionar login social a suas aplicações leva apenas alguns minutos e fornece informações ricas e atualizadas sobre seus usuários. Ao combinar os dois recursos, você se depara com um mundo infinito de possibilidades para descobrir novas maneiras de envolver seus usuários.

Criação de uma nova regra usando modelos

Criação de uma nova regra usando modelos

Experimente hoje! A Auth0 tem planos para todos os requisitos, incluindo um plano gratuito para sempre que suporta até 7.000 usuários ativos e dois provedores de identidade social. Para obter mais informações, consulte a Página de preços ou entre em contato com a equipe de vendas da Auth0 se tiver alguma dúvida ou necessidade personalizada.

Apêndice A: Código de protótipo

Aqui estão alguns trechos de código de exemplo que são úteis para implementar a lógica descrita neste caso de uso.

Regra de enriquecimento de perfil

A regra que chama a API FullContact para enriquecer o perfil do usuário pode ser vista no seguinte código:

function (user, context, callback) {
  const FULLCONTACT_KEY = configuration.FULLCONTACT_KEY;

  // skip if no email
  if (!user.email) return callback(null, user, context);

  // skip if fullcontact metadata is already there
  if (user.user_metadata && user.user_metadata.fullcontact) return callback(null, user, context);

  request.get('https://api.fullcontact.com/v2/person.json', {
    qs: {
      email:  user.email,
      apiKey: FULLCONTACT_KEY
    },
    json: true
  }, (error, response, body) => {
    if (error || (response && response.statusCode !== 200)) {
      // swallow fullcontact api errors and just continue login
      return callback(null, user, context);
    }

    // se chegarmos aqui, significa que fullcontact retornou as informações e as adicionaremos aos metadados
    user.user_metadata = user.user_metadata || {};
    user.user_metadata.fullcontact = body;

    auth0.users.updateUserMetadata(user.user_id, user.user_metadata);
    context.idToken['https://example.com/fullcontact'] = user.user_metadata.fullcontact;
    return callback(null, user, context);
  });
}

Esta é uma versão simplificada do modelo FullContact fornecido pela Auth0. Esta versão não tem integração com o Slack para registrar erros.

Conforme visto no código anterior, quando as informações sobre o usuário forem encontradas, elas serão adicionadas à propriedade user.user_metadata.fullcontact.

Como criar uma função que obtém a idade do usuário a partir de um perfil de usuário enriquecido

O código a seguir mostra como criar um método que obtém a idade do usuário com base no perfil enriquecido do usuário. Você pode obter outras informações sobre o usuário de maneira semelhante.

function getAge(user) {
    if (user.age) {
        return user.age;
    }

    var fullContactInfo = user.user_metadata.fullContactInfo || user.app_metadata.fullContactInfo;

    if (fullContactInfo && fullContactInfo.age) {
        return fullContactInfo.age;
    }
    if (fullContactInfo && fullContactInfo.demographics && fullContactInfo.demographics.age) {
        return fullContactInfo.demographics.age;
    }
    if (fullContactInfo && fullContactInfo.demographics && fullContactInfo.demographics.birthDate) {
        return moment().diff(fullContactInfo.demographics.birthDate, 'years');
    }

    if (user.dateOfBirth) {
        return moment().diff(user.dateOfBirth, 'years');
    }

    if (user.birthday) {
        return moment().diff(user.birthday, 'years');
    }

    return null;
}

Regra para obter o identificador do Twitter do usuário e enviá-lo para a API Sentiment

A regra a seguir mostra como você pode obter o identificador do Twitter de um usuário e enviar os dados para a API Sentiment. Este processo deve ser feito apenas uma vez por usuário; por isso estamos definindo a variável sentiment_initialized como true quando o usuário é processado.

function (user, context, callback) {
  user.app_metadata = user.app_metadata || {};
  if (user.app_metadata.sentiment_initialized) {
    return callback(null, user, context);
  }

  var twitterHandle = getTwitterHandle(user);

  if (!twitterHandle) {
    return callback(null, user, context);
  }

  // Você deve fazer suas solicitações por SSL para proteger os segredos da sua aplicação.
  request.post({
    url: 'https://innovashoes.com/twittersentiment',
    json: {
      twitterHandle: twitterHandle,
      secretToken: configuration.TWITTER_SECRET_TOKEN
    },
    timeout: 15000
  }, function(err, response, body){
    if (err) return callback(new Error(err));
    user.app_metadata.sentiment_initialized = true;
    auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
      .then(function(){
        callback(null, user, context);
      })
      .catch(function(err){
        callback(err);
      });
  });
}

function getTwitterHandle(user) {
    var fullContactInfo = user.user_metadata.fullContactInfo || user.app_metadata.fullContactInfo;
    if (fullContactInfo && fullContactInfo.socialProfiles) {
      for (var key in fullContactInfo.socialProfiles) {
        if (fullContactInfo.socialProfiles[key].type === 'twitter'){
          return fullContactInfo.socialProfiles[key].username;
        }
       }
    }
    return null;
}

Código de amostra do painel

Você pode encontrar o código de amostra do painel neste repositório. Você pode usá-lo como ponto de partida e criar o seu próprio. O arquivo readme fornecerá informações para executar o exemplo. Você pode ver a versão em tempo real aqui.

Inscreva-se gratuitamente

Comece a construir e proteja suas aplicações com a plataforma de identidade Auth0 hoje mesmo.

3D login box