Skip to main content
The log node writes custom entries to runtime logs. Use it to track flow execution, debug issues, or record important events for monitoring.

Configuration

{
  "id": "log_order",
  "type": "log",
  "config": {
    "level": "info",
    "message": "Order processed successfully",
    "data": {
      "order_id": "{{request.body.order_id}}",
      "total": "{{calculate_total.output.total}}",
      "user_id": "{{request.body.user_id}}"
    }
  }
}

Config Fields

FieldTypeRequiredDefaultDescription
levelstringNo"info"Log level: debug, info, warn, error
messagestringYes-Log message (supports templates)
dataobjectNo-Additional data to include in the log entry

Log Levels

LevelUse Case
debugDetailed debugging information
infoGeneral informational messages
warnWarning conditions that should be reviewed
errorError conditions that need attention

Output

{
  "logged": true,
  "level": "info",
  "message": "Order processed successfully"
}

Examples

Basic Log

{
  "id": "log_start",
  "type": "log",
  "config": {
    "level": "info",
    "message": "Flow execution started"
  }
}

Log with Data

{
  "id": "log_user_action",
  "type": "log",
  "config": {
    "level": "info",
    "message": "User action recorded",
    "data": {
      "user_id": "{{request.body.user_id}}",
      "action": "{{request.body.action}}",
      "timestamp": "{{now}}"
    }
  }
}

Debug Logging

{
  "id": "debug_response",
  "type": "log",
  "config": {
    "level": "debug",
    "message": "API response received",
    "data": {
      "status": "{{fetch_data.output.status_code}}",
      "body": "{{fetch_data.output.body}}"
    }
  }
}

Warning Log

{
  "id": "log_retry",
  "type": "log",
  "config": {
    "level": "warn",
    "message": "Retrying failed operation",
    "data": {
      "attempt": "{{trigger.message.retried}}",
      "error": "{{error.message}}"
    }
  }
}

Error Log

{
  "id": "log_error",
  "type": "log",
  "config": {
    "level": "error",
    "message": "Payment processing failed",
    "data": {
      "order_id": "{{request.body.order_id}}",
      "error_code": "{{payment.output.error.code}}",
      "error_message": "{{payment.output.error.message}}"
    }
  }
}

Log in Try-Catch

{
  "nodes": [
    {
      "id": "try_block",
      "type": "try",
      "config": {
        "try": ["process_order"],
        "catch": ["log_failure", "send_alert"],
        "finally": ["log_complete"]
      }
    },
    {
      "id": "log_failure",
      "type": "log",
      "config": {
        "level": "error",
        "message": "Order processing failed",
        "data": {
          "error": "{{error.message}}",
          "failed_node": "{{error.node}}"
        }
      }
    },
    {
      "id": "log_complete",
      "type": "log",
      "config": {
        "level": "info",
        "message": "Order flow completed"
      }
    }
  ]
}

Log with Computed Values

{
  "id": "log_stats",
  "type": "log",
  "config": {
    "level": "info",
    "message": "Batch processing complete",
    "data": {
      "total_items": "{{items | count}}",
      "successful": "{{results | filter:success=true | count}}",
      "failed": "{{results | filter:success=false | count}}",
      "duration_ms": "{{end_time | subtract:start_time}}"
    }
  }
}

Conditional Logging

Use with condition nodes to log only in specific scenarios:
{
  "nodes": [
    {
      "id": "check_amount",
      "type": "condition",
      "config": {
        "conditions": [
          {
            "if": "{{request.body.amount}} > 10000",
            "then": ["log_large_order", "process_order"]
          }
        ],
        "else": ["process_order"]
      }
    },
    {
      "id": "log_large_order",
      "type": "log",
      "config": {
        "level": "info",
        "message": "Large order detected",
        "data": {
          "amount": "{{request.body.amount}}",
          "customer_id": "{{request.body.customer_id}}"
        }
      }
    }
  ]
}

Viewing Logs

Log entries appear in the runtime logs section of the dashboard. You can:
  • Filter by log level (debug, info, warn, error)
  • Search by message content
  • View associated data fields
  • Filter by time range

Log Retention

Log retention depends on your plan:
PlanRetention
Free1 day
Hobby30 days
Pro90 days

Sensitive Data

Be careful not to log sensitive information. Use log masking to automatically redact sensitive fields:
// Configure in project settings
{
  "log_filters": {
    "masked_keywords": ["password", "api_key", "secret", "token"]
  }
}
With masking enabled, sensitive fields are replaced with ******** in logs.