GODRICH

n8n No Code Automation: 9 Workflows to Import

You don't need to know n8n yet: it wires apps and APIs together with no backend of your own.

Auto-plays · click a tile to jump to its section · all nine in one zip

The nine are ordered the way automation actually gets built. Two start by calling an API (01 query params, 02 pagination), two reshape what comes back (03 transforming a response, 04 combining calls), one sends data out (05 create or update), three guard against failure (06 retries, 07 status branching, 08 rate limiting), and the last one flips direction entirely by receiving a call instead of making one (09 webhook). Follow this order and you can see why real automation ends up shaped this way, even without reading the code.

01GET with query params

HTTP Request appends postId as a query parameter to fetch a comment list, and Set keeps only name, email, and body. It's the most common shape of a URL with a question mark on it. In practice, this is what you'd use for fetching comments for one post, calling a search/filter API.

HTTP Request GET쿼리 파라미터V2 실행 확인
{
  "name": "Get Comments",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/comments",
    "sendQuery": true,
    "queryParameters": {
      "parameters": [
        { "name": "postId", "value": "1" }
      ]
    },
    "options": {}
  }
}

02Paginate through pages

Code makes page numbers 1, 2, 3, and Loop Over Items feeds them into HTTP Request one page at a time, looping back for the next. Since HTTP replaces the item with the response, Tag Page reaches back to the original node by name to recover the page number. In practice, this is what you'd use for pulling an entire list API, fetching more than one page of results.

Loop Over Items_page·_limitV2 실행 확인
{
  "name": "Tag Page",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3.5,
  "parameters": {
    "mode": "manual",
    "assignments": {
      "assignments": [
        {
          "id": "1",
          "name": "page",
          "value": "={{ $('Make Pages').item.json.page }}",
          "type": "number"
        }
      ]
    },
    "includeOtherFields": true,
    "options": {}
  }
}

03Transform the response

HTTP Request calls a keyless weather API, and Code converts Celsius to Fahrenheit and writes a one-line summary. It's the shortest example of reshaping an API's raw response instead of passing it along as-is. In practice, this is what you'd use for unit conversion, normalizing response field names.

HTTP RequestCode 변환V2 실행 확인
{
  "name": "Convert Units",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "parameters": {
    "jsCode": "const c = $input.first().json.current.temperature_2m;\nconst f = Math.round((c * 9 / 5 + 32) * 10) / 10;\nreturn [{ json: { tempC: c, tempF: f, summary: `Seoul is ${c}C (${f}F)` } }];"
  }
}

04Append three HTTP calls

Three HTTP Request nodes fetch users, posts, and todos, Set stamps each with a source field, and Merge in Append mode stacks all three into one list. Unlike pairing records by key, this just piles the results up. In practice, this is what you'd use for stacking results from several APIs into one table, combining logs from three notification channels.

HTTP Request ×3Merge appendV2 실행 확인
{
  "name": "Combine Three",
  "type": "n8n-nodes-base.merge",
  "typeVersion": 3.2,
  "parameters": {
    "mode": "append",
    "numberInputs": 3
  }
}

05Create or update (POST/PUT)

Code emits one item to create and one to update, IF splits them so one goes out as a POST and the other as a PUT, and Merge brings the results back together. It's the common skeleton for deciding on the spot whether a resource is new. In practice, this is what you'd use for upserting a CRM record, one workflow for creating and editing inventory.

IF 분기POST + PUTV2 실행 확인
{
  "name": "Update Post",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "PUT",
    "url": "=https://jsonplaceholder.typicode.com/posts/{{ $json.id }}",
    "sendBody": true,
    "specifyBody": "json",
    "jsonBody": "={{ JSON.stringify({ id: $json.id, title: $json.title, body: $json.body, userId: $json.userId }) }}"
  }
}

06Retry on failure

The HTTP Request node itself is configured to retry 3 times with a 1.5-second gap, and Set stamps that policy alongside the result. Since it's built into the node, no extra IF or loop is needed. In practice, this is what you'd use for calling a flaky external API, absorbing transient errors in an overnight batch.

retryOnFailmaxTries 3V2 실행 확인
{
  "name": "Get User With Retry",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "retryOnFail": true,
  "maxTries": 3,
  "waitBetweenTries": 1500,
  "onError": "continueRegularOutput",
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/users/1"
  }
}

07Branch by status code

With the Never Error option, HTTP Request pulls back 200, 404, and 500 responses without throwing, and Switch routes them into success, client-error, and server-error branches by status range. The workflow keeps running even when the call fails. In practice, this is what you'd use for branching a payment API failure, sending different alerts per status.

