Workflows testados e prontos para usar no seu n8n. Copie, cole e adapte às suas necessidades.
Objetivo: Relatório automático das vendas do dia anterior.
Workflow: Dashboard Vendas Diário
Trigger: Schedule (09:00 todos os dias)Estrutura:
[Schedule] → [Hotmart: Sales] → [Set: Calculations] → [Gmail: Send Report]
Configuração Hotmart:
Resource: Sales
Operation: Get Sales History
Date Mode: Quick Period
Quick Period: Yesterday
Return All: true
Cálculos (Set Node):
const vendas = $input.all();
const totalVendas = vendas.length;
const totalReceita = vendas.reduce((sum, v) => sum + v.purchase.price.value, 0);
const ticketMedio = totalReceita / totalVendas;
// Top produtos
const produtos = {};
vendas.forEach(v => {
const nome = v.product.name;
produtos[nome] = (produtos[nome] || 0) + 1;
});
const topProduto = Object.entries(produtos)
.sort(([,a], [,b]) => b - a)[0];
return [{
json: {
data: new Date().toLocaleDateString('pt-BR'),
totalVendas,
totalReceita: `R$ ${(totalReceita/100).toLocaleString('pt-BR', {minimumFractionDigits: 2})}`,
ticketMedio: `R$ ${(ticketMedio/100).toLocaleString('pt-BR', {minimumFractionDigits: 2})}`,
topProduto: topProduto ? `${topProduto[0]} (${topProduto[1]} vendas)` : 'N/A'
}
}];Email Template:
<h2>📊 Relatório de Vendas - {{ $json.data }}</h2>
<div style="font-family: Arial; background: #f5f5f5; padding: 20px;">
<div style="background: white; padding: 20px; border-radius: 8px;">
<h3>Métricas do Dia</h3>
<ul>
<li><strong>Total de Vendas:</strong> {{ $json.totalVendas }}</li>
<li><strong>Receita Total:</strong> {{ $json.totalReceita }}</li>
<li><strong>Ticket Médio:</strong> {{ $json.ticketMedio }}</li>
<li><strong>Produto Mais Vendido:</strong> {{ $json.topProduto }}</li>
</ul>
</div>
</div>Objetivo: Notificação instantânea via Discord quando assinatura é cancelada.
[Hotmart Trigger] → [Filter: Cancellations] → [Discord: Alert]
Configuração Trigger:
Events: Subscription Cancellation
Mode: Smart (separate outputs)
Configuração Discord:
const data = $json.data;
const mensagem = {
content: `🚨 **ASSINATURA CANCELADA**`,
embeds: [{
title: "Cancelamento Detectado",
color: 15158332, // Vermelho
fields: [
{
name: "Cliente",
value: data.buyer.name,
inline: true
},
{
name: "Email",
value: data.buyer.email,
inline: true
},
{
name: "Produto",
value: data.product.name,
inline: false
},
{
name: "Data do Cancelamento",
value: new Date(data.subscription.date_next_charge).toLocaleDateString('pt-BR'),
inline: true
}
],
timestamp: new Date().toISOString()
}]
};
return [{ json: mensagem }];Objetivo: Relatório inteligente toda segunda-feira.
[Schedule: Monday 8AM] → [Hotmart IA] → [Slack: Strategic Report]
Comando IA:
"Análise executiva da semana passada com insights estratégicos,
incluindo performance de produtos, tendências de vendas,
oportunidades identificadas e recomendações de ação para esta semana.
Foque em métricas de crescimento e pontos de atenção."
Processamento da Resposta:
const aiResponse = $json;
const insights = aiResponse.insights;
return [{
json: {
titulo: `📊 Relatório Estratégico - Semana ${new Date().getWeek()}`,
periodo: `${insights.period_analyzed}`,
metricas: {
vendas: insights.metrics.total_sales,
receita: insights.metrics.revenue,
crescimento: insights.metrics.growth_rate
},
topInsights: insights.recommendations.slice(0, 3),
acoes: insights.action_items || [],
alertas: insights.warnings || []
}
}];Objetivo: Sincronizar novos clientes automaticamente.
[Hotmart Trigger: Purchase] → [Set: Format Data] → [Google Sheets: Append]
Formatação de Dados:
const purchase = $json.data;
return [{
json: {
"Data da Compra": new Date(purchase.purchase.approved_date).toLocaleDateString('pt-BR'),
"Nome": purchase.buyer.name,
"Email": purchase.buyer.email,
"Telefone": purchase.buyer.phone || '',
"Produto": purchase.product.name,
"Valor": `R$ ${(purchase.purchase.price.value/100).toFixed(2)}`,
"Status": purchase.purchase.status,
"Transação": purchase.purchase.transaction,
"Afiliado": purchase.affiliates?.[0]?.name || 'Venda Direta',
"UTM Source": purchase.purchase.utm?.source || '',
"UTM Campaign": purchase.purchase.utm?.campaign || ''
}
}];Objetivo: Responder dúvidas automáticas sobre produtos.
[Webhook: WhatsApp] → [Switch: Message Type] → [Hotmart: Product Info] → [WhatsApp: Reply]
Lógica de Roteamento:
const message = $json.message.toLowerCase();
if (message.includes('produto') || message.includes('curso')) {
return [{ json: { action: 'product_info' } }];
} else if (message.includes('pagamento') || message.includes('compra')) {
return [{ json: { action: 'payment_info' } }];
} else if (message.includes('acesso') || message.includes('login')) {
return [{ json: { action: 'access_help' } }];
} else {
return [{ json: { action: 'general_help' } }];
}Objetivo: Identificar clientes em risco de cancelamento.
[Schedule: Daily] → [Hotmart: Subscriptions] → [AI Analysis] → [Email: Alert List]
Comando IA para Análise:
"Analise estas assinaturas e identifique clientes em risco de churn
baseado em padrões de pagamento, tempo de assinatura, engajamento
e comportamento histórico. Priorize por risco e sugira ações de retenção."
Objetivo: Criar audiências customizadas baseadas em comportamento.
[Schedule] → [Hotmart: Multiple Endpoints] → [AI Segmentation] → [Facebook Ads: Audiences]
Estratégia Multi-Endpoint:
// Combinar dados de vendas, assinaturas e área de membros
const workflows = [
{ endpoint: 'sales', period: 'last_30_days' },
{ endpoint: 'subscriptions', status: 'active' },
{ endpoint: 'club', engagement: 'low' }
];
// A IA processará todos os dados para criar segmentos
return workflows.map(w => ({ json: w }));Objetivo: Oferecer produtos relacionados automaticamente.
[Trigger: Purchase] → [Hotmart: Customer History] → [AI Recommendations] → [Email: Offers]
Lógica de Recomendação:
const customerHistory = $json.customer_purchases;
const currentPurchase = $json.current_purchase;
// IA analisa histórico e sugere próximos produtos
const aiCommand = `
Baseado no histórico de compras deste cliente:
${JSON.stringify(customerHistory)}
E na compra atual:
${JSON.stringify(currentPurchase)}
Sugira os 3 melhores produtos para oferecer como upsell/cross-sell,
explicando o motivo de cada sugestão e a melhor estratégia de abordagem.
`;
return [{ json: { ai_command: aiCommand } }];Objetivo: Métricas executivas atualizadas em tempo real.
[Multiple Triggers] → [Data Aggregation] → [Real-time Dashboard API]
Agregação de Dados:
// Combinar múltiplas fontes em tempo real
const metrics = {
vendas_hoje: await getHotmartData('sales', 'today'),
assinaturas_ativas: await getHotmartData('subscriptions', 'active'),
receita_mes: await getHotmartData('sales', 'current_month'),
churn_rate: await calculateChurnRate(),
ltv_medio: await calculateLTV(),
conversion_rate: await calculateConversion()
};
// Atualizar dashboard via API
return [{ json: { dashboard_update: metrics } }];Objetivo: Responder perguntas complexas sobre vendas.
[Slack Command] → [Hotmart IA] → [Slack Response]
Exemplos de Comandos:
/vendas "Qual o melhor dia da semana para lançar produtos?"
/vendas "Compare performance dos afiliados este mês"
/vendas "Identifique padrões sazonais nas vendas"
/vendas "Sugira estratégias para aumentar ticket médio"
Objetivo: Prever receita dos próximos meses.
[Monthly Schedule] → [Hotmart: Historical Data] → [AI Forecasting] → [Executive Report]
Comando IA Preditiva:
"Baseado nos dados históricos de vendas dos últimos 12 meses,
analise tendências, sazonalidade e padrões de crescimento para
prever a receita dos próximos 3 meses. Inclua cenários otimista,
realista e pessimista, com fatores que podem influenciar cada cenário."
Objetivo: Sugerir ajustes de preço baseados em dados.
[Weekly Schedule] → [Market Analysis] → [Hotmart Performance] → [AI Price Optimization]
Análise Multifatorial:
const factors = {
sales_performance: await getProductPerformance(),
market_competition: await getCompetitorPrices(),
customer_feedback: await getCustomerSentiment(),
seasonal_trends: await getSeasonalData(),
conversion_rates: await getConversionMetrics()
};
const aiAnalysis = `
Analise estes fatores para cada produto:
${JSON.stringify(factors)}
Sugira ajustes de preço que maximizem receita considerando:
- Elasticidade de demanda
- Posicionamento competitivo
- Valor percebido pelo cliente
- Impacto na conversão
- Margem de lucro otimizada
`;function formatCurrency(value) {
return new Intl.NumberFormat('pt-BR', {
style: 'currency',
currency: 'BRL'
}).format(value / 100);
}function getPeriodDates(period) {
const today = new Date();
const periods = {
'hoje': [today, today],
'ontem': [new Date(today - 86400000), new Date(today - 86400000)],
'ultimos_7_dias': [new Date(today - 7 * 86400000), today],
'ultimos_30_dias': [new Date(today - 30 * 86400000), today],
'mes_atual': [new Date(today.getFullYear(), today.getMonth(), 1), today]
};
return periods[period] || [today, today];
}async function hotmartRequest(config, retries = 3) {
try {
return await makeRequest(config);
} catch (error) {
if (error.status === 429 && retries > 0) {
await new Promise(resolve => setTimeout(resolve, 60000)); // 1 min
return hotmartRequest(config, retries - 1);
}
throw error;
}
}Antes de colocar em produção:
- ✅ Credenciais configuradas e testadas
- ✅ Rate limiting implementado
- ✅ Error handling configurado
- ✅ Logs estruturados adicionados
- ✅ Testado com dados reais
- ✅ Monitoramento configurado
- ✅ Backup/rollback planejado
Criou um workflow útil? Compartilhe na comunidade!
💡 Dica: Adapte os exemplos às suas necessidades específicas. Todos os workflows foram testados com dados reais.