# Upload do Template PX3_MASTER via API GHL/Linkia

Data da execução: 2026-05-27
Executor: Paulo (dev Climb Digital)
Cliente: PX3 LAB
Location ID: `W7PGxpfbsFaEEUoQOtUb`

---

## TL;DR

- Template `PX3_MASTER` **criado com sucesso na conta** via API GHL.
- ID do template: **`6a16f1f3525dc258073ba2b3`**
- Tipo: `html` (custom HTML, não builder drag-and-drop)
- Acessível no Linkia em: Marketing > Emails > Templates > "PX3_MASTER"

**Mas atenção:** a API tem 1 limitação que precisa ser conferida manualmente (ver seção "Limitações Conhecidas" abaixo).

---

## Endpoint utilizado

```
POST https://services.leadconnectorhq.com/emails/builder
```

### Headers
```
Authorization: Bearer pit-25f78b4f-4cc8-48f2-b8dc-73a98f851eaf
Content-Type: application/json
Accept: application/json
Version: 2021-07-28
```

### Payload final (variante 3, a que funcionou com nome correto)
```json
{
  "locationId": "W7PGxpfbsFaEEUoQOtUb",
  "name": "PX3_MASTER",
  "title": "PX3_MASTER",
  "subject": "PX3 LAB",
  "html": "<conteúdo de template_master.html>",
  "type": "html",
  "templateType": "html"
}
```

### Response
```json
{
  "redirect": "6a16f1f3525dc258073ba2b3",
  "id": "6a16f1f3525dc258073ba2b3",
  "status": "ok",
  "traceId": "a4263324-d29e-4bac-90f5-17bdef2b35e5"
}
```
HTTP 201 Created.

---

## Verificação via LIST endpoint

```
GET https://services.leadconnectorhq.com/emails/builder?locationId=W7PGxpfbsFaEEUoQOtUb&type=html
```

Response inclui o template:
```json
{
  "name": "PX3_MASTER",
  "id": "6a16f1f3525dc258073ba2b3",
  "templateType": "html",
  "version": "2",
  "lastUpdated": "2026-05-27T13:30:27.797Z",
  "previewUrl": "https://firebasestorage.googleapis.com/v0/b/highlevel-backend.appspot.com/o/location%2FW7PGxpfbsFaEEUoQOtUb%2Femails%2F6a16f1f3525dc258073ba2b3%2Findex.html?alt=media&token=6f916d73-003f-48b0-896f-c13c5e11176d"
}
```

---

## Limitações conhecidas / o que NÃO funciona

### 1. GET detalhado retorna 401
```
GET /emails/builder/{locationId}/{templateId}
-> 401 "This route is not yet supported by the IAM Service"
```
Quer dizer: o Private Integration Token (PIT) atual **só tem permissão de POST/LIST/DELETE**, não tem GET de detalhe nem PUT (edição). Isso não é bloqueante porque conseguimos editar via UI do Linkia depois.

### 2. PUT (renomear/editar) retorna 404
Tentado em 3 paths diferentes - nenhum aceita. Pra renomear ou editar o template depois, **tem que ser pela UI do Linkia** ou criar novo e apagar antigo.

### 3. PreviewUrl pública não retorna o HTML enviado
A URL `previewUrl` do response devolve um HTML genérico/placeholder do GHL com ~40KB, **não o conteúdo que enviamos**. Isso é normal do GHL — o builder converte o HTML pra estrutura interna deles na publicação real do email, e a URL de preview pública é cache estática. **O HTML real só fica visível ao abrir o template no UI do Linkia**.

**Renato precisa conferir visualmente no Linkia:**
1. Login no Linkia/GHL
2. Marketing > Emails > Templates
3. Clicar em "PX3_MASTER"
4. Confirmar que o HTML está completo (cabeçalho preto, logo, barra verde, corpo, CTA, footer)
5. Se vier vazio ou diferente, executar fallback manual (ver abaixo)

---

## Fallback manual (caso o template no UI esteja vazio/quebrado)

Se ao abrir no Linkia o template estiver sem conteúdo:

1. Abrir Linkia/GHL > Marketing > Emails > Templates
2. Clicar em **"+ New"** > escolher **"Code Your Own"** ou **"Import HTML"**
3. Nomear como `PX3_MASTER`
4. Copiar todo o conteúdo de `/opt/mia/workspace/clientes/px3lab/email_marketing/template_master.html`
5. Colar no editor de código HTML do Linkia
6. Salvar
7. (opcional) Apagar o `PX3_MASTER` criado via API que ficou quebrado

Tempo estimado: 2-3 minutos.

---

## Templates de teste criados e DELETADOS

Durante a exploração da API criei 3 templates extras pra testar variantes de payload. Os 3 foram apagados via:
```
DELETE https://services.leadconnectorhq.com/emails/builder/{locationId}/{templateId}
```
IDs deletados: `6a16f1cc10026635280e9eae`, `6a16f1f230c71be05d4d5d24`, `6a16f1f27df0626e34448d58`

**Estado final na conta:** 2 templates apenas:
- `New Template` (ID `69e8c5b5f5da750e3cb35ee3`, builder, criado antes da execução — não mexi)
- `PX3_MASTER` (ID `6a16f1f3525dc258073ba2b3`, html, o nosso)

---

## Como usar o PX3_MASTER nos 10 emails dos 2 fluxos

Pra cada email do workflow:

1. Abrir o workflow no Linkia
2. Adicionar/editar a ação "Send Email"
3. Em "Template", selecionar **PX3_MASTER**
4. Editar inline:
   - **Subject:** assunto do briefing
   - **Pre-header:** trocar o placeholder `[PRE-HEADER AQUI - ...]` por 1 linha
   - **Título:** trocar `[TÍTULO PRINCIPAL DO EMAIL AQUI]`
   - **Parágrafos:** trocar `[PARÁGRAFO 1 ...]`, etc
   - **CTA:** trocar `[URL_DO_CTA]` e `[TEXTO DO BOTÃO]`
   - **P.S.:** trocar `[Mensagem curta de reforço. ...]`
   - **Assinatura:** trocar `[NOME ASSINATURA]`
5. Salvar como **versão do email do workflow** (NÃO sobrescrever o master)

**Importante:** ensinar a Amanda/equipe a editar o template específico de cada email, NUNCA o `PX3_MASTER` original — esse é o source of truth.

### Blocos opcionais que podem ser removidos por email:
- Bloco `<!-- INÍCIO IMAGEM OPCIONAL -->` ... `<!-- FIM IMAGEM OPCIONAL -->` (remover se o email não tiver banner)
- Bloco `<!-- INÍCIO LISTA DE BULLETS OPCIONAL -->` ... `<!-- FIM LISTA DE BULLETS OPCIONAL -->` (remover se não tiver lista)
- Bloco `<!-- INÍCIO QUOTE OPCIONAL -->` ... `<!-- FIM QUOTE OPCIONAL -->` (remover se não tiver depoimento)

Cada email mantém ou remove esses blocos conforme briefing.

---

## Variáveis do GHL usadas no template

- `{{contact.first_name}}` — nome do contato (saudação)
- `{{unsubscribe_url}}` — link de descadastro (LGPD, OBRIGATÓRIO)
- `{{preferences_url}}` — link de preferências

Linkia substitui automaticamente no envio. Se algum desses não funcionar no Linkia (varia por conta), checar com Renato qual é o token correto que o sistema dele usa.