neverErrorSwitch 3 routesV2 실행 확인
{
  "name": "Call Endpoint",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "={{ $json.url }}",
    "options": {
      "response": {
        "response": {
          "fullResponse": true,
          "neverError": true
        }
      }
    }
  }
}

08Slow down for rate limits

Loop Over Items feeds three IDs into HTTP Request one at a time, and Wait pauses one second after each before looping back. Use it as-is when an API caps how many calls you can make per second. In practice, this is what you'd use for avoiding rate-limit errors on bulk API calls, throttling a scrape.

Loop Over ItemsWait 1sV2 실행 확인
{
  "name": "Throttle",
  "type": "n8n-nodes-base.wait",
  "typeVersion": 1.1,
  "parameters": {
    "resume": "timeInterval",
    "amount": 1,
    "unit": "seconds"
  }
}

09Webhook multi-route respond

A Webhook receives a POST, Switch splits it into order, refund, and everything-else by the body's type field, each branch stamps a route label, and Respond to Webhook always returns 200 carrying that label. Unlike a pass/fail check, this responds down several branches, and it's import-verified only — running it needs a live webhook URL. In practice, this is what you'd use for receiving payment, refund, and other events on one webhook, routing chatbot intents.

WebhookSwitch 3 routesV1 가져오기 확인
{
  "name": "Route By Type",
  "type": "n8n-nodes-base.switch",
  "typeVersion": 3.4,
  "parameters": {
    "mode": "rules",
    "rules": {
      "values": [
        {
          "conditions": {
            "conditions": [
              {
                "leftValue": "={{ $json.body.type }}",
                "rightValue": "order",
                "operator": { "type": "string", "operation": "equals" }
              }
            ]
          },
          "outputKey": "order"
        }
      ]
    },
    "options": { "fallbackOutput": "extra", "renameFallbackOutput": "other" }
  }
}

Prerequisites — accounts, scopes, version

Every row below says "none," but the table still matters because the grade and n8n version differ per item. A grade is one of V0 (structure only), V1 (import-verified), or V2 (executed and checked) — this set has eight at V2 and one, 09, capped honestly at V1.

Item Grade Prerequisites n8n version
01 GET with query params V2 None 2.38.5
02 Paginate through pages V2 None 2.38.5
03 Transform the response V2 None 2.38.5
04 Append three HTTP calls V2 None 2.38.5
05 Create or update V2 None 2.38.5
06 Retry on failure V2 None 2.38.5
07 Branch by status code V2 None 2.38.5
08 Slow down for rate limits V2 None 2.38.5
09 Webhook multi-route respond V1 (import-verified; running it needs your own webhook URL) None 2.38.5

Getting these onto your n8n canvas is a matter of taste. Paste the raw JSON straight onto the canvas with Ctrl/Cmd+V, or pick a file with Import from File from the top menu after unzipping. Once it lands, hit Test workflow in the top-left corner, or click the play icon on Manual Trigger, to watch the flow run on the spot.

Where this breaks

The part that tripped me up most was 07's Never Error option. Turning it on alone stops the workflow from dying on a 4xx or 5xx, but the statusCode field simply isn't there to branch on — you also need Full Response switched on, which bundles statusCode, headers, and body together. The password for this zip is kjnkjsfx, and once you unzip it the nine JSON files sit right inside workflows/. Item 06's retry settings hide a similar snag: retryOnFail and maxTries live on the node object itself, not inside parameters, so they're easy to put in the wrong spot when you're hand-writing JSON.

FAQ

Does this work on an n8n cloud account?

Yes. None of these need credentials that require an account or a community node, so they import as-is on a free cloud plan too. Item 09 is the exception — testing it for real means sending a request to the live webhook URL your cloud instance issues.

Do I need to know JavaScript to use this?

No. n8n runs on dragging nodes together and filling in fields, so the JSON in this post is there for you to look inside, not to type by hand. If you're using an AI tool, pasting the lines in prompt.md produces the same shape.

I'm getting a typeVersion error — what now?

Build the same kind of node fresh in your own n8n and export it to see which version number it actually supports. These nine were verified on n8n 2.38.5 running on Node 24, and the option names for retries and error handling follow the n8n HTTP Request docs exactly.

If this is your first time near n8n, the automation category has more examples in the same vein, and the about page explains how this site checks what it publishes.

Enter the archive password

The password is inside this article. You will find it as you read.