Javascript e AMP
Tracking Analytics

Adicionar script de Tracking do Analytics

O script deve ser adicionado em todas as páginas do domínio/subdomínio do site que se deseja monitorar e executar ações.
Copie e cole o script dentro do cabeçalho (head) de suas páginas:

<script src="https://www.netdeal.com.br/resources/netdeal.js?m=CODIGO_IDENTIFICACAO_NETDEAL" async></script>


Acrescentar informações na pageview - NetdealEvents

Esse atributo recebe como valor um array de key e value.
É utilizado para adicionar informações pertinentes a pageview.
Exemplos: código do usuário logado, tipo de página, restrição da página…

Como utilizar:

var NetdealEvents = window.NetdealEvents || [];
NetdealEvents.push([key, value]);
# key = String # value = Qualquer valor dos tipos abaixo:
String = "alphanumeric";
Number = 1, 1.1, -1.1, "10.00";
Date = "2017-01-01"
Datetime = "2017-01-01T00:00:00.000Z"
Array = ["a", "b", "c"] de qualquer tipo anterior
Map = { "campo-a" : "a", "campo-b" : "b", "campo-c" : "c"] de qualquer tipo anterior

Exemplo de utilização:
var NetdealEvents = window.NetdealEvents || [];
NetdealEvents.push(["restriction_type", "free / normal / premium"]);
NetdealEvents.push(["logged_id", 123]);
NetdealEvents.push(["consumer_info", {
     "type": "CADASTRO / ASSINANTE"
}]);


Atributos com valores sobre o contéudo da página

Atributo

Descrição

Valores

value_canonical

URL única da página

restriction_type

Tipo de restrição da página para planos de assinaturas

"free"

"standard"

"premium"

...

page_type

Tipo de conteúdo da página

"home"

"article"

"website"

"search"

"product"

...

page_title

Título da página

page_description

Descrição da página

page_overhead

Caractéristica que define um contéudo

"Novidade!"

"STF"

"Luto"

"Lançamento"

page_image

Endereço da imagem principal da página

page_author

Nome do autor da página

único autor:

"Nome do autor",

ou vários autores:

"Nome A", "Nome B",...

page_author_content_type

Conteúdo da página de origem própria ou de referência de terceiros

"OWN"

"THIRD_SOURCE"

"FREELANCER"

page_published_time

Data de publicação do conteúdo (padrão UTC)

"2020-07-02T12:30:43Z"

page_modified_time

Data de modificação ou atualização do conteúdo (padrão UTC)

"2020-07-02T12:30:43Z"

page_tags

Palavras chaves do conteúdo (keywords, tags,...)

"A", "B",...

page_sections

Seção ou Categoria que representa o conteúdo

"Futebol", "Automóveis", "Esportes", …

page_location

País(es), estado(s), cidade(s) ou região(es) destinadas para o conteúdo

"Curitiba", "Araucária", "Campo Largo"...

"Paraná"

"Brasil"
"Exterior"

page_content_aspect

Aspecto da leitura do conteúdo

"Quicknews"

"Breaknews"

"Softnews"

"Hardnews"

"Evergreen"


Atributos com valores sobre os dados do usuário

Atributo

Descrição

Valores

logged_id

Código do usuário logado (se logado)

1234

consumer_info

Informações sobre o usuário logado (se logado)

{

   first_name : 'Nome',

   name : 'Nome completo',

   type : "CADASTRO / ASSINANTE",

   ...

}

consumer_location

Localização selecionada pelo usuário no browser ou tradução de Geolocalização por coordenadas

"Curitiba"

"Paraná"

"Brasil"

"Exterior"

AMP
Tracking Analytics páginas AMP

Adicionar script de Tracking AMP

O script deve ser adicionado em todas as páginas do domínio/subdomínio do site que se deseja monitorar.
Copie e cole o script dentro do body de suas páginas.

<amp-analytics config="https://www.netdeal.com.br/resources/js/amp-analytics-config.json"
data-include-credentials="include">
    <script type="application/json">
    { "vars": {
        "ndid": "Código fornecido pala Netdeal para identificação",
        "value_canonical" : "https://site.com.br",
        "og_type" : "article",
        "restriction_type" : "default",
        "page_tags" : ["tagA", "tagB"],
        "page_sections" : ["Section A", "Section B"],
        "page_authors" : ["Nome do autor"],
        "page_author_content_type" : "OWN",
        "page_published_time" : "2020-01-01T00:00:00Z",
        "page_modified_time" : "2020-01-01T00:00:00Z",
        "page_title" : "Título da página",
        "page_description" : "Descrição da página",
        "page_image" : "https://site.com.br/image.jpg",
        "page_content_aspect" : "Softnews",
        "page_location" : ["Maringá", "Paraná"]
    } }
    </script>
</amp-analytics>
Virtual Pageview
Gerar nova pageview sem recarregar a página

Se a página contém a função de rolagem infinita ou carregamento assíncrono e navegação sem recarregar o browser, pode-se utilizar da função de Virtual Pageview para registrar novas pageviews e executar ações.
Para executar uma nova pageview, execute o script abaixo:

