Saltar al contenido

Coletor do app (pageviews, etapas do funil e heartbeat)

POST/api/analytics/events

Auth
Pública
X-CommunityId
X-CommunityId Envía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.

**Público**: visitante deslogado também envia. Com `Authorization`, os eventos levam o perfil; no primeiro lote logado de uma sessão, os eventos anônimos dessa mesma sessão (mesma aba) passam a ser desse perfil, marcados `wasAnonymous`.

Lote de 1 a 50 eventos de uma sessão (`sessionId` do `sessionStorage`, 8 a 64 caracteres `[A-Za-z0-9_-]`). `type`: `page_view`, `funnel_step` ou `heartbeat` (a cada 60 s com a aba visível; alimenta só o "online agora" e o "tempo real", não é gravado). `funnelStep` aceito do app: `catalog`, `product`, `checkout_identify`, `checkout_payment` (enviado e pago vêm dos pedidos). Nunca envie dado digitado.

O servidor guarda só a rota (sem query string; segmentos com cara de token ou e-mail são trocados), o host do `referrer`, as UTMs, device/navegador/sistema e o país (derivado do IP, que não é gravado). Robô ruim (UA vazio, `curl`, `python-requests`, headless) e o que passar de 120 eventos/min por sessão (600/min por IP) são descartados e só contados; buscadores e LLMs são contados pelo servidor do app. Responde **202** mesmo quando descarta (`dropped`). Aceita `text/plain` com o JSON no corpo (para `navigator.sendBeacon`, que não manda cabeçalho: aí a comunidade vai em `communityId` no corpo).

Headers

NombreTipoDescripción
X-CommunityIdopcionalstring (uuid)Comunidade. Sem o cabeçalho (sendBeacon), use `communityId` no corpo.

Cuerpo de la solicitud application/json

NombreTipoDescripción
communityIdopcionalstring (uuid)Só quando não há o cabeçalho X-CommunityId.
sessionIdobligatoriostring
eventsobligatorioobject[]
events[].typeobligatoriopage_view | funnel_step | heartbeat
events[].pathobligatoriostringRota canônica do app.
events[].spaceIdopcionalstring (uuid)
events[].moduleopcionalstring
events[].funnelStepopcionalcatalog | product | checkout_identify | checkout_payment
events[].productIdopcionalstring (uuid)
events[].planIdopcionalstring (uuid)
events[].referreropcionalstringURL de origem; só o host é guardado.
events[].utmSourceopcionalstring
events[].utmMediumopcionalstring
events[].utmCampaignopcionalstring
events[].occurredAtopcionalstring (date-time)Ajustado para no máximo 1 h no passado e nunca no futuro.

Respuestas

CódigoDescripción
202Lote recebido.
400Requisição inválida — falha de validação.
404Recurso não encontrado.

Ejemplo con curl

curl -X POST "https://api.memberfy.net/api/analytics/events" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"sessionId":"k3v9q2m8x1p7z5r4","events":[{}]}'