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

# Recompra, frequência e valor do cliente

> Como calcular taxa de recompra, frequência de compra, LTV, clientes ativos, segmentos RFV e opt-in a partir da base de clientes

Todos os indicadores desta página saem de uma única rota: [Clientes (CRM)](/crm-parceiro/clientes). Ela devolve o perfil de compra já calculado pela Repediu para cada cliente — não é preciso reconstruir histórico de pedidos para chegar em nenhum destes números.

<Warning>
  `GET /customers` não aceita `from`/`to` — é sempre a base completa da loja. Todos os indicadores desta página (exceto a nota média de avaliação, no fim) refletem a base inteira, não um período filtrado.
</Warning>

## Taxa de recompra

**Pergunta:** que fração da minha base já comprou mais de uma vez?

```bash Requisição theme={null}
curl --request GET \
  --url 'https://public-api.repediu.com.br/v1/stores/{merchantId}/customers?limit=500' \
  --header 'Authorization: Bearer <token>'
```

Pagine com `cursor`/`nextCursor` até esgotar a base e conte:

```
repeaters = clientes com purchaseCount > 1
taxaDeRecompra = repeaters / totalDeClientes * 100
```

```json Resposta (exemplo de item) theme={null}
{
  "customerId": 18452,
  "purchaseCount": 14,
  "totalSpent": 1063.60,
  "avgDaysBetweenPurchases": 21
}
```

## Frequência de compra

**Pergunta:** com que frequência (em compras por mês) os clientes recorrentes compram?

Calculada só entre quem já repetiu (`purchaseCount > 1`) e tem intervalo medível (`avgDaysBetweenPurchases > 0`):

```
frequenciaPorCliente = 30 / avgDaysBetweenPurchases
frequenciaMedia = média(frequenciaPorCliente) entre os recompradores
```

<Note>
  Clientes com uma única compra ficam de fora — não há intervalo entre pedidos para medir.
</Note>

## LTV médio

**Pergunta:** qual o valor médio gerado por cliente, considerando toda a base?

```
ltvMedio = soma(totalSpent de todos os clientes) / totalDeClientes
```

Divida pelo total da base, não só por quem tem `purchaseCount > 1` — o objetivo é o valor médio por contato, e clientes de compra única devem puxar a média para baixo de propósito.

## Clientes ativos

**Pergunta:** quantos clientes estão ativos (compraram recentemente)?

```
dataDeCorte = hoje - 90 dias
ativo = lastPurchaseAt >= dataDeCorte
inativos = totalDeClientes - ativos
```

<Note>
  90 dias é a janela usada no nosso dashboard de referência, não um valor fixo da API — ajuste ao ciclo de recompra do seu negócio.
</Note>

## Segmentos (RFV)

**Pergunta:** como minha base está distribuída entre os grupos de RFV (campeões, fiéis, em risco...)?

O campo `rfvStatus` vem em texto livre, com até 11 variações. Agrupe em macro-segmentos antes de exibir:

| `rfvStatus` contém                                                                           | Macro-segmento    |
| -------------------------------------------------------------------------------------------- | ----------------- |
| campeões                                                                                     | Clientes campeões |
| fiéis                                                                                        | Clientes fiéis    |
| lealdade potencial, potencial fiéis, clientes recentes, promissor(es)                        | Promissores       |
| em risco, precisam de atenção, prestes a hibernar, não pode perdê-los, hibernando/hibernados | Clientes em risco |
| perdidos                                                                                     | Clientes perdidos |

```
segmentos = agrupar clientes por macro-segmento(rfvStatus), contando quantos em cada um
```

<Tip>
  Normalize acentuação e caixa antes de comparar (`rfvStatus.toLowerCase()` sem acentos) — o texto é livre e pode variar.
</Tip>

## Opt-in por canal

**Pergunta:** quantos clientes aceitam contato por WhatsApp ou e-mail?

```
optInWhatsapp = clientes com whatsappOptin = true
optInEmail = clientes com emailOptin = true
```

Útil para estimar o alcance real de uma campanha antes de criá-la em [Campanhas](/crm-parceiro/campanhas).

## Satisfação (nota média de avaliação)

**Pergunta:** qual a nota média das avaliações no período? (a API não tem um campo de NPS — esta é a alternativa mais próxima)

```bash Requisição theme={null}
curl --request GET \
  --url 'https://public-api.repediu.com.br/v1/stores/{merchantId}/ratings?from=2026-08-01&to=2026-08-31' \
  --header 'Authorization: Bearer <token>'
```

```
notaMedia = média(stars) dos itens com ratingDate dentro do período pedido
```

<Warning>
  Se você buscar [Avaliações](/crm-parceiro/avaliacoes) com uma janela mais ampla que o período que vai exibir (por exemplo, para achar um mês de referência), refiltre os itens por `ratingDate` antes de calcular a média — a API não faz esse recorte por você além do `from`/`to` da chamada.
</Warning>
