VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Engajamento: extras

RD Station Marketing

Verifica e opera a integração da loja com o RD Station Marketing: estado, teste de credenciais, evento de teste, cache de tokens, carrinhos abandonados e log.

O RD Station Marketing é uma ferramenta brasileira de automação de marketing. Com a integração ligada, a loja envia a ele eventos de e-commerce (pedido feito, pago, enviado, entregue, cancelado, reembolsado, checkout iniciado e carrinho abandonado), e o RD usa esses eventos para segmentar contatos e disparar fluxos de e-mail.

As credenciais (client_id, client_secret, refresh_token) e os ajustes (enabled, abandon_after_hours, abandon_limit) são configurados na tela do módulo rd-station-marketing, não por estas rotas. Aqui você apenas verifica e opera: ver o estado, testar as credenciais, mandar um evento de teste, limpar o cache de tokens, rodar a varredura de carrinhos abandonados e ler o log.

Como a autenticação com o RD funciona

A plataforma troca o refresh_token por um token de acesso temporário (OAuth2) e o guarda em cache por tenant. Os tokens nunca aparecem nas respostas: o client_id sai cortado nos 12 primeiros caracteres, e o segredo e o refresh token só aparecem como true ou false.

Todas as seis rotas exigem o módulo rd-station-marketing ligado (sem ele: 403 module_disabled) e o privilégio manage_settings.

Estado da integração

GET/api/v1/admin/rd-station/statusAdmin

Ver o estado e a configuração mascarada

Mostra se as credenciais estão preenchidas, os parâmetros da varredura de carrinhos e a situação do token em cache. Não chama o RD Station.

bash
curl "$BASE_URL/api/v1/admin/rd-station/status" \
  -H "Authorization: Bearer $TOKEN"
200Estado
json
{
  "module_slug": "rd-station-marketing",
  "enabled": true,
  "credentials_set": true,
  "client_id": "3f9a1c7e-2b4…",
  "client_secret_set": true,
  "refresh_token_set": true,
  "abandon_after_hours": 4,
  "abandon_limit": 50,
  "token_cache": { "state": "valid", "expires_at": "2026-10-12T01:04:10Z" },
  "api_base_url": "https://api.rd.services"
}

Campos da resposta

module_slugstring
Identificador do módulo.
enabledboolean
Chave "ativo" da configuração do módulo.
credentials_setboolean
true quando os três dados de credencial estão preenchidos.
client_idstring
Primeiros 12 caracteres do client id, seguidos de … quando é mais longo.
client_secret_setboolean
Se há client secret salvo.
refresh_token_setboolean
Se há refresh token salvo.
abandon_after_hoursinteger
Quantas horas um carrinho fica parado antes de ser considerado abandonado. Padrão 4.
abandon_limitinteger
Máximo de carrinhos processados por varredura. Padrão 50.
token_cache.statestring
validexpirednot_found
valid há token em cache dentro do prazo; expired há token vencido; not_found não há token (ou faltam credenciais).
token_cache.expires_atstring
Validade do token em cache, RFC 3339. Ausente em not_found.
api_base_urlstring
Endereço da API do RD Station usada pela plataforma.

Testar as credenciais

POST/api/v1/admin/rd-station/test-connectionAdmin

Forçar uma renovação de token para validar as credenciais

Ignora o cache e troca o refresh token por um novo token de acesso no RD Station. Se der certo, o token novo vira o do cache. Sem corpo.

bash
curl -X POST "$BASE_URL/api/v1/admin/rd-station/test-connection" \
  -H "Authorization: Bearer $TOKEN"
200Resultado do teste

O status HTTP é 200 mesmo quando o teste falha; quem diz se deu certo é ok.

json
{ "ok": true, "expires_at": "2026-10-12T01:04:10Z" }
json
{ "ok": false, "message": "rd-station: not configured" }

Campos da resposta

okboolean
true quando o RD aceitou as credenciais.
messagestring
Motivo da falha. Ausente quando ok é true.
expires_atstring
Validade do novo token, RFC 3339. Ausente quando ok é false.

Enviar um evento de teste

POST/api/v1/admin/rd-station/test-eventAdmin

Enviar um evento de e-commerce de teste ao RD Station

Monta um evento sintético (pedido de R$ 150,00, identificador começando em TEST-) com os mesmos construtores dos eventos reais e o envia ao RD para o e-mail informado. Use para conferir, no RD, se o contato e o evento chegam como esperado. O envio aparece no log da integração (última rota desta página).

Corpo da requisição

event_typestringobrigatório
ECOMMERCE_ORDER_PLACEDECOMMERCE_ORDER_PAIDECOMMERCE_CHECKOUT_STARTEDECOMMERCE_CART_ABANDONEDECOMMERCE_ORDER_FULFILLEDECOMMERCE_SHIPMENT_DELIVEREDECOMMERCE_ORDER_CANCELLEDECOMMERCE_ORDER_REFUNDED
Tipo do evento. Só os oito valores listados.
emailstringobrigatório
E-mail do contato que receberá o evento no RD. Ele será criado ou atualizado lá.
bash
curl -X POST "$BASE_URL/api/v1/admin/rd-station/test-event" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"ECOMMERCE_ORDER_PLACED","email":"qa@example.com"}'
200Evento enviado
json
{ "success": true, "event_type": "ECOMMERCE_ORDER_PLACED", "email": "qa@example.com" }

Limpar o cache de tokens

POST/api/v1/admin/rd-station/clear-cacheAdmin

Apagar os tokens de acesso em cache