NetdealJs.newPageview(newUrl, propertiesEvent, optionsRequest);
Sendo os parâmentros:
newUrl = "Url atual da página" obrigatório
propertiesEvent = Objeto com informações da nova pageview
page_type = Tipo da página, ex: article, website, search, etc...
page_title = Título da página
page_description = Descrição da página
page_image = Endereço da imagem principal da página
page_author = Nome do autor da página
page_published_time = Data de publicação da página
page_modified_time = Data de modificação da página
page_tags = Tags da página
page_sections = Seção ou categoria que representa o conteúdo da página, ex: Futebol, Automóveis, Esportes, etc...
restriction_type = Tipo de restrição da página para seus planos de assinaturas, ex: free, stardart, premium, etc...
logged_id = Código do usuário logado (se logado)
consumer_info = Informações sobre o usuário logado (se logado)
'outros_atributos' = Qualquer atributo que seja necessário

Obs: Por padrão o script da Netdeal irá ler essas informações nas Meta Tags do HEAD da página, 
caso seja inserido o objeto acima, este irá substituir os valores capturado nas Meta Tags.
optionsRequest = Objeto com opções do request
execute_actions = true/false Valor padrão true
Exemplo:
NetdealJs.newPageview(
        "http://meusite.com.br/nova-pagina",
        {
            page_type: 'article',
            page_title: 'Nome do artigo',
            page_description: 'Descrição do artigo',
            //...
            page_sections: ['Categoria A', 'Categoria B'],
            restriction_type: 'stardart',
            logged_id : 123,
            consumer_info : {
                "type": "CADASTRO / ASSINANTE",
                //...
            },
            qualquer_outro_atributo : 'Valor'
        },
        {
            execute_actions : true,
            callback: function (actionInfo, templateHtml) {
                console.log("callback "+actionInfo);
            },
            callbackNotFound: function (actionType) {
                console.log("callbackNotFound "+actionType);
            }
        }
);

HTML e meta tags
Meta tags

Adicionar informações via meta tag

Com meta tags é possível acrescentar informações para segmentar seu público alvo em determinadas páginas e características.
Exemplo de utilização de meta tag:

<meta property="netdeal:page_title" content="Título da sua página"/>

Padronizamos a nomeclatura das principais tags utilizadas pelo Analytics da Netdeal:
netdeal:page_type = Tipo da página, ex: article, website, search, etc...
netdeal:page_title = Título da página
netdeal:page_description = Descrição da página
netdeal:page_image = Endereço da imagem principal da página
netdeal:page_author = Nome do autor da página
netdeal:page_published_time = Data de publicação da página
netdeal:page_modified_time = Data de modificação da página
netdeal:page_tags = Tags da página
netdeal:page_sections = Seção ou categoria que representa o conteúdo da página, ex: Futebol, Automóveis, Esportes, etc...
netdeal:restriction_type = Tipo de restrição da página para seus planos de assinaturas, ex: free, stardart, premium, etc...

Para facilitar a implantação, a Netdeal usa das meta tags já inseridas em sua página das especificações Open Graph, Twitter cards data e Schema.org markup, sendo assim, caso você já tenha implementado essas meta tags não é necessário implantar novamente as mesmas informações para a Netdeal, segue mapeamento que será utilizado pela Netdeal para cada tipo de meta tag:
Meta tag Netdeal Meta tag correspondentes
netdeal:page_type og:type
netdeal:page_title og:title ou twitter:title ou <title>Seu Título</title>
netdeal:page_description description ou og:description ou twitter:description
netdeal:page_image og:image ou twitter:image
netdeal:page_author article:author
netdeal:page_published_time article:published_time
netdeal:page_modified_time article:modified_time
netdeal:page_tags article:tag
netdeal:page_sections article:section

Você também pode adicionar qualquer outra meta tag para que a Netdeal associe a sua pageview, para isso é necessário que a meta tag inicie com "netdeal:", exemplo:
<meta name="netdeal:nome_da_sua_tag" content="Conteúdo da sua tag">



Rest API
Authentication

Token de Acesso

O Netdeal foi projetado com arquitetura Restfull Stateless, sendo assim toda requisição para consumir os serviços será necessário um Token de Acesso.
Com o resource abaixo e as chaves 'appId' e 'secretPass' que foram previamente fornecidas pelas equipe Netdeal, será possível requisitar um Token de Acesso.
A vigência de um Token de Acesso é 30 minutos.

Resource URL

POST {{endpoint}}/open/request-token

Request

{
    "appId" : "1231231231",
    "secretPass" : "skuj8173719s..."
}

Response

200 OK 401 Unauthorized
{
    "token" : "slkfj247289374289.....",
}

Request services com o Token de Acesso

No HEADER de uma requisição, é necessário incluir o parâmentro X-AUTH-TOKEN com o Token de Acesso previamente adquirido

HEADER
{
    "X-AUTH-TOKEN" : "slkfj247289374289....."
}
Data Integration

