# Página de pré-landing

A página pré-landing é como uma página de trânsito que ajuda os usuários a chegarem a páginas de destino específicas conforme suas necessidades. Ela atua como um link entre as fontes de tráfego e a página de destino da oferta. Páginas pré-landing para anúncios push e nativos são muito úteis para aumentar conversões.

### Configuração (Página Pré-landing)

#### 1. **Ofertas » Oferta-Aprovada**

#### 2. Selecionar **Oferta » Geral**&#x20;

#### 3. Selecione "**Pré-landing**" de "**Tipo**" no menu suspenso e adicione o "**URL da Pré-landing**" em "**Página de Destino**" Campo.

<pre class="language-markup" data-title="Token para anexar na URL" data-overflow="wrap"><code class="lang-markup"><strong>landing_page={pre_landing} (Obrigatório)
</strong>
Anexe tokens e parâmetros para valores de dados conforme suas necessidades. Você pode escolher e adicionar os pares chave-valor a partir das opções abaixo.

 1. aff_click_id={aff_click_id} 
 2. sub_aff_id={sub_aff_id}
 3. aff_sub1={aff_sub1}
 4. aff_sub2={aff_sub2}
 5. aff_sub3={aff_sub3}
 6. aff_sub4={aff_sub4}
 7. aff_sub5={aff_sub5}
 8. googleaid={googleaid}
 9. deviceid={deviceid}
 10. iosidfa={iosidfa}
 11. source={source}
</code></pre>

{% code title="Exemplo de Página de Destino" overflow="wrap" %}

```
https://example-pre-landing.com?landing_page={pre_landing}&aff_click_id={aff_click_id}&sub_aff_id={sub_aff_id}&aff_sub1={aff_sub1}&source={source}
```

{% endcode %}

<figure><img src="/files/c09ecf6989c13784ce3c75495ec5c70811abd6ca" alt=""><figcaption></figcaption></figure>

#### 4. Anexe tokens do Offer18 à URL da Oferta para passar os valores necessários ao anunciante.

{% code title="Tokens de valor do afiliado" overflow="wrap" %}

```
{aff_click_id}, {sub_aff_id}, {aff_sub1}, {aff_sub2}, {aff_sub3}, {aff_sub4}, {aff_sub5}, {googleaid}, {deviceid}, {iosidfa}, {source}
```

{% endcode %}

#### 5. **Enviar para salvar alterações**

***

### URL de Rastreamento do Afiliado (Página Pré-landing)

1. Login no Painel do Afiliado
2. **Ofertas » Minhas Ofertas (aprovadas) » Selecionar Oferta**
3. Selecione o **Página Pré-landing** no menu suspenso

<figure><img src="/files/5b449193cb4de300b99fb48db047dd9207b31c0e" alt=""><figcaption></figcaption></figure>

4\. **Obter URL de** **Rastreamento do Afiliado**&#x20;

***

### Criar página web (Página Pré-landing)

Crie uma página web usando o script abaixo que tenha a mesma URL usada na Configuração

