.0n Files

Real Workflow Examples

Production-ready .0n files you can copy, customize, and run. Each one orchestrates multiple services through a single config.

3
Examples
18
Steps
6
Services
.0n Schema v1.0

File Anatomy

Full specification →
$0nEnvelope: type + version
inputsDeclared runtime inputs
steps[]Runs in array order
service / actionWhat to call
paramsArguments for the call
conditionsBare {{ref}} gate
error_handlingstop | continue | retry
outputsWorkflow return map

Domain Check

starter

Quick domain availability check, with alternatives generated only when the domain is taken.

3
Steps
1
Services
~5 seconds
Runtime
GoDaddy#domain#quick-check
domain-check.0n
{
  "$0n": {
    "type": "workflow",
    "version": "1.0",
    "name": "domain-check"
  },
  "description": "Quick domain availability check, with alternatives generated only when the domain is taken.",
  "inputs": {
    "client_domain": {
      "required": true,
      "description": "Domain to check, e.g. acme.com"
    },
    "client_name": {
      "required": true,
      "description": "Brand name used to seed suggestions"
    }
  },
  "steps": [
    {
      "id": "check",
      "service": "godaddy",
      "action": "check_availability",
      "params": {
        "domain": "{{inputs.client_domain}}"
      },
      "error_handling": {
        "on_error": "stop"
      }
    },
    {
      "id": "unavailable",
      "service": "internal",
      "action": "compute",
      "params": {
        "expression": "({{steps.check.available}} ? 0 : 1)"
      }
    },
    {
      "id": "suggest",
      "service": "godaddy",
      "action": "suggest_domains",
      "conditions": "{{steps.unavailable.value}}",
      "params": {
        "query": "{{inputs.client_name}}",
        "limit": 20
      },
      "error_handling": {
        "on_error": "continue"
      }
    }
  ],
  "outputs": {
    "available": "{{steps.check.available}}",
    "price": "{{steps.check.price}}",
    "suggestions": "{{steps.suggest.domains}}"
  }
}

Client Onboarding

pro

Client onboarding pipeline: verify the live site, set up Stripe billing, publish a welcome doc, then hand off to the CRM.

8
Steps
4
Services
~2 minutes
Runtime
NetlifyStripeNotionn8n#onboarding#billing#crm
client-onboard.0n
{
  "$0n": {
    "type": "workflow",
    "version": "1.0",
    "name": "client-onboard"
  },
  "description": "Client onboarding pipeline: verify the live site, set up Stripe billing, publish a welcome doc, then hand off to the CRM.",
  "inputs": {
    "client_name": {
      "required": true
    },
    "client_email": {
      "required": true
    },
    "client_domain": {
      "required": true
    },
    "netlify_site_id": {
      "required": true,
      "description": "Site whose deploy we verify before billing"
    },
    "notion_parent_id": {
      "required": true,
      "description": "Notion database the welcome doc is created in"
    },
    "crm_workflow_id": {
      "required": true,
      "description": "n8n workflow that runs CRM onboarding"
    },
    "monthly_price": {
      "required": false,
      "description": "Whole dollars, e.g. 299"
    }
  },
  "steps": [
    {
      "id": "site",
      "service": "netlify",
      "action": "get_site",
      "params": {
        "site_id": "{{inputs.netlify_site_id}}"
      },
      "error_handling": {
        "on_error": "stop"
      }
    },
    {
      "id": "customer",
      "service": "stripe",
      "action": "create_customer",
      "params": {
        "name": "{{inputs.client_name}}",
        "email": "{{inputs.client_email}}",
        "description": "{{inputs.client_domain}} — client-onboard"
      },
      "error_handling": {
        "on_error": "stop"
      }
    },
    {
      "id": "product",
      "service": "stripe",
      "action": "create_product",
      "params": {
        "name": "{{inputs.client_name}} — Website Package",
        "description": "Monthly website hosting, management, and optimization"
      },
      "error_handling": {
        "on_error": "stop"
      }
    },
    {
      "id": "amount",
      "service": "internal",
      "action": "compute",
      "params": {
        "expression": "{{inputs.monthly_price}} * 100"
      }
    },
    {
      "id": "price",
      "service": "stripe",
      "action": "create_price",
      "params": {
        "product": "{{steps.product.id}}",
        "unit_amount": "{{steps.amount.value}}",
        "currency": "usd",
        "recurring": {
          "interval": "month"
        }
      }
    },
    {
      "id": "subscription",
      "service": "stripe",
      "action": "create_subscription",
      "params": {
        "customer": "{{steps.customer.id}}",
        "items": [
          {
            "price": "{{steps.price.id}}"
          }
        ],
        "collection_method": "send_invoice",
        "days_until_due": 30
      }
    },
    {
      "id": "welcome_doc",
      "service": "notion",
      "action": "create_page",
      "params": {
        "parent": {
          "database_id": "{{inputs.notion_parent_id}}"
        },
        "properties": {
          "title": [
            {
              "text": {
                "content": "Welcome aboard, {{inputs.client_name}} — {{steps.site.ssl_url}} is live"
              }
            }
          ]
        }
      },
      "error_handling": {
        "on_error": "continue"
      }
    },
    {
      "id": "crm",
      "service": "n8n",
      "action": "execute_workflow",
      "params": {
        "workflowId": "{{inputs.crm_workflow_id}}",
        "client_name": "{{inputs.client_name}}",
        "stripe_customer_id": "{{steps.customer.id}}",
        "subscription_id": "{{steps.subscription.id}}",
        "welcome_doc_url": "{{steps.welcome_doc.url}}"
      },
      "error_handling": {
        "on_error": "retry",
        "retries": 2,
        "backoff_ms": 1000
      }
    }
  ],
  "outputs": {
    "customer_id": "{{steps.customer.id}}",
    "subscription_id": "{{steps.subscription.id}}",
    "subscription_status": "{{steps.subscription.status}}",
    "welcome_doc_url": "{{steps.welcome_doc.url}}"
  }
}

