Skip to content
Back to skills

N8n Expression Syntax

ASecurity

Valide a sintaxe de expressões n8n e corrija erros comuns. Use ao escrever expressões n8n, usando sintaxe {{}}, acessar variáveis $json/$node, solucionar erros de expressão ou trabalhar com dados de webhook em workflows.

  • 11 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
developmentjavascriptgojavanodeexpressapidatabase

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add artubss/SKILLS-CLAUDE-CODE --skill n8n-expression-syntax --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of N8n Expression Syntax?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for N8n Expression Syntax
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artubss-n8n-expression-syntax/badge)](https://www.skillsdirectory.com/skills/artubss-n8n-expression-syntax)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: n8n-expression-syntax
description: Valide a sintaxe de expressões n8n e corrija erros comuns. Use ao escrever expressões n8n, usando sintaxe {{}}, acessar variáveis $json/$node, solucionar erros de expressão ou trabalhar com dados de webhook em workflows.
---

# Sintaxe de Expressões n8n

Guia especializado para escrever expressões n8n corretas em workflows.

---

## Formato de Expressão

Todo conteúdo dinâmico em n8n usa **chaves duplas**:

```
{{expression}}
```

**Exemplos**:
```
✅ {{$json.email}}
✅ {{$json.body.name}}
✅ {{$node["HTTP Request"].json.data}}
❌ $json.email  (sem chaves - tratado como texto literal)
❌ {$json.email}  (chaves simples - inválido)
```

---

## Variáveis Principais

### $json - Saída do Nó Atual

Acesse dados do nó atual:

```javascript
{{$json.fieldName}}
{{$json['field with spaces']}}
{{$json.nested.property}}
{{$json.items[0].name}}
```

### $node - Referencie Outros Nós

Acesse dados de qualquer nó anterior:

```javascript
{{$node["Node Name"].json.fieldName}}
{{$node["HTTP Request"].json.data}}
{{$node["Webhook"].json.body.email}}
```

**Importante**:
- Nomes de nós **devem** estar entre aspas
- Nomes de nós são **sensíveis a maiúsculas/minúsculas**
- Devem corresponder exatamente ao nome do nó no workflow

### $now - Timestamp Atual

Acesse data/hora atual:

```javascript
{{$now}}
{{$now.toFormat('yyyy-MM-dd')}}
{{$now.toFormat('HH:mm:ss')}}
{{$now.plus({days: 7})}}
```

### $env - Variáveis de Ambiente

Acesse variáveis de ambiente:

```javascript
{{$env.API_KEY}}
{{$env.DATABASE_URL}}
```

---

## 🚨 CRÍTICO: Estrutura de Dados de Webhook

**Erro Mais Comum**: Dados de webhook **NÃO** estão na raiz!

### Estrutura de Saída do Nó Webhook

```javascript
{
  "headers": {...},
  "params": {...},
  "query": {...},
  "body": {           // ⚠️ DADOS DO USUÁRIO ESTÃO AQUI!
    "name": "John",
    "email": "john@example.com",
    "message": "Hello"
  }
}
```

### Acesso Correto aos Dados de Webhook

```javascript
❌ ERRADO: {{$json.name}}
❌ ERRADO: {{$json.email}}

✅ CORRETO: {{$json.body.name}}
✅ CORRETO: {{$json.body.email}}
✅ CORRETO: {{$json.body.message}}
```

**Por quê**: O nó webhook encapsula os dados recebidos sob a propriedade `.body` para preservar headers, params e query parameters.

---

## Padrões Comuns

### Acesse Campos Aninhados

```javascript
// Aninhamento simples
{{$json.user.email}}

// Acesso a array
{{$json.data[0].name}}
{{$json.items[0].id}}

// Notação de colchetes para espaços
{{$json['field name']}}
{{$json['user data']['first name']}}
```

### Referencie Outros Nós

```javascript
// Nó sem espaços
{{$node["Set"].json.value}}

// Nó com espaços (comum!)
{{$node["HTTP Request"].json.data}}
{{$node["Respond to Webhook"].json.message}}

// Nó webhook
{{$node["Webhook"].json.body.email}}
```

### Combine Variáveis

```javascript
// Concatenação (automática)
Hello {{$json.body.name}}!

// Em URLs
https://api.example.com/users/{{$json.body.user_id}}

// Em propriedades de objeto
{
  "name": "={{$json.body.name}}",
  "email": "={{$json.body.email}}"
}
```

---

## Quando NÃO Usar Expressões

### ❌ Nós de Código

Nós de código usam acesso direto a **JavaScript**, NÃO expressões!

```javascript
// ❌ ERRADO em nó Code
const email = '={{$json.email}}';
const name = '{{$json.body.name}}';

// ✅ CORRETO em nó Code
const email = $json.email;
const name = $json.body.name;

// Ou usando API de nó Code
const email = $input.item.json.email;
const allItems = $input.all();
```

### ❌ Caminhos de Webhook

```javascript
// ❌ ERRADO
path: "{{$json.user_id}}/webhook"

// ✅ CORRETO
path: "user-webhook"  // Apenas caminhos estáticos
```

### ❌ Campos de Credencial

```javascript
// ❌ ERRADO
apiKey: "={{$env.API_KEY}}"

// ✅ CORRETO
Use o sistema de credenciais n8n, não expressões
```

---

## Regras de Validação

### 1. Sempre Use {{}}

Expressões **devem** ser envolvidas em chaves duplas.

```javascript
❌ $json.field
✅ {{$json.field}}
```

### 2. Use Aspas para Espaços

Nomes de campos ou nós com espaços requerem **notação de colchetes**:

```javascript
❌ {{$json.field name}}
✅ {{$json['field name']}}

❌ {{$node.HTTP Request.json}}
✅ {{$node["HTTP Request"].json}}
```

### 3. Corresponda Nomes Exatos de Nós

Referências de nó são **sensíveis a maiúsculas/minúsculas**:

```javascript
❌ {{$node["http request"].json}}  // minúsculas
❌ {{$node["Http Request"].json}}  // maiúsculas erradas
✅ {{$node["HTTP Request"].json}}  // corresponde exatamente
```

### 4. Sem {{ }} Aninhadas

Não envolva expressões duas vezes:

```javascript
❌ {{{$json.field}}}
✅ {{$json.field}}
```

---

## Erros Comuns

Para catálogo completo de erros com correções, veja [COMMON_MISTAKES.md](COMMON_MISTAKES.md)

### Correções Rápidas

| Erro | Correção |
|------|----------|
| `$json.field` | `{{$json.field}}` |
| `{{$json.field name}}` | `{{$json['field name']}}` |
| `{{$node.HTTP Request}}` | `{{$node["HTTP Request"]}}` |
| `{{{$json.field}}}` | `{{$json.field}}` |
| `{{$json.name}}` (webhook) | `{{$json.body.name}}` |
| `'={{$json.email}}'` (Code node) | `$json.email` |

---

## Exemplos Funcionais

Para exemplos de workflow reais, veja [EXAMPLES.md](EXAMPLES.md)

### Exemplo 1: Webhook para Slack

**Webhook recebe**:
```json
{
  "body": {
    "name": "John Doe",
    "email": "john@example.com",
    "message": "Hello!"
  }
}
```

**No campo de texto do nó Slack**:
```
New form submission!

Name: {{$json.body.name}}
Email: {{$json.body.email}}
Message: {{$json.body.message}}
```

### Exemplo 2: HTTP Request para Email

**HTTP Request retorna**:
```json
{
  "data": {
    "items": [
      {"name": "Product 1", "price": 29.99}
    ]
  }
}
```

**No nó Email** (referencia HTTP Request):
```
Product: {{$node["HTTP Request"].json.data.items[0].name}}
Price: R${{$node["HTTP Request"].json.data.items[0].price}}
```

### Exemplo 3: Formatar Timestamp

```javascript
// Data atual
{{$now.toFormat('yyyy-MM-dd')}}
// Resultado: 2025-10-20

// Hora
{{$now.toFormat('HH:mm:ss')}}
// Resultado: 14:30:45

// Data e hora completas
{{$now.toFormat('yyyy-MM-dd HH:mm')}}
// Resultado: 2025-10-20 14:30
```

---

## Manipulação de Tipo de Dado

### Arrays

```javascript
// Primeiro item
{{$json.users[0].email}}

// Comprimento do array
{{$json.users.length}}

// Último item
{{$json.users[$json.users.length - 1].name}}
```

### Objetos

```javascript
// Notação de ponto (sem espaços)
{{$json.user.email}}

// Notação de colchetes (com espaços ou dinâmicos)
{{$json['user data'].email}}
```

### Strings

```javascript
// Concatenação (automática)
Hello {{$json.name}}!

// Métodos de string
{{$json.email.toLowerCase()}}
{{$json.name.toUpperCase()}}
```

### Números

```javascript
// Uso direto
{{$json.price}}

// Operações matemáticas
{{$json.price * 1.1}}  // Adiciona 10%
{{$json.quantity + 5}}
```

---

## Padrões Avançados

### Conteúdo Condicional

```javascript
// Operador ternário
{{$json.status === 'active' ? 'Active User' : 'Inactive User'}}

// Valores padrão
{{$json.email || 'no-email@example.com'}}
```

### Manipulação de Data

```javascript
// Adicione dias
{{$now.plus({days: 7}).toFormat('yyyy-MM-dd')}}

// Subtraia horas
{{$now.minus({hours: 24}).toISO()}}

// Defina data específica
{{DateTime.fromISO('2025-12-25').toFormat('MMMM dd, yyyy')}}
```

### Manipulação de String

```javascript
// Substring
{{$json.email.substring(0, 5)}}

// Substituir
{{$json.message.replace('old', 'new')}}

// Dividir e juntar
{{$json.tags.split(',').join(', ')}}
```

---

## Depurando Expressões

### Teste no Editor de Expressões

1. Clique no campo com expressão
2. Abra o editor de expressões (clique no ícone "fx")
3. Veja visualização ao vivo do resultado
4. Procure por erros destacados em vermelho

### Mensagens de Erro Comuns

**"Cannot read property 'X' of undefined"**
→ Objeto pai não existe
→ Verifique seu caminho de dados

**"X is not a function"**
→ Tentando chamar método em não-função
→ Verifique tipo de variável

**Expressão aparece como texto literal**
→ {{ }} faltando
→ Adicione chaves duplas

---

## Auxiliares de Expressão

### Métodos Disponíveis

**String**:
- `.toLowerCase()`, `.toUpperCase()`
- `.trim()`, `.replace()`, `.substring()`
- `.split()`, `.includes()`

**Array**:
- `.length`, `.map()`, `.filter()`
- `.find()`, `.join()`, `.slice()`

**DateTime** (Luxon):
- `.toFormat()`, `.toISO()`, `.toLocal()`
- `.plus()`, `.minus()`, `.set()`

**Number**:
- `.toFixed()`, `.toString()`
- Operações matemáticas: `+`, `-`, `*`, `/`, `%`

---

## Boas Práticas

### ✅ Faça

- Sempre use {{ }} para conteúdo dinâmico
- Use notação de colchetes para nomes de campo com espaços
- Referencie dados de webhook de `.body`
- Use $node para dados de outros nós
- Teste expressões no editor de expressões

### ❌ Não Faça

- Não use expressões em nós Code
- Não esqueça aspas em torno de nomes de nó com espaços
- Não envolva duas vezes com {{ }} extras
- Não assuma que dados de webhook estão na raiz (estão sob .body!)
- Não use expressões em caminhos de webhook ou credenciais

---

## Habilidades Relacionadas

- **Especialista em Ferramentas n8n MCP**: Aprenda como validar expressões usando ferramentas MCP
- **Padrões de Workflow n8n**: Veja expressões em exemplos de workflow reais
- **Configuração de Nó n8n**: Entenda quando expressões são necessárias

---

## Resumo

**Regras Essenciais**:
1. Envolva expressões em {{ }}
2. Dados de webhook estão sob `.body`
3. Sem {{ }} em nós Code
4. Coloque aspas em nomes de nó com espaços
5. Nomes de nó são sensíveis a maiúsculas/minúsculas

**Erros Mais Comuns**:
- {{ }} faltando → Adicione chaves
- `{{$json.name}}` em webhooks → Use `{{$json.body.name}}`
- `{{$json.email}}` em Code → Use `$json.email`
- `{{$node.HTTP Request}}` → Use `{{$node["HTTP Request"]}}`

Para mais detalhes, veja:
- [COMMON_MISTAKES.md](COMMON_MISTAKES.md) - Catálogo completo de erros
- [EXAMPLES.md](EXAMPLES.md) - Exemplos de workflow reais

---

**Precisa de Ajuda?** Referencie a documentação de expressões n8n ou use ferramentas de validação n8n-mcp para verificar suas expressões.

Files in this skill

  • COMMON_MISTAKES.md8.5 KB
  • EXAMPLES.md8.1 KB
  • README.md2.3 KB
  • SKILL.md10.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…