A recuperação de receita depende do plano: os endpoints
/v1/recovery/* respondem 403 PLAN_FEATURE_LOCKED quando o plano não inclui o recurso. O número de automações ativas também é limitado pelo plano.Eventos
Qualquer outro nome de evento é aceito se houver uma automação escutando ele. Sem automação e sem template, o ingest termina com
UNKNOWN_EVENT.
Como funciona
Setup
1
Pegue o endpoint da sua organização
{ code, hmacSecret, active, url }. O endpoint nasce com active: false. Os eventos da sua plataforma vão para https://api.ararahq.com/l/{code}.2
Provisione os templates padrão (opcional)
{ data: [{ event, templateName, status, error }] }. Os templates precisam ser aprovados pela Meta antes do primeiro envio.3
Ou vincule um template seu a um evento
templateId é o UUID do template. A seção Variáveis, abaixo, explica o variableMapping.4
Ative o endpoint
REJECTED com reason: NO_ACTIVE_AUTOMATION.Enviando um evento
code.
A resposta é
202 com { ingestId, status, reason, messageId }.
Assinatura
A assinatura do endpoint de recuperação é calculada só sobre o corpo bruto (sem timestamp). Se o header vier e não bater, a resposta é401 RECOVERY_HMAC_INVALID. Envie sempre: é o que impede terceiros de disparar mensagens com o seu código.
POST /v1/recovery/endpoint/regenerate gera novo code e novo hmacSecret (a URL antiga para de funcionar).
Os webhooks que a Arara envia para você usam outro esquema (HMAC de
{timestamp}.{rawBody}). Ver Webhooks.Variáveis
variables.linknão entra no corpo do template: vira o destino do botão de link do template, encurtado e rastreado.- As demais chaves de
variablessão enviadas como variáveis do template na ordem alfabética das chaves. variableMappingrenomeia chaves antes dessa ordenação. Pra controlar a ordem, mapeie cada chave para"1","2","3"na ordem em que aparecem no template (até 9 variáveis).
Motivos de rejeição
Excesso de eventos por organização responde
429 RECOVERY_RATE_LIMITED com Retry-After.
Configs, ingests e métricas
ingestsresponde{ content, totalPages, totalElements }, comid,eventType,phone,status,rejectReasonereceivedAtpor item.statsaceitaperiod=TODAY(default),YESTERDAY,LAST_7DouLAST_30De responde{ period, valueRecovered, valueRecoveredDelta, byEvent }. O valor recuperado vem das conversões que você reporta (ver Atribuição de conversão).
Testando sem evento real
Próximos passos
Receita: recuperar carrinho
Fluxo de carrinho abandonado de ponta a ponta.
Atribuição
Reporte a venda para medir o valor recuperado.