Website Factory

burst

Full website factory: domain check, CRM enrichment, site deploy, Stripe billing, client deck, CRM handoff, team notification.

11
Steps
7
Services
~4 minutes
Runtime
GoDaddyHubSpotNetlifyStripeNotionn8nSlack#client-site#full-pipeline#auto-billing
website-factory.0n
{
  "$0n": {
    "type": "workflow",
    "version": "1.0",
    "name": "website-factory"
  },
  "description": "Full website factory: domain check, CRM enrichment, site deploy, Stripe billing, client deck, CRM handoff, team notification.",
  "inputs": {
    "client_name": {
      "required": true
    },
    "client_domain": {
      "required": true
    },
    "industry": {
      "required": false
    },
    "notion_parent_id": {
      "required": true
    },
    "crm_workflow_id": {
      "required": true
    },
    "slack_channel": {
      "required": true,
      "description": "Channel id or #name for the completion notice"
    },
    "monthly_price": {
      "required": false,
      "description": "Whole dollars, e.g. 299"
    }
  },
  "steps": [
    {
      "id": "check",
      "service": "godaddy",
      "action": "check_availability",
      "params": {
        "domain": "{{inputs.client_domain}}"
      },
      "error_handling": {
        "on_error": "stop"
      }
    },
    {
      "id": "unavailable",
      "service": "internal",
      "action": "compute",
      "params": {
        "expression": "({{steps.check.available}} ? 0 : 1)"
      }
    },
    {
      "id": "suggest",
      "service": "godaddy",
      "action": "suggest_domains",
      "conditions": "{{steps.unavailable.value}}",
      "params": {
        "query": "{{inputs.client_name}} {{inputs.industry}}",
        "limit": 10
      },
      "error_handling": {
        "on_error": "continue"
      }
    },
    {
      "id": "enrich",
      "service": "hubspot",
      "action": "search_contacts",
      "params": {
        "filterGroups": [
          {
            "filters": [
              {
                "propertyName": "company",
                "operator": "EQ",
                "value": "{{inputs.client_name}}"
              }
            ]
          }
        ]
      },
      "error_handling": {
        "on_error": "continue"
      }
    },
    {
      "id": "deploy",
      "service": "netlify",
      "action": "create_site",
      "conditions": "{{steps.check.available}}",
      "params": {
        "name": "{{inputs.client_name}}",
        "custom_domain": "{{inputs.client_domain}}"
      },
      "error_handling": {
        "on_error": "retry",
        "retries": 3,
        "backoff_ms": 2000
      }
    },
    {
      "id": "product",
      "service": "stripe",
      "action": "create_product",
      "params": {
        "name": "{{inputs.client_name}} — Website Management",
        "description": "Managed hosting, analytics, and optimization for {{inputs.client_domain}}"
      }
    },
    {
      "id": "amount",
      "service": "internal",
      "action": "compute",
      "params": {
        "expression": "{{inputs.monthly_price}} * 100"
      }
    },
    {
      "id": "price",
      "service": "stripe",
      "action": "create_price",
      "params": {
        "product": "{{steps.product.id}}",
        "unit_amount": "{{steps.amount.value}}",
        "currency": "usd",
        "recurring": {
          "interval": "month"
        }
      }
    },
    {
      "id": "deck",
      "service": "notion",
      "action": "create_page",
      "params": {
        "parent": {
          "database_id": "{{inputs.notion_parent_id}}"
        },
        "properties": {
          "title": [
            {
              "text": {
                "content": "{{inputs.client_name}} — launch brief for {{steps.deploy.ssl_url}}"
              }
            }
          ]
        }
      },
      "error_handling": {
        "on_error": "continue"
      }
    },
    {
      "id": "crm",
      "service": "n8n",
      "action": "execute_workflow",
      "params": {
        "workflowId": "{{inputs.crm_workflow_id}}",
        "client_name": "{{inputs.client_name}}",
        "deployment_url": "{{steps.deploy.ssl_url}}",
        "stripe_price_id": "{{steps.price.id}}",
        "deck_url": "{{steps.deck.url}}"
      },
      "error_handling": {
        "on_error": "retry",
        "retries": 2,
        "backoff_ms": 1000
      }
    },
    {
      "id": "notify",
      "service": "slack",
      "action": "send_message",
      "params": {
        "channel": "{{inputs.slack_channel}}",
        "text": "Website factory finished for {{inputs.client_name}} — {{steps.deploy.ssl_url}}"
      },
      "error_handling": {
        "on_error": "continue"
      }
    }
  ],
  "outputs": {
    "domain_available": "{{steps.check.available}}",
    "deployment_url": "{{steps.deploy.ssl_url}}",
    "stripe_price_id": "{{steps.price.id}}",
    "deck_url": "{{steps.deck.url}}"
  }
}

Build your own

Create .0n files that orchestrate any of our 97 services. Describe outcomes, not steps.

Examples — Real .0n Workflow Files | 0nMCP