Integrando dados

A integração fora projetada para suportar qualquer tipo de estrutura de dados. Utilizando da composição Chave -> Valor, a estrutura para integrar uma informação é:

{
  "key": "...",Nome que representa sua entidade ou informação, ex: CONSUMER/PRODUCT/VIEW... 
                                    Obrigatório
                                
  "properties": {
    "id": "...",ID caso seja uma entidade, ex: CONSUMER... Obrigatório se entidade
    "campo": "...",Unidade de informação
    "sub-key": {Assim como uma entidade, pode se usar sub objetos de composição
      "sub-campo": "...",
      "sub-key": {
        "sub-campo": "..."
      }
    }
  "createOn": "...",Data da informação, caso não informado será a data do processamento
  }
}
Os campos são dinâmicamente tipados. Os formatos suportados são:
Tipo Exemplo
String "alphanumeric"
Number 1, 1.1, -1.1, "10.00"
Date "2017-01-01"
Datetime "2017-01-01T00:00:00.000Z"
Array ["a", "b", "c"] de qualquer tipo anterior
Map { "campo-a" : "a", "campo-b" : "b", "campo-c" : "c"] de qualquer tipo anterior

Entidade CONSUMER

Para a convergência de dados, fora adotado uma padronização para a Entidade CONSUMER (Consumidor), sendo está a unica entidade que será necessária a conversão de nomenclaturas de campos. Ao integrar sua base de usuário/cliente/pessoa, siga os campos abaixo. Obs: Qualquer outra informação sobre seu consumidor que não esteja relacionado nos campos abaixo, fica a seu critério a nomenclatura do campo.

Campo Descrição
id Identificação única do consumidor Obrigatório
name Nome do consumidor
email Email do consumidor
identifier Informação de identificação, CPF, RG, ou qualquer outro tipo de registro
cellphone Telefone do consumidor
birthday Data de aniversário do consumidor
photo Foto do consumidor

Como relacionar Entidades

Assim como em estrutura de dados relacionais, você pode relacionar uma entidade de dados a outra seguindo o seguinte formato:
key + _id -> consumer_id, product_id...

Exemplo:

{
  "key": "consumer",
  "properties": {
    "id": "123",
    "name": "Consumidor"
  }
  "createOn": "..."
}

{
  "key": "product",
  "properties": {
    "id": "0110.001.1",
    "name": "Caixa"
  }
  "createOn": "..."
}

{
  "key": "bought",
  "properties": {
    "id": "84778388478",
    "consumer_id": "123",
    "product_id": "0110.001.1"
  }
  "createOn": "..."
}

Enviando dados de uma mesma entidade em tempos diferentes

É possível enviar dados de uma mesma entidade parcialmente em qualquer tempo. Os algoritmos do Netdeal irá acomular as informação de forma linear, sendo possível assim utilizar essa informação como a última enviada ou em relação a um determinado período.

{
  "key": "consumer",
  "properties": {
    "id": "123",
    "name": "Consumidor"
  }
  "createOn": "2017-01-01T00:00:00Z"
}

{
  "key": "consumer",
  "properties": {
    "id": "123",
    "email": "[email protected]"
  }
  "createOn": "2017-05-01T00:00:00Z"
}

{
  "key": "consumer",
  "properties": {
    "id": "123",
    "photo": "http://endereco.photo.com"
  }
  "createOn": "2017-09-01T00:00:00Z"
}

Entidade LEAD

Para a convergência de dados, fora adotado uma padronização para a Entidade LEAD, sendo está a unica entidade que será necessária a conversão de nomenclaturas de campos. Ao integrar sua base de lead, siga os campos abaixo. Obs: Qualquer outra informação sobre seu lead que não esteja relacionado nos campos abaixo, fica a seu critério a nomenclatura do campo.

Campo Descrição
email Email do lead
consumer_id Informação de identificação do id de consumer Netdeal
cluster Associação de opções


Exemplo:

{
    "key": "lead",
    "properties" : {
        "email":"[email protected]",
        "consumer_id" : "BROWSER:c8d7df7b-b7e7-4eb0-bcdf-88c82eacc542",
        "cluster" : [
            "politica",
            "economia"
        ]
    }
}

{
    "key": "lead",
    "properties" : {
        "email":"[email protected]",
        "consumer_id" : "BROWSER:c8d7df7b-b7e7-4eb0-bcdf-88c82eacc542",
        "cluster" : [
            "politica",
            "economia"
        ]
    },
    "createOn" : "2017-01-01T00:00:00Z"
}

Resource URL

POST {{endpoint}}/api/event/batch

Request

[
    {
      "key": "consumer",
      "properties": {
        "id": "123456789",
        "name": "Nome do Cliente",
        "email": "[email protected]",
        ...
      }
      "createOn": "2017-01-01T00:00:00Z"
    }...
]

Response

200 OK 204 No Content 401 Unauthorized

400 Bad Request
{
    "erros" : [ { "message" : "Limite máximo de 1000 eventos" } ]
}

Os dados são processados de forma assíncrona.