```javascript
  <script>
    function base64_decode(r) { if ("function" == typeof this.window.atob) return atob(r); var n, t, e, i, o, f, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", d = 0, h = 0, c = []; if (!r) return r; r += ""; do { n = (f = a.indexOf(r.charAt(d++)) << 18 | a.indexOf(r.charAt(d++)) << 12 | (i = a.indexOf(r.charAt(d++))) << 6 | (o = a.indexOf(r.charAt(d++)))) >> 16 & 255, t = f >> 8 & 255, e = 255 & f, c[h++] = 64 == i ? String.fromCharCode(n) : 64 == o ? String.fromCharCode(n, t) : String.fromCharCode(n, t, e) } while (d < r.length); return c.join("") }
    function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) { vars[key] = value; }); return vars; }
    function getUrlParam(parameter) { var urlparameter = ''; if (window.location.href.indexOf(parameter) > -1) { urlparameter = getUrlVars()[parameter]; } return base64_decode(urlparameter); }
    function getQueryParam(param) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(param) ? urlParams.get(param) : ''; }
    function createQueryString(mapping) { let queryString = Object.keys(mapping).map(key => { let value = getQueryParam(key); return value ? `${mapping[key]}=${value}` : ''; }).filter(param => param !== '').join('&'); return queryString; }
    var landing_page = getUrlParam('landing_page');
    var aurl = document.getElementsByTagName('a'), ahf = aurl.length;
    var parameterMapping = { 'aff_click_id': 'aff_click_id', 'sub_aff_id': 'sub_aff_id', 'aff_sub1': 'aff_sub1', 'aff_sub2': 'aff_sub2', 'aff_sub3': 'aff_sub3', 'aff_sub4': 'aff_sub4', 'aff_sub5': 'aff_sub5', 'googleaid': 'googleaid', 'deviceid': 'deviceid', 'iosidfa': 'iosidfa', 'source': 'source' };
    var parameterString = '';
    if (Object.keys(parameterMapping).length > 0) { parameterString = createQueryString(parameterMapping); }
    while (ahf--) { if (parameterString) { aurl[ahf].setAttribute('href', `${landing_page}&${parameterString}`); } else { aurl[ahf].setAttribute('href', landing_page); } aurl[ahf].setAttribute('target', '_blank'); }
  </script>
```

***

### **Testando Página Pré-landing**

Use o trecho de código abaixo para testar o script da Pré-landing

```html
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
  <a href=""> Test Link 1</a>
  <a href=""> Test Link 2</a>
  <a href=""> Test Link 3</a>
</p>
  <script>
    function base64_decode(r) { if ("function" == typeof this.window.atob) return atob(r); var n, t, e, i, o, f, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", d = 0, h = 0, c = []; if (!r) return r; r += ""; do { n = (f = a.indexOf(r.charAt(d++)) << 18 | a.indexOf(r.charAt(d++)) << 12 | (i = a.indexOf(r.charAt(d++))) << 6 | (o = a.indexOf(r.charAt(d++)))) >> 16 & 255, t = f >> 8 & 255, e = 255 & f, c[h++] = 64 == i ? String.fromCharCode(n) : 64 == o ? String.fromCharCode(n, t) : String.fromCharCode(n, t, e) } while (d < r.length); return c.join("") }
    function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) { vars[key] = value; }); return vars; }
    function getUrlParam(parameter) { var urlparameter = ''; if (window.location.href.indexOf(parameter) > -1) { urlparameter = getUrlVars()[parameter]; } return base64_decode(urlparameter); }
    function getQueryParam(param) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(param) ? urlParams.get(param) : ''; }
    function createQueryString(mapping) { let queryString = Object.keys(mapping).map(key => { let value = getQueryParam(key); return value ? `${mapping[key]}=${value}` : ''; }).filter(param => param !== '').join('&'); return queryString; }
    var landing_page = getUrlParam('landing_page');
    var aurl = document.getElementsByTagName('a'), ahf = aurl.length;
    var parameterMapping = { 'aff_click_id': 'aff_click_id', 'sub_aff_id': 'sub_aff_id', 'aff_sub1': 'aff_sub1', 'aff_sub2': 'aff_sub2', 'aff_sub3': 'aff_sub3', 'aff_sub4': 'aff_sub4', 'aff_sub5': 'aff_sub5', 'googleaid': 'googleaid', 'deviceid': 'deviceid', 'iosidfa': 'iosidfa', 'source': 'source' };
    var parameterString = '';
    if (Object.keys(parameterMapping).length > 0) { parameterString = createQueryString(parameterMapping); }
    while (ahf--) { if (parameterString) { aurl[ahf].setAttribute('href', `${landing_page}&${parameterString}`); } else { aurl[ahf].setAttribute('href', landing_page); } aurl[ahf].setAttribute('target', '_blank'); }
  </script>
  </body>
</html> 
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://knowledgebase.offer18.com/pt/rede/ofertas/pagina-de-pre-landing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
