Push Notifications
O canal mais rápido e barato do Romeo. Push chega em segundos, custa zero, e captura atenção imediata. Disponível em mobile (iOS/Android) e web (browsers modernos).
- Versão
- 2.0
- Atualizado
- junho/2026
- Providers
- FCM + APNs
- Status
- produção
Resumo
Push notifications são o primeiro canal de contato para notificações de alta urgência. Chegam instantaneamente, aparecem na lock screen do dispositivo e capturam atenção mesmo quando o usuário não está no app.
O Romeo usa push como canal primário para alertas em tempo real, com fallback para WhatsApp e SMS quando necessário. A estratégia é: push primeiro, escalar se não lido.
VantagemPush é gratuito (sem custo por mensagem), instantâneo (< 1s de latência) e onipresente (funciona em qualquer dispositivo moderno). É o canal mais eficiente do stack.
Arquitetura do sistema
O sistema de push usa Firebase Cloud Messaging (FCM) como camada de abstração, que roteia para APNs (iOS) e FCM nativo (Android/Web).
Ação no sistema gera notificação (ex: novo lead, visita agendada)
Sistema adiciona contexto: deep link, imagem, ações
Busca tokens de dispositivo do usuário (pode ter múltiplos)
Notificação enviada para FCM com payload estruturado
FCM roteia para APNs (iOS) ou entrega direta (Android/Web)
Callbacks de entrega e interação atualizados em tempo real
Componentes técnicos
| Componente | Tecnologia | Função |
|---|---|---|
| Token registry | PostgreSQL | Armazena tokens por usuário/dispositivo |
| Push queue | Redis Streams | Buffer para envio em batch |
| FCM client | Firebase Admin SDK | Interface com FCM |
| APNs passthrough | Via FCM | Entrega iOS sem setup direto |
| Web push | FCM + Service Worker | Push para browsers |
| Analytics | BigQuery | Métricas de entrega e engajamento |
Multi-device: um usuário pode ter múltiplos tokens (celular pessoal, celular trabalho, tablet, browser). Sistema envia para todos, mas deduplica se lido em qualquer um.
Push mobile (iOS/Android)
Push mobile é o principal canal de alertas em tempo real. Apps Romeo para iOS e Android registram token no primeiro acesso e mantêm atualizado.
Diferenças iOS vs Android
| Aspecto | iOS | Android |
|---|---|---|
| Permissão | Explícita (prompt obrigatório) | Implícita (padrão habilitado) |
| Taxa de opt-in | ~65% | ~95% |
| Entrega garantida | APNs com prioridade alta | FCM com prioridade alta |
| Rich media | Imagem, vídeo, áudio | Imagem |
| Ações | Até 4 botões | Até 3 botões |
| Notificação em foco | Controlável por app | Sempre aparece |
Estratégia de permissão iOS
Como iOS requer permissão explícita, o timing do prompt é crítico. O Romeo usa "pre-permission" flow:
- Não pede permissão no primeiro acesso
- Espera o usuário completar primeira ação relevante (ex: cadastrar imóvel)
- Mostra tela educativa explicando valor das notificações
- Só então dispara o prompt nativo do iOS
- Se negar, tenta novamente após 30 dias com contexto diferente
Taxa de opt-inCom essa estratégia, taxa de opt-in iOS subiu de 52% para 65%. Cada 1% representa ~200 usuários a mais recebendo alertas em tempo real.
Deep links
Toda push carrega deep link que abre a tela relevante no app:
| Notificação | Deep link | Tela destino |
|---|---|---|
| Novo lead | romeo://leads/{id} | Detalhe do lead |
| Visita agendada | romeo://visits/{id} | Detalhe da visita |
| Proposta recebida | romeo://proposals/{id} | Detalhe da proposta |
| Mensagem nova | romeo://chat/{thread_id} | Conversa específica |
| Pagamento vencendo | romeo://payments/{id} | Detalhe do pagamento |
Push web (browsers)
Push web permite notificar usuários desktop mesmo quando não estão com o Romeo aberto. Funciona via Service Worker em browsers modernos.
Suporte por browser
| Browser | Suporte | Market share Romeo |
|---|---|---|
| Chrome | Completo | 68% |
| Firefox | Completo | 8% |
| Safari (macOS) | Parcial (desde v16) | 12% |
| Edge | Completo | 9% |
| Safari (iOS) | Via PWA apenas (desde iOS 16.4) | 3% |
Fluxo de opt-in web
Após usuário completar ação relevante (ex: criar lead), mostra banner explicando benefícios de notificações.
Se usuário clica "Habilitar", browser mostra prompt nativo de permissão. Taxa de conversão do banner: 34%.
Se aceito, Service Worker é registrado e token FCM é salvo. Notificações funcionam mesmo com browser fechado.
Fallback: usuários que negam push web recebem notificações in-app (badge, dropdown) quando acessam a plataforma. Não perdemos comunicação, apenas imediatismo.
Segmentação de audiência
Nem toda notificação vai para todos. O sistema permite segmentar audiência por atributos do usuário, comportamento e contexto.
Critérios de segmentação
| Critério | Exemplos | Uso típico |
|---|---|---|
| Role | Corretor, Gestor, Proprietário, Inquilino | Notificações específicas por papel |
| Localização | Estado, Cidade, Região | Campanhas regionais |
| Comportamento | Ativo, Inativo 7d, Inativo 30d | Reengajamento |
| Dispositivo | iOS, Android, Web | Features específicas |
| Plano | Free, Pro, Enterprise | Upsell, features beta |
| Eventos | Visitou imóvel, Fez proposta, Assinou | Follow-up contextual |
Audiências salvas
O sistema mantém audiências pré-configuradas para casos de uso comuns:
| Audiência | Definição | Tamanho atual |
|---|---|---|
| all_users | Todos com push habilitado | ~18.000 |
| active_brokers | Corretores com ação nos últimos 7 dias | ~2.400 |
| inactive_30d | Usuários sem ação em 30 dias | ~3.200 |
| mobile_only | Só usam app mobile | ~8.500 |
| web_only | Só usam web | ~4.200 |
| premium_users | Planos Pro ou Enterprise | ~1.800 |
| new_users_7d | Cadastrados nos últimos 7 dias | ~450 |
A/B TestingCampanhas de push suportam A/B test. Sistema divide audiência em grupos, envia variantes diferentes e mede CTR para determinar vencedor antes de expandir.
Rich notifications
Além de texto simples, push pode incluir imagens, ações interativas e dados estruturados para experiência mais rica.
Elementos suportados
| Elemento | iOS | Android | Web |
|---|---|---|---|
| Imagem grande | Sim (1:1 ou 2:1) | Sim (2:1) | Sim (limitado) |
| Ícone customizado | Não | Sim | Sim |
| Ações (botões) | Até 4 | Até 3 | Até 2 |
| Resposta inline | Sim | Sim | Não |
| Badge count | Sim | Não | Não |
| Som customizado | Sim | Sim | Não |
| Prioridade visual | Sim | Sim | Parcial |
Exemplos de rich notifications
- Título: "Novo lead interessado!"
- Corpo: "Maria Silva quer visitar Ap na Rua das Flores"
- Imagem: Foto principal do imóvel
- Ações: [Ver lead] [Ligar agora]
- Título: "Visita confirmada para amanhã"
- Corpo: "João Silva, Quinta 14h, Rua das Flores 123"
- Imagem: Mapa com pin da localização
- Ações: [Ver detalhes] [Abrir Waze]
- Título: "Nova proposta de R$ 2.800/mês"
- Corpo: "Pedro Souza fez proposta para o Ap Centro"
- Imagem: Foto do imóvel
- Ações: [Aceitar] [Ver proposta] [Contraproposta]
Fallback: se o dispositivo não suporta elementos rich, a notificação é enviada em formato simples (título + corpo). Nunca falha silenciosamente.
Métricas e otimização
Push é monitorado em tempo real com métricas de entrega, engajamento e qualidade para otimização contínua.
KPIs principais
| Métrica | Meta | Atual | Alerta |
|---|---|---|---|
| Taxa de entrega | > 99% | 99.6% | < 98% |
| Taxa de abertura (mobile) | > 25% | 32% | < 20% |
| Taxa de abertura (web) | > 15% | 18% | < 10% |
| Latência P50 | < 500ms | 380ms | > 1s |
| Latência P99 | < 3s | 1.8s | > 5s |
| Taxa de opt-out | < 0.5% / mês | 0.3% | > 1% |
| Tokens inválidos | < 5% | 3.2% | > 10% |
Breakdown por plataforma
| Plataforma | Tokens ativos | Entrega | CTR |
|---|---|---|---|
| iOS | 7.200 | 99.8% | 34% |
| Android | 9.100 | 99.5% | 29% |
| Chrome (web) | 3.400 | 99.2% | 19% |
| Firefox (web) | 420 | 98.9% | 16% |
| Safari (web) | 680 | 97.8% | 14% |
Otimizações implementadas
- Batching: notificações em rajada são agrupadas (ex: 5 leads em 1 min = 1 push com "5 novos leads")
- Quiet hours: push não-urgente respeitam horário silencioso do usuário
- Token cleanup: tokens sem interação em 90 dias são removidos do registro
- Priority tuning: FCM priority ajustado por tipo (high para P1/P2, normal para outros)
- Collapse key: múltiplas pushs do mesmo tipo substituem a anterior (evita flood)
DashboardMétricas de push disponíveis em tempo real no painel de operações. Alertas automáticos via Slack se entrega cai ou latência aumenta.
Testes de horário
A/B tests mostraram que horário ideal para push varia por tipo:
| Tipo de push | Horário ideal | CTR médio |
|---|---|---|
| Novo lead | Imediato (qualquer hora) | 38% |
| Relatório diário | 8h–9h | 22% |
| Reengajamento | 11h–12h ou 18h–19h | 15% |
| Novidades do produto | 14h–15h | 12% |
| Lembrete de ação | 10h–11h | 28% |