Campanhas de origem — captura de UTM no pagamento
TLDR: capturar os parâmetros UTM no frontend, salvá-los no pagamento e mostrar no admin quais campanhas estão trazendo venda para cada checkout.
Contexto
Não há como saber de onde os checkouts estão sendo promovidos. Os parâmetros UTM chegam na URL do checkout mas se perdem — nada é persistido.
Objetivos
- No admin de um checkout, o administrador visualiza quais campanhas chegaram àquele checkout, a partir da informação salva nos pagamentos.
- Quando o pagamento é criado no frontend, os campos de UTM são enviados e salvos no pagamento.
Fora de escopo
— (não registrado na spec original)
Mudanças
Modelo Payment
Adicionar os campos:
| Campo | Nome | Descrição |
|---|---|---|
utm_source |
UTM Source | Referencia o utm_source |
utm_medium |
UTM Medium | Referencia o utm_medium |
utm_campaign |
UTM Campaign | Referencia o utm_campaign |
utm_term |
UTM Term | Referencia o utm_term |
utm_content |
UTM Content | Referencia o utm_content |
utm_id |
UTM ID | Referencia o utm_id |
Controller e API
Na criação do pagamento no checkout, app/controllers/api/v1/checkout_controller.rb deve receber os params de UTM e salvá-los no pagamento, do mesmo modo como já são salvos os dados do Vision.
ActiveAdmin
- Em Payments, listar todos os campos de UTM.
- Na listagem de Payments, filtros com todos os
sourcejá utilizados. - Na tela interna do checkout, uma view com gráfico mostrando quais campanhas venderam.
Roadmap
- [x] Criar os campos de UTM em
Payment - [x] Modificar o checkout controller e o service para salvar os campos
- [x] Criar
UtmParampara guardar os valores únicos, evitando consulta pesada empayments - [x] Salvar
UtmParamdepois que um pagamento for criado - [x] Criar filtros em Payment
- [x] Mostrar os campos no show de Payment
- [x] Mostrar os campos no show de Checkout, com gráfico ou tabela
Como verificar
— (não registrado na spec original)
Sugestão a partir do estado atual do código: abrir um checkout com parâmetros UTM na URL, concluir uma compra e conferir os campos gravados no Payment e o registro correspondente em UtmParam.
Documentação
Implementação: app/models/utm_param.rb, app/controllers/api/v1/checkout_controller.rb, app/admin/payments.rb, app/admin/checkouts.rb.