{"_id":"@aronpc/n8n-nodes-growthbook","name":"@aronpc/n8n-nodes-growthbook","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@aronpc/n8n-nodes-growthbook","version":"1.0.0","description":"Plugin para n8n: Integração com GrowthBook para feature flags e experimentos A/B","keywords":["n8n","n8n-node","growthbook","feature-flags","ab-testing","experiments"],"license":"MIT","homepage":"https://github.com/aron-cardoso/n8n-node-growthbook","author":{"name":"Aron Cardoso","email":"aronpeyroteo@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/aron-cardoso/n8n-node-growthbook.git"},"main":"dist/index.js","n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/GrowthBookApi.credentials.js"],"nodes":["dist/nodes/GrowthBook.node.js"]},"dependencies":{"@growthbook/growthbook":"^1.6.0","better-sqlite3":"^12.2.0"},"devDependencies":{"@types/jest":"^30.0.0","@types/node":"^18.11.9","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-n8n-nodes-base":"^1.0.0","husky":"^8.0.0","jest":"^30.0.4","lint-staged":"^15.0.0","n8n-workflow":"^1.0.0","prettier":"^3.0.0","ts-jest":"^29.4.0","typescript":"^5.8.3"},"scripts":{"build":"tsc && cp nodes/GrowthBook.svg dist/nodes/","dev":"tsc --watch","lint":"eslint . --ext .ts,.js","lint:fix":"eslint . --ext .ts,.js --fix","format":"prettier --write \"**/*.{ts,js,json,md}\"","format:check":"prettier --check \"**/*.{ts,js,json,md}\"","prepare":"husky install","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"engines":{"node":">=16.0.0"},"lint-staged":{"*.{ts,js}":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"_id":"@aronpc/n8n-nodes-growthbook@1.0.0","gitHead":"592970cacef9eb041936642f6da066281bb916d5","bugs":{"url":"https://github.com/aron-cardoso/n8n-node-growthbook/issues"},"_nodeVersion":"20.19.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Tsw6+AaiNYB+WBz+5eL1eRKkcMN1sqkUvvdFiQ9lHyM/JKWVm7wUnsvVqVX2RKpcA4jEiJbpeg+iNmNJn7FFZA==","shasum":"759f6bd4956198371e2dd5596590d472b9aa5ad0","tarball":"https://registry.npmjs.org/@aronpc/n8n-nodes-growthbook/-/n8n-nodes-growthbook-1.0.0.tgz","fileCount":10,"unpackedSize":56853,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICGVffQgBsgiC/xZkPHS71SELOTgKTI/SGyrd35Z9wW6AiEAmWqkRSK5q7G/hVfnKYjbYySpfXAeoDidstN8DLskY2A="}]},"_npmUser":{"name":"aronpc","email":"aronpeyroteo@gmail.com"},"directories":{},"maintainers":[{"name":"aronpc","email":"aronpeyroteo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-growthbook_1.0.0_1752520837765_0.12961253553730478"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-14T19:20:37.694Z","1.0.0":"2025-07-14T19:20:37.957Z","modified":"2025-07-14T19:20:38.207Z"},"maintainers":[{"name":"aronpc","email":"aronpeyroteo@gmail.com"}],"description":"Plugin para n8n: Integração com GrowthBook para feature flags e experimentos A/B","homepage":"https://github.com/aron-cardoso/n8n-node-growthbook","keywords":["n8n","n8n-node","growthbook","feature-flags","ab-testing","experiments"],"repository":{"type":"git","url":"git+https://github.com/aron-cardoso/n8n-node-growthbook.git"},"author":{"name":"Aron Cardoso","email":"aronpeyroteo@gmail.com"},"bugs":{"url":"https://github.com/aron-cardoso/n8n-node-growthbook/issues"},"license":"MIT","readme":"# n8n-nodes-growthbook\n\nPlugin para n8n: Integração com GrowthBook para feature flags e experimentos A/B\n\n## 🎯 Sobre\n\nEste plugin permite integrar o n8n com o GrowthBook, uma plataforma open-source de feature flags e experimentos A/B. Com ele, você pode:\n\n- ✅ Avaliar feature flags em tempo real com detecção automática de tipo\n- 🎯 Implementar lógica condicional baseada em features\n- 👥 Usar targeting por atributos de usuário\n- 🔧 Integrar com GrowthBook Cloud ou self-hosted\n- 🎨 Interface visual com ícone oficial do GrowthBook\n\n## 🚀 Instalação\n\n### Via npm (Recomendado)\n```bash\nnpm install n8n-nodes-growthbook\n```\n\n### Via desenvolvimento local\n1. Clone este repositório\n2. Execute `npm run build`\n3. Execute `npm link` para desenvolvimento local\n\n## ⚙️ Configuração\n\n### Credencial GrowthBook API\n\nConfigure a credencial no n8n:\n\n1. Vá em **Credentials** → **Add Credential**\n2. Selecione **GrowthBook API**\n3. Preencha os campos:\n\n| Campo | Descrição | Exemplo | Obrigatório |\n|-------|-----------|---------|-------------|\n| **Client Key** | Client Key do SDK do GrowthBook | `sdk-abc123...` | ✅ |\n| **API Host** | Endpoint da API do GrowthBook | `https://cdn.growthbook.io` | ✅ |\n| **Ativar Cache** | Cache local das features | `true` | ❌ |\n| **Tempo de Cache** | Tempo de vida do cache (segundos) | `300` | ❌ |\n| **Ativar Debug** | Logs detalhados para debugging | `false` | ❌ |\n| **Timeout** | Timeout das requisições (ms) | `10000` | ❌ |\n\n## 📦 Nó Disponível\n\n### 🔘 GrowthBook\n\nNó principal que avalia features do GrowthBook com detecção automática de tipo.\n\n#### 🎛️ Parâmetros\n\n| Parâmetro | Tipo | Descrição |\n|-----------|------|-----------|\n| **Feature** | Dropdown | Feature flag a ser avaliada (com detecção automática de tipo) |\n| **Attributes** | Lista chave-valor | Atributos para targeting do usuário |\n\n#### 🔄 Saídas Dinâmicas\n\nO nó detecta automaticamente o tipo da feature:\n\n- **🔘 Features Boolean**: 2 saídas\n  - **True**: Quando feature = `true`\n  - **False**: Quando feature = `false`\n\n- **📦 Features Value**: 1 saída\n  - **True / Value**: Sempre retorna o valor (string, number, object)\n\n#### 📊 Dados de Saída\n\n```json\n{\n  \"value\": true,\n  \"isOn\": true,\n  \"featureKey\": \"nova-interface\",\n  \"attributes\": {\n    \"id\": \"user-123\",\n    \"plan\": \"premium\"\n  },\n  \"detectedType\": \"boolean\"\n}\n```\n\n## 🎯 Exemplos de Uso\n\n### Exemplo 1: Feature Flag Boolean\n\n**Cenário:** Mostrar nova interface apenas para usuários premium.\n\n```\n[Trigger] → [GrowthBook] → [True: Nova Interface]\n                        → [False: Interface Antiga]\n```\n\n**Configuração:**\n- Feature: `🔘 nova-interface (Boolean)`\n- Attributes:\n  - `id`: `user-123`\n  - `plan`: `premium`\n\n### Exemplo 2: Feature com Valor\n\n**Cenário:** Personalizar cor do tema baseado no segmento.\n\n```\n[Trigger] → [GrowthBook] → [True/Value: Usar Cor]\n```\n\n**Configuração:**\n- Feature: `📦 theme-color (Value)`\n- Attributes:\n  - `id`: `user-456`\n  - `segment`: `vip`\n\n**Saída:**\n```json\n{\n  \"value\": \"#FF6B35\",\n  \"isOn\": true,\n  \"featureKey\": \"theme-color\",\n  \"detectedType\": \"value\"\n}\n```\n\n### Exemplo 3: A/B Testing\n\n**Cenário:** Testar diferentes call-to-actions.\n\n```\n[Webhook] → [GrowthBook] → [True: CTA Variação A]\n                        → [False: CTA Padrão]\n```\n\n**Configuração:**\n- Feature: `🔘 cta-experiment (Boolean)`\n- Attributes:\n  - `id`: `{{$json.userId}}`\n  - `country`: `BR`\n  - `device`: `mobile`\n\n## 🔧 Funcionalidades Avançadas\n\n### ✨ Detecção Automática de Tipo\n\nO nó analisa automaticamente cada feature e detecta seu tipo:\n\n- **Boolean**: Baseado no `defaultValue` ou `rules`\n- **Value**: Para strings, numbers, objects\n- **Ícones visuais**: 🔘 para boolean, 📦 para value\n\n### 🔄 Verificação Não Estrita\n\nPara máxima compatibilidade, o nó cria variações dos atributos:\n\n```javascript\n// Atributo original\n{ \"id\": \"123\" }\n\n// Variações criadas automaticamente\n{\n  \"id\": \"123\",\n  \"id_str\": \"123\",\n  \"id_num\": 123\n}\n```\n\n### 🐛 Logs de Debug\n\nAtive debug na credencial para logs detalhados:\n\n```\n[GrowthBook] ========== INÍCIO DA AVALIAÇÃO ==========\n[GrowthBook] Feature Key: nova-interface\n[GrowthBook] Tipo detectado automaticamente: boolean\n[GrowthBook] ✅ Boolean TRUE - enviando para saída \"True\"\n```\n\n## 🛠️ Desenvolvimento\n\n### Scripts Disponíveis\n\n```bash\nnpm run build    # Compila TypeScript + copia ícones\nnpm run dev      # Compila com watch mode\nnpm link         # Link para desenvolvimento local\n```\n\n### Estrutura do Projeto\n\n```\nn8n-nodes-growthbook/\n├── nodes/\n│   ├── GrowthBook.node.ts         # Nó principal\n│   └── growthbook-icon.png        # Ícone oficial\n├── credentials/\n│   └── GrowthBookApi.credentials.ts\n├── icons/\n│   └── growthbook-icon.png        # Ícone fonte\n└── dist/                          # Build final\n    ├── nodes/\n    │   ├── GrowthBook.node.js\n    │   └── growthbook-icon.png    # Ícone copiado\n    └── credentials/\n```\n\n## 🔍 Troubleshooting\n\n### Erro: \"Error fetching options from GrowthBook\"\n\n**Soluções:**\n\n1. **Verifique o Client Key**\n   - Use o Client Key (não Secret Key)\n   - Teste: `curl https://cdn.growthbook.io/api/features/SEU_CLIENT_KEY`\n\n2. **Verifique o API Host**\n   - GrowthBook Cloud: `https://cdn.growthbook.io`\n   - Self-hosted: sua URL sem barra final\n\n3. **Verifique as features**\n   - Certifique-se que há features criadas no GrowthBook\n\n### Feature sempre retorna false\n\n**Verificações:**\n\n1. **Targeting**: Confirme as regras no GrowthBook\n2. **Atributos**: Verifique nomes e valores dos atributos\n3. **Feature ativa**: Confirme que a feature está habilitada\n\n### Ícone não aparece\n\nSe o ícone não carregar, verifique:\n- Arquivo `dist/nodes/growthbook-icon.png` existe\n- Execute `npm run build` para recriar\n\n## 📚 Documentação\n\n- [SDK GrowthBook](https://docs.growthbook.io/lib/js)\n- [n8n: Criando nodes customizados](https://docs.n8n.io/integrations/creating-nodes/)\n- [GrowthBook: Feature Flags](https://docs.growthbook.io/features)\n\n## 📄 Licença\n\nMIT License - veja [LICENSE](LICENSE) para detalhes.\n\n## 🤝 Contribuição\n\nContribuições são bem-vindas! Por favor:\n\n1. Fork o projeto\n2. Crie uma branch para sua feature\n3. Commit suas mudanças\n4. Push para a branch\n5. Abra um Pull Request\n\n---\n\n**Desenvolvido com ❤️ para facilitar experimentação e feature flags em automações n8n.** ","readmeFilename":"README.md","_rev":"1-896d0d96207197b3aa55610532a50ea7"}