Apaga os tokens de acesso guardados para a loja (no banco e na memória). O próximo envio renova o token sozinho. Use depois de trocar as credenciais ou quando o RD passar a recusar um token que ainda parece válido. Sem corpo.

bash
curl -X POST "$BASE_URL/api/v1/admin/rd-station/clear-cache" \
  -H "Authorization: Bearer $TOKEN"
200Cache limpo
json
{ "success": true, "deleted": 1 }

Campos da resposta

successboolean
Sempre true em sucesso.
deletedinteger
Quantos tokens foram apagados.

Varredura de carrinhos abandonados

POST/api/v1/admin/rd-station/abandoned-runAdmin

Rodar uma passada de carrinhos abandonados

Executa agora, sob demanda, a mesma passada que roda periodicamente: procura carrinhos parados há mais de abandon_after_hours e envia ao RD o evento ECOMMERCE_CART_ABANDONED de cada um, uma única vez por carrinho. Com dry_run: true ela só conta, sem enviar nada e sem marcar carrinhos como reportados. Faça um dry_run antes da primeira execução real.

Corpo da requisição

dry_runbooleanpadrão: false
true classifica os carrinhos sem enviar. O corpo inteiro é opcional.
bash
curl -X POST "$BASE_URL/api/v1/admin/rd-station/abandoned-run" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dry_run":true}'
200Resumo da passada
json
{ "scanned": 12, "sent": 9, "skipped": 3, "failed": 0, "dry_run": true }

Campos da resposta

scannedinteger
Carrinhos elegíveis encontrados (limitado por abandon_limit).
sentinteger
Enviados com sucesso. Em dry_run, quantos seriam enviados.
skippedinteger
Ignorados porque já foram reportados antes ou não têm identificador do contato.
failedinteger
Envios que falharam (só na execução real). São tentados de novo na próxima passada.
dry_runboolean
Repete o modo usado.

Ler o log

GET/api/v1/admin/rd-station/logsAdmin

Ler as entradas recentes do log da integração

Devolve as entradas mais recentes do log de atividade da integração (renovações de token, eventos enviados, falhas, passadas de carrinhos), da mais nova para a mais antiga.

Parâmetros de consulta

limitintegerpadrão: 50
Quantas entradas. Máximo 200; acima disso vale 200. Valor inválido ou menor que 1 vale 50.
bash
curl "$BASE_URL/api/v1/admin/rd-station/logs?limit=20" \
  -H "Authorization: Bearer $TOKEN"
200Entradas do log
json
{
  "count": 2,
  "logs": [
    {
      "id": 412,
      "level": "info",
      "event_type": "ECOMMERCE_ORDER_PLACED",
      "message": "Event sent to RD Station",
      "detail": { "email": "qa@example.com" },
      "created_at": "2026-10-11T21:05:12.331Z"
    },
    {
      "id": 411,
      "level": "info",
      "event_type": "TOKEN_REFRESH",
      "message": "OAuth2 access token refreshed",
      "created_at": "2026-10-11T21:05:11.902Z"
    }
  ]
}

Campos da resposta

countinteger
Entradas devolvidas.
logs[].idinteger
Número sequencial da entrada (não é UUID).
logs[].levelstring
infoerror
Gravidade.
logs[].event_typestring
Tipo do evento do RD, ou TOKEN_REFRESH, TOKEN_CACHE, ABANDONED_PASS. Pode estar ausente.
logs[].messagestring
Descrição curta, em inglês.
logs[].detailobject
Dados extras da entrada. Ausente quando não há.
logs[].created_atstring
RFC 3339, UTC.

Erros

StatusQuandoCorpo de exemplo
400test-event com event_type fora da lista, ou sem email, ou com a integração sem credenciais.{"error":"test_event_failed","detail":"rd-station: unsupported test event_type \"X\""}
400test-event com corpo que não é JSON.{"error":"invalid_body","detail":"invalid JSON body"}
400abandoned-run sem credenciais configuradas.{"error":"not_configured","detail":"..."}
401Sem token ou token expirado.{"error":"invalid or expired token"}
403Módulo desligado.{"error":"module_disabled","module":"rd-station-marketing"}
403Sem manage_settings.{"error":"insufficient privileges","privilege_required_any":["manage_settings"]}
500Falha interna ao ler o estado, limpar o cache, rodar a passada ou ler o log.{"error":"abandoned_pass_failed","detail":"..."}
502O RD Station recusou ou não respondeu ao test-event.{"error":"test_event_failed","detail":"..."}
503Serviço do RD Station não configurado no servidor.{"error":"rd_station_unavailable","detail":"RD Station service not configured on this server"}
Ordem para diagnosticar
  1. status: as credenciais estão set? 2. test-connection: o RD aceita? 3. test-event: o evento chega ao contato certo? 4. logs: o que a integração fez de verdade. Se o passo 2 passar e os eventos reais não aparecerem no RD, confira enabled no passo 1 e as entradas de erro no passo 4.
Evento de teste altera o contato no RD

O RD cria ou atualiza o contato do email informado e registra um pedido fictício de R$ 150,00. Use um e-mail de teste seu, nunca o de um cliente real.

Veja também

  • Engajamento e conteúdo
  • Publicidade
Anterior
Respostas de formulário
Próxima
Rotas de compatibilidade
Nesta página
  • Estado da integração
  • Testar as credenciais
  • Enviar um evento de teste
  • Limpar o cache de tokens
  • Varredura de carrinhos abandonados
  • Ler o log
  • Erros
  • Veja também