> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modelos de Banners de Anúncios Nativos

export const LastUpdatedPt = ({date}) => {
  const label = "Última atualização:";
  return <>
      <style>{`
        .last-updated-component {
          display: inline-flex;
          align-items: center;
          gap: 8px;
          padding: 10px 16px;
          border-radius: 8px;
          margin-top: 12px;
          margin-bottom: 16px;
          font-size: 14px;
          background-color: rgba(0, 0, 0, 0.05);
          border: 1px solid rgba(0, 0, 0, 0.12);
          color: rgba(0, 0, 0, 0.75);
          line-height: 1;
        }

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Os marketplaces usam anúncios nativos que consistem não apenas em imagens, mas também em múltiplos
  campos de texto, imagens de fundo, imagens de primeiro plano e outros elementos
  personalizáveis. Esses elementos podem variar entre diferentes posicionamentos, tornando
  desafiador manter a consistência e otimizar a criação de anúncios entre
  campanhas.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Os modelos criativos fornecem uma solução oferecendo banners pré-projetados que
  permitem às equipes construir anúncios rapidamente seguindo uma estrutura organizada e repetível.
  Esses modelos são altamente personalizáveis e podem incluir campos
  específicos. Seja necessário campos para um botão, imagens, títulos,
  parâmetros personalizados ou outros elementos de design, os modelos permitem padronizar e
  simplificar o processo.
</div>

<Frame>
  <img src="https://mintcdn.com/topsort/uSrfRB5jaD2RxnFe/images/knowledge-base/golden-circle-banner-example.webp?fit=max&auto=format&n=uSrfRB5jaD2RxnFe&q=85&s=1d3d59d88333ff076d8fa1b816580690" alt="exemplo de um anúncio em banner." width="2092" height="300" data-path="images/knowledge-base/golden-circle-banner-example.webp" />
</Frame>

<Warning>
  **Limitação de Gerenciamento de Modelos**: Atualmente, os modelos não podem ser editados ou
  excluídos uma vez criados. Planeje cuidadosamente a estrutura do seu modelo antes da criação
  para garantir que atenda às suas necessidades de campanha a longo prazo.
</Warning>

## Como Funciona

### Criando um Novo Modelo

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Os varejistas podem criar modelos personalizados adaptados às suas necessidades. Esses modelos
  podem ser configurados com vários campos, como texto, imagens, links externos
  e outros elementos, para atender aos requisitos específicos do posicionamento. Veja
  como você pode criar e configurar um novo modelo:
</div>

<Steps>
  <Step title="Ao criar um modelo, primeiro defina a imagem de visualização estática e os campos que comporão o modelo. Para cada campo, você precisará especificar:">
    * **Tipo de Campo**: Escolha entre texto, imagem, seleção, botão, link, etc.
    * **Variável**: O nome da variável que o campo vai usar.
    * **Nome do Campo**: Defina um rótulo claro para o campo para identificá-lo no processo de criação da campanha.
    * **Descrição**: Forneça uma explicação ou instruções sobre o que deve ser inserido no campo.
    * **Obrigatório ou Opcional**: Decida se o campo é obrigatório para os anunciantes preencherem, ou se pode ser deixado em branco.
    * **MinLength**: número mínimo de caracteres para campos de texto
    * **MaxLength**: número máximo de caracteres para campos de texto
    * **Default**: valor padrão para o campo
    * **Prefix**: para campos do tipo link, eles começarão com o prefixo
    * **MultiSelect**: para campos do tipo seleção se o usuário deve selecionar um ou múltiplos
    * **Options (querystring)**: chaves e valores para campos do tipo seleção

    <div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
      Isso pode ser feito usando um CSV ou a UI
    </div>

    <div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
      <Frame>
        <img src="https://mintcdn.com/topsort/6z2OGMIoIAfrcYlw/images/knowledge-base/native-ads-banner-template-new-template-2.webp?fit=max&auto=format&n=6z2OGMIoIAfrcYlw&q=85&s=7bb9bc70c61ad05e06025e2788d67fd5" alt="Captura de tela da criação de novo modelo" width="675" height="522" data-path="images/knowledge-base/native-ads-banner-template-new-template-2.webp" />
      </Frame>
    </div>

    <div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
      <Frame>
        <img src="https://mintcdn.com/topsort/6z2OGMIoIAfrcYlw/images/knowledge-base/native-ads-banner-template-check-template.webp?fit=max&auto=format&n=6z2OGMIoIAfrcYlw&q=85&s=1c7aa3399d9772e8703118dde653a9c8" alt="Captura de tela da revisão do novo modelo" width="581" height="351" data-path="images/knowledge-base/native-ads-banner-template-check-template.webp" />
      </Frame>
    </div>
  </Step>

  <Step title="Em seguida, dê a ele um nome único, uma breve descrição para ajudar os anunciantes a entender seu propósito pretendido e, opcionalmente, adicione uma URL de visualização dinâmica.">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      **<Frame>      <img src="https://mintcdn.com/topsort/6z2OGMIoIAfrcYlw/images/knowledge-base/native-ads-name-and-preview.webp?fit=max&auto=format&n=6z2OGMIoIAfrcYlw&q=85&s=0d0b995cfde598b58c4b831d81539e99" alt="Captura de tela da revisão do novo modelo" width="656" height="806" data-path="images/knowledge-base/native-ads-name-and-preview.webp" /></Frame>**
    </div>
  </Step>
</Steps>

### Configuração de Visualização Dinâmica

<Tip>
  **Disponibilidade de Visualização Dinâmica**: A funcionalidade de visualização dinâmica está disponível apenas
  para modelos que especificamente habilitam este recurso durante a criação.
</Tip>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  URLs de visualização dinâmica permitem visualização em tempo real de como os campos do modelo
  aparecerão no posicionamento real do anúncio. O sistema de visualização carrega sua URL especificada
  em um iframe e preenche dinamicamente as variáveis do modelo com dados da campanha.
</div>

<Steps>
  <Step title="Prepare Seu Ambiente de Visualização">
    Antes de configurar a visualização dinâmica no modelo, certifique-se de ter uma URL de visualização disponível que possa renderizar a estrutura do modelo. Isso pode ser em seu ambiente de desenvolvimento local ou em uma aplicação de staging implantada.
  </Step>

  <Step title="Configure o Padrão de URL de Visualização">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Configure sua URL de visualização dinâmica usando marcadores de variáveis de modelo. A estrutura da URL deve incluir parâmetros que correspondem aos campos do seu modelo:
    </div>

    ```
    https://your-preview-domain.com/?slotId=slot-1&headline={headline}&mainImage={urlEncodedImageURL}&price={price}&availability={availability}
    ```
  </Step>

  <Step title="Integração de Variáveis do Modelo">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      O sistema de visualização substituirá automaticamente as variáveis do modelo na URL com valores reais conforme os anunciantes preenchem os campos da campanha, permitindo atualizações de visualização em tempo real.
    </div>
  </Step>

  <Step title="Renderização do Lado do Cliente">
    <div style={{textAlign: 'justify', marginBottom: '1.5rem'}}>
      Sua URL de visualização deve incluir a lógica necessária do lado do cliente para localizar e preencher elementos do modelo com os parâmetros fornecidos.
    </div>
  </Step>
</Steps>

<Note>
  **Requisitos da URL de Visualização**: Sua URL de visualização deve estar acessível e incluir
  a lógica de renderização necessária para exibir o conteúdo do modelo corretamente. O
  sistema usa JavaScript do lado do cliente para substituir conteúdo dentro de elementos de modelo
  designados.
</Note>

### Usando Modelos

<Steps>
  <Step title="Escolha começar a partir de um modelo">
    <Frame>
      <img src="https://mintcdn.com/topsort/JfdWUceY7Se3NW-0/images/knowledge-base/banner-pick-existing-template.webp?fit=max&auto=format&n=JfdWUceY7Se3NW-0&q=85&s=634701b9f4c22dcf3d9b10a4b1d7346a" alt="Captura de tela da escolha de um modelo existente" width="712" height="712" data-path="images/knowledge-base/banner-pick-existing-template.webp" />
    </Frame>
  </Step>

  <Step title="Selecione um modelo da lista">
    <Frame>
      <img src="https://mintcdn.com/topsort/uSrfRB5jaD2RxnFe/images/knowledge-base/banner-select-existing-template.webp?fit=max&auto=format&n=uSrfRB5jaD2RxnFe&q=85&s=1141c2ba9e86232c9c3e15496e051a2f" alt="Captura de tela da seleção de modelo existente" width="1600" height="995" data-path="images/knowledge-base/banner-select-existing-template.webp" />
    </Frame>
  </Step>

  <Step title="Preencha os campos do modelo">
    <Frame>
      <img src="https://mintcdn.com/topsort/JfdWUceY7Se3NW-0/images/knowledge-base/banner-fill-in-template.webp?fit=max&auto=format&n=JfdWUceY7Se3NW-0&q=85&s=b7cc320f26109906fdb23a20d8f4c4df" alt="Captura de tela do preenchimento do modelo existente" width="1600" height="1002" data-path="images/knowledge-base/banner-fill-in-template.webp" />
    </Frame>
  </Step>

  <Step title="Continue com o fluxo de criação de campanha de banner">
    <Frame>
      <img src="https://mintcdn.com/topsort/6z2OGMIoIAfrcYlw/images/knowledge-base/on-to-banner-creation.webp?fit=max&auto=format&n=6z2OGMIoIAfrcYlw&q=85&s=8f89eea4c870c62dc79756825aadb6e3" alt="Captura de tela do uso do modelo na campanha" width="1600" height="995" data-path="images/knowledge-base/on-to-banner-creation.webp" />
    </Frame>
  </Step>
</Steps>

## Estrutura de Resposta do Modelo

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Cada vencedor na resposta do leilão inclui um objeto `content` contendo os
  parâmetros configurados durante a criação da campanha:
</div>

```json theme={null}
{
  "results": [
    {
      "resultType": "banners",
      "winners": [
        {
          "rank": 1,
          "asset": [
            {
              "url": "https://topsortassets.com/000.json",
              "content": {
                "cta": "Shop Now",
                "mainImage": "https://topsortassets.com/0001.png",
                "headline": "Test Headline",
                "backgroundImage": "https://topsortassets.com/0002.jpeg"
              }
            }
          ],
          "type": "url",
          "id": "http://topsort.com",
          "resolvedBidId": "ChAGiHlBYmh4DaUEsuubfw7wEhABl8c_uHx3Aa8pw_EgHrHIGhABjoa6wYJ3wqhfIGHIdxYgIhYKEmh0dHA6Ly90b3Bzb3J0LmNvbRAFMOGtDw",
          "vendorId": "babolat",
          "campaignId": "0197c73f-b87c-7701-af29-c3f1201eb1c8"
        }
      ],
      "error": false
    }
  ]
}
```

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  A estrutura do objeto `content` corresponde diretamente aos campos do modelo
  configurados durante a criação do modelo, permitindo que seu frontend renderize dinamicamente
  os elementos criativos apropriados para cada posicionamento.
</div>

<Note>
  **Nota de Implementação**: Use as variáveis dos campos do modelo como chaves na sua
  lógica de renderização para garantir consistência entre a configuração da campanha e
  a exibição frontend em todos os posicionamentos.
</Note>

***

<LastUpdatedPt date="2025-11-18" />
