{"workflow":{"id":14072,"name":"Bulk publish Pinterest Pins from Google Sheets with PinBridge","views":135,"recentViews":3,"totalViews":135,"createdAt":"2026-03-16T00:18:38.443Z","description":"This workflow lets you publish Pinterest Pins in bulk from a Google Sheet using PinBridge as the publishing layer.\n\nIt is designed for builders who want a practical, repeatable workflow instead of manually creating Pins one by one. The flow reads rows from Google Sheets, skips rows that are already complete, validates the required fields, downloads each image, uploads that image through PinBridge, submits the Pinterest publish job, and writes the result back into the same sheet.\n\nThe goal is not just to publish. The goal is to publish in a way that is operationally clean, easy to review, and safe to run repeatedly.\n\n---\n\n## What problem this workflow solves\n\nA lot of Pinterest automation starts simple and then becomes messy very quickly:\n\n- content lives in a spreadsheet\n- images live in public URLs\n- someone has to manually copy title, description, destination URL, and image\n- nobody knows which rows were already sent\n- retries become dangerous because duplicate publishing becomes easy\n- batch operations become hard to track\n\nThis workflow solves that by turning Google Sheets into a lightweight publishing queue.\n\nYou prepare rows in a sheet, run the workflow, and the workflow does the following:\n\n1. Reads rows from the `Pins` sheet\n2. Ignores rows that are already marked as published\n3. Verifies that the required values exist\n4. Downloads the image from the row\n5. Uploads the image to PinBridge\n6. Submits the Pin publish job through PinBridge\n7. Writes the result back to the sheet\n\nThat gives you a simple but effective operational loop.\n\n---\n\n## Why PinBridge is used here\n\nThis workflow is intentionally built around PinBridge rather than direct Pinterest API glue.\n\nPinBridge is the publishing layer in the middle. In this workflow, PinBridge is responsible for the Pinterest-facing publish operation while n8n remains the orchestration layer.\n\nThat separation is useful because it keeps the workflow focused on:\n\n- reading inputs\n- validating data\n- sending publish jobs\n- tracking results\n\ninstead of forcing the workflow to also become a Pinterest delivery engine.\n\nIn other words:\n\n- **Google Sheets** is your input queue\n- **n8n** is your orchestration engine\n- **PinBridge** is your Pinterest publishing layer\n\nThat is the architecture this template is meant to demonstrate.\n\n---\n\n## What you need before you begin\n\nYou need four things before importing and running this workflow:\n\n1. An **n8n instance**\n2. A **Google account** with access to Google Sheets\n3. A **PinBridge account**\n4. A **Pinterest account and board IDs** already connected or available through your PinBridge setup\n\nYou also need a Google Sheet that matches the expected format described below.\n\n---\n\n## Step 1: Create your PinBridge account\n\nCreate your PinBridge account first.\n\nHead to [pinbridge.io](https://www.pinbridge.io/get-started/?utm_source=n8n&utm_medium=workflow_template&utm_campaign=n8n_templates&utm_id=bulk-publish-pinterest-pins-from-google-sheets-with-pinbridge&utm_source_platform=n8n) and click register at the top right corner. You can start with just a free account and upgrade later if you need more volume.\n\nYou will need two things from PinBridge for this workflow:\n\n- a **PinBridge API key**\n- the connected **Pinterest account** you want to publish to. Head to App &gt; Accounts &gt; Connect &gt; Give Access.\n\n---\n\n## Step 2: Create a PinBridge API key\n\nInside PinBridge, create an API key that will be used by the n8n workflow.\n\nTo create a new key, go to **App &gt; API Keys &gt; Create**. Make sure that you:\n\n- give it a clear name such as `n8n-bulk-publish`\n- store it somewhere secure\n- do not hardcode it into random HTTP nodes\n- use the PinBridge n8n credential field so it stays reusable and secure\n\nAfter the key is created, go into n8n and create the **PinBridge credential** used by the PinBridge nodes in this workflow.\n\n---\n\n## Step 2.5: Install the PinBridge n8n community node\n\nBefore this workflow can run, your n8n instance must have the PinBridge community node installed.\n\nThis workflow uses the following PinBridge nodes:\n\n- **Upload Image to PinBridge**\n- **Publish to Pinterest**\n\nIf the PinBridge node is not installed, these nodes will either be missing or show as unknown after import.\n\n### Install from the n8n UI\n\nIf your n8n instance allows community nodes:\n\n1. Open **Settings**\n2. Go to **Community Nodes**\n3. Click **Install**\n4. Enter the PinBridge package name:\n   `n8n-nodes-pinbridge`\n5. Confirm the installation\n6. Restart n8n if your environment requires it\n\nAfter installation, re-open the workflow and confirm that the PinBridge nodes load correctly.\n\n#### Important note\nSome hosted or restricted n8n environments do not allow custom community nodes. If that applies to your environment, you will need either:\n- an n8n setup that supports community nodes\n- or a self-hosted n8n instance where you can install n8n-nodes-pinbridge\n---\n\n## Step 3: Prepare your Google Sheet\n\nCreate a Google Sheet with a tab named:\n\n`Pins`\n\nThe workflow expects one row per Pin.\n\nUse this exact header structure:\n\n| row_id | title | description | link_url | image_url | board_id | alt_text | dominant_color | status | job_id | published_at | error_message |\n|---|---|---|---|---|---|---|---|---|---|---|---|\n\n### Column meanings\n\n#### `row_id`\nA unique identifier for the row.\n\nUse something stable and simple, for example:\n\n- `pin-001`\n- `spring-cake-01`\n- `2026-03-15-001`\n\nThis value is important because the workflow uses it to update the correct row later.\n\n#### `title`\nThe Pinterest Pin title.\n\n#### `description`\nThe Pinterest Pin description.\n\n#### `link_url`\nThe destination URL users should visit when they click the Pin.\n\nThis should be a full public URL such as:\n\n`https://example.com/post-name`\n\n#### `image_url`\nA public image URL that n8n can download.\n\nThis must point directly to a reachable image file. If the image URL requires login, expires quickly, or redirects badly, the workflow may fail.\n\n#### `board_id`\nThe Pinterest board ID to publish to.\n\nThis must be the board ID expected by PinBridge, not just a board name.\n\n#### `alt_text`\nOptional, but recommended.\n\nThis should describe the image in plain language for accessibility.\n\n#### `dominant_color`\nOptional.\n\nIf empty, the workflow falls back to `#ffffff`.\n\nIf you provide a value, use a hex color such as:\n\n- `#ffffff`\n- `#f4d03f`\n- `#d35400`\n\n#### `status`\nUsed by the workflow to track state.\n\nLeave it empty before first run.\n\nThe workflow writes values such as:\n\n- `submitted`\n- `invalid`\n\nYou may later extend the system to include:\n\n- `published`\n- `failed`\n\n#### `job_id`\nFilled by the workflow after a successful PinBridge job submission.\n\nLeave it empty initially.\n\n#### `published_at`\nFilled by the workflow when the publish job is submitted.\n\nLeave it empty initially.\n\n#### `error_message`\nFilled by the workflow when validation fails or when you later add failure branches.\n\nLeave it empty initially.\n\n---\n\n## Example Google Sheet rows\n\nHere is a safe example layout:\n\n| row_id | title | description | link_url | image_url | board_id | alt_text | dominant_color | status | job_id | published_at | error_message |\n|---|---|---|---|---|---|---|---|---|---|---|---|\n| pin-001 | Easy Lemon Pasta Dinner | Bright lemon pasta with garlic and parmesan. Click through for the full recipe. | https://example.com/lemon-pasta | https://example.com/images/lemon-pasta.jpg | 1234567890 | Bowl of lemon pasta with parmesan and herbs | #f7dc6f |  |  |  |  |\n| pin-002 | Small Kitchen Pantry Shelves | Space-saving pantry shelf ideas for small kitchens. | https://example.com/pantry-shelves | https://example.com/images/pantry-shelves.jpg | 1234567890 | Organized pantry shelves in a small kitchen | #d5dbdb |  |  |  |  |\n\n---\n\n## Step 4: Import the workflow into n8n\n\nImport the workflow JSON into your n8n instance.\n\nAfter import, open the workflow and go through each credentialed node.\n\nYou will need to connect:\n\n- the Google Sheets credential\n- the PinBridge credential\n\nDo not assume imported placeholder IDs will work. They will not.\n\n---\n\n## Step 5: Configure the Google Sheets node\n\nOpen the **Read Sheet Rows** node and configure:\n\n- the Google Sheets credential\n- the target spreadsheet ID\n- the sheet name: `Pins`\n\nMake sure the Google account connected to n8n has permission to read and update that sheet.\n\nThen open the two update nodes:\n\n- **Update Sheet Success**\n- **Update Sheet Invalid Row**\n\nPoint them to the same spreadsheet and the same `Pins` tab.\n\nThese update nodes are designed to write values back into the same row using `row_id` as the matching key.\n\nThat means your `row_id` values must be unique.\n\nIf you duplicate `row_id` values, updates become unreliable.\n\n---\n\n## Step 6: Configure the PinBridge nodes\n\nThere are two PinBridge nodes in this workflow:\n\n1. **Upload Image to PinBridge**\n2. **Publish to Pinterest**\n\n### Upload Image to PinBridge\nThis node uploads the binary image that was downloaded from the `image_url` column.\n\nNo extra row mapping is needed here beyond having a valid downloaded image.\n\n### Publish to Pinterest\nThis node submits the Pin publish job.\n\nYou must configure:\n\n- the PinBridge credential\n- the correct `accountId`\n\nThe following fields are taken from the sheet row:\n\n- `boardId`\n- `title`\n- `description`\n- `linkUrl`\n- `altText`\n- `dominantColor`\n\nBefore running the workflow, replace the placeholder account ID with your real PinBridge Pinterest account ID.\n\n---\n\n## How to find the correct board ID\n\nThe workflow expects a real board ID, not a board name.\n\nThere are several ways to get it depending on how you operate PinBridge:\n\n- from a PinBridge board listing flow\n- from your app or dashboard if it exposes board IDs\n- from a separate helper workflow that lists boards for your connected Pinterest account\n\nDo not type human board names into the `board_id` column unless your system explicitly uses board names as IDs, which is usually not the case.\n\nA wrong board ID will cause the publish step to fail.\n\n---\n\n## Workflow logic, node by node\n\nThis section explains exactly why the workflow is built the way it is.\n\n### 1. Manual Trigger\nThis keeps the first version simple.\n\nYou decide when to run the batch. That is useful during setup, testing, and controlled publishing.\n\nThis can later be replaced with:\n- schedule trigger\n- webhook trigger\n- form trigger\n\nBut manual trigger is the right default for a community template.\n\n### 2. Read Sheet Rows\nThis reads all rows from the `Pins` tab.\n\nThe sheet acts as the batch source.\n\n### 3. Skip Published Rows\nThis prevents rows already marked as `published` from being processed again.\n\nEven if your first version only writes `submitted`, this node is still useful because it gives you a clear place to define re-run behavior later.\n\nThis is one of the most important operational protections in the workflow.\n\n### 4. Validate Required Fields\nThis checks that the row has the minimum required information before any external work is done.\n\nThe required fields are:\n\n- `title`\n- `description`\n- `link_url`\n- `image_url`\n- `board_id`\n\nThis matters because you do not want to waste requests on rows that are obviously incomplete.\n\n### 5. Download Image\nThis downloads the image from `image_url`.\n\nThe workflow assumes this URL is directly reachable from the n8n runtime.\n\nIf the image cannot be fetched, the flow will stop at this step unless you add explicit failure handling.\n\n### 6. Upload Image to PinBridge\nThis sends the binary image into PinBridge.\n\nThis step matters because the Pinterest publish job should reference a clean asset path handled by the PinBridge side of the system.\n\n### 7. Publish to Pinterest\nThis submits the publish job using PinBridge.\n\nAt this point the workflow is not pretending the job is fully completed end-to-end on Pinterest. It is recording that the publish job was successfully submitted.\n\nThat distinction matters.\n\nA clean job submission and a final publish confirmation are not the same thing.\n\nThis template intentionally focuses on submission.\n\n### 8. Build Success Result\nIf the PinBridge publish request succeeds, the workflow creates a result object with:\n\n- `status = submitted`\n- `job_id`\n- `published_at`\n- `error_message = ''`\n\nThis object is then written back to the sheet.\n\n### 9. Update Sheet Success\nThis writes the successful submission result back to the original row.\n\nThat gives you traceability immediately.\n\n### 10. Build Invalid Result\nIf required fields are missing, this branch marks the row as invalid and explains why.\n\nThat makes the sheet self-correcting: you can scan invalid rows and fix them directly.\n\n### 11. Update Sheet Invalid Row\nThis writes the invalid result back into the sheet.\n\nThat closes the loop for bad inputs instead of silently dropping them.\n\n---\n\n## Why the workflow stops at job submission\n\nThis is deliberate.\n\nA lot of people try to put the entire world into one n8n template:\n- submit publish\n- wait for final outcome\n- verify callbacks\n- alert on failures\n- retry jobs\n- write analytics\n- update multiple systems\n\nThat makes the template harder to understand and harder to run successfully the first time.\n\nThis workflow is intentionally scoped to:\n\n- read rows\n- validate inputs\n- submit PinBridge publish jobs\n- record the submission result\n\nThat makes it easier to import, understand, and run.\n\nA separate workflow should handle:\n- webhook verification\n- final delivery confirmation\n- failure notifications\n- retry strategy\n\nThat separation is cleaner and easier to operate.\n\n---\n\n## Expected first-run behavior\n\nWhen you run the workflow for the first time:\n\n- rows with missing required fields should be marked `invalid`\n- valid rows should get:\n  - `status = submitted`\n  - a `job_id`\n  - a timestamp in `published_at`\n\nIf a row was already manually marked `published`, it should be skipped.\n\n---\n\n## How to test safely\n\nDo not start with 100 rows.\n\nStart with 2 or 3 rows only:\n\n- one valid row\n- one invalid row\n- one extra valid row if needed\n\nThat lets you confirm all branches work as expected.\n\nA good first test looks like this:\n\n- row 1: complete and valid\n- row 2: missing `board_id`\n- row 3: complete and valid\n\nThen run the workflow manually and inspect the sheet afterwards.\n\nYou should see:\n\n- row 2 marked invalid\n- row 1 and row 3 marked submitted with job IDs\n\n---\n\n## Common setup mistakes\n\n### The image URL is not public\nIf the image requires cookies, auth, a signed session, or expired CDN tokens, the download node will fail.\n\nUse stable public URLs.\n\n### The board ID is wrong\nA human-readable board name is not enough. Use the real board ID.\n\n### The Google Sheet update cannot find the row\nThis usually means:\n- `row_id` is missing\n- `row_id` is duplicated\n- update node matching columns are not configured correctly\n\n### The wrong PinBridge account ID is used\nIf the account ID does not match the expected Pinterest account context, the publish node can fail even if everything else looks correct.\n\n### The sheet name is not `Pins`\nIf you rename the tab, update all Google Sheets nodes accordingly.\n\n---\n\n## Recommended operational rules\n\nTo keep this workflow reliable, follow these rules:\n\n### Use one unique `row_id` per row\nNever reuse IDs.\n\n### Keep `status` workflow-owned\nLet the workflow write status values. Do not overload the field with random notes.\n\n### Keep rows immutable after submission\nOnce a row is submitted, do not casually change title, description, or image in place. Create a new row if the Pin is materially different.\n\n### Validate image URLs before batch runs\nEspecially if your image links come from a CMS or CDN.\n\n### Run small batches first\nDo not treat the first live run like a stress test.\n\n---\n\n## Suggested extensions after initial success\n\nOnce this base workflow is working, the best next extensions are:\n\n### Add a webhook completion workflow\nUse a separate workflow to:\n- receive PinBridge webhook callbacks\n- verify signatures\n- update `status` from `submitted` to `published` or `failed`\n- write final Pinterest IDs\n- send Slack or Telegram alerts if needed\n\n### Add failure handling\nWrap the download, upload, and publish nodes with explicit failure branches so bad rows are marked `failed` instead of stopping the run.\n\n### Add board lookup helper flow\nCreate a small helper workflow that lists available boards and writes them to a reference sheet.\n\n### Add scheduling\nReplace manual trigger with a cron or scheduled trigger once the flow is stable.\n\n### Add pre-validation for URL format\nYou can validate that:\n- `link_url` starts with `http`\n- `image_url` starts with `http`\n- `dominant_color` looks like a hex code\n\n---\n\n## Minimum data contract for successful runs\n\nA row is publishable only if all of the following are true:\n\n- `row_id` exists\n- `title` exists\n- `description` exists\n- `link_url` exists\n- `image_url` exists\n- `board_id` exists\n- the image URL can be downloaded\n- the PinBridge credential is valid\n- the PinBridge account ID is correct\n\nIf any of those are false, the row should not be considered publish-ready.\n\n---\n\n## Summary\n\nThis workflow is a practical bulk-publishing starter template.\n\nIt uses:\n\n- **Google Sheets** as the publish queue\n- **n8n** as the orchestration layer\n- **PinBridge** as the Pinterest publishing layer\n\nThat makes it useful as both a real operational workflow and a clear demonstration of where PinBridge fits inside an automation stack.\n\nIf you configure the Google Sheet correctly, connect your Google Sheets and PinBridge credentials, set the right Pinterest account ID, and provide valid public image URLs and board IDs, you should be able to run this workflow from start to finish successfully with no additional context.\n\n---\n\n## Quick setup checklist\n\nBefore running the workflow, confirm all of the following:\n\n- PinBridge account created\n- PinBridge API key created\n- PinBridge credential added in n8n\n- correct Pinterest account ID entered in the publish node\n- Google Sheets credential added in n8n\n- Google Sheet exists\n- tab name is `Pins`\n- required columns are present\n- every row has a unique `row_id`\n- valid rows contain:\n  - `title`\n  - `description`\n  - `link_url`\n  - `image_url`\n  - `board_id`\n- image URLs are publicly accessible\n\nIf all of that is true, the workflow is ready to run.","workflow":{"meta":{"instanceId":"6a6847ac2a077f8c4be90f29048ef6606c84d2c531025adef678c7e064dfa88a","templateCredsSetupCompleted":true},"nodes":[{"id":"0c5eaaff-a604-403a-95b5-ab7657675921","name":"Sticky Note - Overview","type":"n8n-nodes-base.stickyNote","position":[-704,-32],"parameters":{"color":7,"width":700,"height":392,"content":"# Bulk publish Pinterest Pins from Google Sheets\n\nThis template uses **Google Sheets as the input queue**, **n8n as the orchestration layer**, and **PinBridge as the Pinterest publishing layer**.\n\n### How it works\n1. Read rows from the `Pins` sheet\n2. Skip rows already marked as published\n3. Validate required row fields\n4. Download the image\n5. Upload the image to PinBridge\n6. Submit the Pinterest publish job\n7. Write the result back to the same sheet"},"typeVersion":1},{"id":"b0542cfe-aac5-42ac-ad9f-8b4559b9fb59","name":"Sticky Note - Setup","type":"n8n-nodes-base.stickyNote","position":[48,-32],"parameters":{"color":5,"width":760,"height":384,"content":"## Setup checklist\n\nBefore running this workflow, replace the placeholders and connect credentials:\n\n- Add a **Google Sheets** credential\n- Add a **PinBridge** credential\n- Replace `YOUR_GOOGLE_SHEET_ID`\n- Replace `YOUR_PINTEREST_ACCOUNT_ID`\n- Confirm the sheet tab name is `Pins`\n- Confirm each row has a unique `row_id`\n- Confirm `image_url` points to a **publicly reachable image**\n- Confirm `board_id` is the **real Pinterest board ID**\n\n### Expected columns\n`row_id`, `title`, `description`, `link_url`, `image_url`, `board_id`, `alt_text`, `dominant_color`, `status`, `job_id`, `published_at`, `error_message`"},"typeVersion":1},{"id":"96c28e52-0b66-4414-9366-4cacb4116f99","name":"Sticky Note - Read and filter","type":"n8n-nodes-base.stickyNote","position":[-704,432],"parameters":{"color":4,"width":720,"height":460,"content":"## Read and filter rows\n\nThe workflow starts manually, then reads all rows from the `Pins` tab.\n\n`Skip Published Rows` prevents rows already marked as `published` from being processed again.\n\nThis keeps re-runs safer and gives you a clear place to define future reprocessing logic."},"typeVersion":1},{"id":"792de724-15ca-40ac-8e2a-6440c9ca323c","name":"Sticky Note - Valid rows","type":"n8n-nodes-base.stickyNote","position":[80,432],"parameters":{"width":1464,"height":460,"content":"## Validate and submit valid rows\n\n`Validate Required Fields` checks that the row contains: `title` | `description` | `link_url` | `image_url` | `board_id`\n\n\nIf valid, the workflow downloads the image, uploads it to PinBridge, then submits the Pinterest publish job.\n\nOn success, the workflow writes:\n- `status = submitted` | `job_id` | `published_at` | empty `error_message`"},"typeVersion":1},{"id":"a99a1cfa-7507-4868-97b2-1e5195c0a88e","name":"Sticky Note - Invalid rows","type":"n8n-nodes-base.stickyNote","position":[336,944],"parameters":{"color":6,"width":520,"height":476,"content":"## Handle invalid rows\n\nRows missing one or more required fields do **not** continue to external steps.\n\nInstead, the workflow marks the row as:\n\n- `status = invalid`\n- `error_message = Missing one or more required fields...`\n\n\nThis makes the sheet self-correcting and easier to review after each run."},"typeVersion":1},{"id":"19d95fbf-6c27-4464-aa74-c826acd998f4","name":"Sticky Note - Scope","type":"n8n-nodes-base.stickyNote","position":[848,-32],"parameters":{"color":7,"width":696,"height":380,"content":"## What this template covers\n\nThis template records **successful job submission** only.\n\nA separate workflow should handle:\n- webhook callbacks\n- final publish confirmation\n- retries for downstream failures\n- notifications and reporting\n\nThat keeps this template easier to import, test, and understand."},"typeVersion":1},{"id":"78071c8e-da9d-417a-8c84-aee5736f556e","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","position":[-640,720],"parameters":{},"typeVersion":1},{"id":"9718aea3-2e14-40fc-82dd-0e8704816805","name":"Read Sheet Rows","type":"n8n-nodes-base.googleSheets","position":[-416,720],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"name","value":"Pins"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_GOOGLE_SHEET_ID"}},"credentials":{"googleSheetsOAuth2Api":{"id":"uxKHoiIYG3lTl70m","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"e7f2c694-6f52-4454-a680-b9fb52b6a9e8","name":"Skip Published Rows","type":"n8n-nodes-base.if","position":[-192,720],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"skip-published","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ ($json.status || '').toString().toLowerCase() }}","rightValue":"published"}]}},"typeVersion":2.2},{"id":"2b54e4d0-1e4d-4bcd-a79d-163a6ff040c9","name":"Validate Required Fields","type":"n8n-nodes-base.if","position":[144,704],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"has-title","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ !!$json.title }}","rightValue":true},{"id":"has-description","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ !!$json.description }}","rightValue":true},{"id":"has-link","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ !!$json.link_url }}","rightValue":true},{"id":"has-image","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ !!$json.image_url }}","rightValue":true},{"id":"has-board","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ !!$json.board_id }}","rightValue":true}]}},"typeVersion":2.2},{"id":"23fd98f8-9b47-42fc-a153-dac2c2a82a94","name":"Download Image","type":"n8n-nodes-base.httpRequest","position":[384,688],"parameters":{"url":"={{ $json.image_url }}","options":{}},"typeVersion":4.2},{"id":"0b2820b8-53f5-4697-9e0e-9c2296022bb5","name":"Upload Image to PinBridge","type":"n8n-nodes-pinbridge.pinBridge","position":[624,688],"parameters":{"resource":"assets"},"credentials":{"pinBridgeApi":{"id":"TJF7lKZSeKogrFUu","name":"PinBridge Key Sandbox"}},"typeVersion":1},{"id":"b1c66fce-3ce6-47a1-b1a6-634be9eedbd3","name":"Publish to Pinterest","type":"n8n-nodes-pinbridge.pinBridge","position":[864,688],"parameters":{"title":"={{ $json.title }}","altText":"={{ $json.alt_text || '' }}","boardId":"={{ $json.board_id }}","linkUrl":"={{ $json.link_url }}","accountId":"YOUR_PINTEREST_ACCOUNT_ID","description":"={{ $json.description }}","dominantColor":"={{ $json.dominant_color || '#ffffff' }}"},"credentials":{"pinBridgeApi":{"id":"TJF7lKZSeKogrFUu","name":"PinBridge Key Sandbox"}},"typeVersion":1},{"id":"86c27bb9-1967-4b5f-863a-4750b80dd523","name":"Build Success Result","type":"n8n-nodes-base.set","position":[1104,688],"parameters":{"options":{},"assignments":{"assignments":[{"id":"set-status","name":"status","type":"string","value":"submitted"},{"id":"set-job-id","name":"job_id","type":"string","value":"={{ $json.id }}"},{"id":"set-published-at","name":"published_at","type":"string","value":"={{ $now }}"},{"id":"set-error","name":"error_message","type":"string","value":""}]}},"typeVersion":3.4},{"id":"40bf111a-abd4-4e01-8771-25dde90245bd","name":"Update Sheet Success","type":"n8n-nodes-base.googleSheets","position":[1344,688],"parameters":{"columns":{"value":{"job_id":"={{ $json.job_id }}","status":"={{ $json.status }}","published_at":"={{ $json.published_at }}","error_message":"={{ $json.error_message }}"},"schema":[{"id":"row_id","type":"string","display":true,"readOnly":false,"required":false,"displayName":"row_id","defaultMatch":true},{"id":"status","type":"string","display":true,"readOnly":false,"required":false,"displayName":"status","defaultMatch":false},{"id":"job_id","type":"string","display":true,"readOnly":false,"required":false,"displayName":"job_id","defaultMatch":false},{"id":"published_at","type":"string","display":true,"readOnly":false,"required":false,"displayName":"published_at","defaultMatch":false},{"id":"error_message","type":"string","display":true,"readOnly":false,"required":false,"displayName":"error_message","defaultMatch":false}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"Pins"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_GOOGLE_SHEET_ID"}},"credentials":{"googleSheetsOAuth2Api":{"id":"uxKHoiIYG3lTl70m","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"ba480360-c7df-40f8-8186-73a67e12a2fa","name":"Build Invalid Result","type":"n8n-nodes-base.set","position":[384,1264],"parameters":{"options":{},"assignments":{"assignments":[{"id":"invalid-status","name":"status","type":"string","value":"invalid"},{"id":"invalid-error","name":"error_message","type":"string","value":"Missing one or more required fields: title, description, link_url, image_url, board_id"},{"id":"invalid-job-id","name":"job_id","type":"string","value":""},{"id":"invalid-published-at","name":"published_at","type":"string","value":""}]}},"typeVersion":3.4},{"id":"80561e34-0cb2-41b0-970d-872fa5814a6d","name":"Update Sheet Invalid Row","type":"n8n-nodes-base.googleSheets","position":[656,1264],"parameters":{"columns":{"value":{"job_id":"={{ $json.job_id }}","status":"={{ $json.status }}","published_at":"={{ $json.published_at }}","error_message":"={{ $json.error_message }}"},"schema":[{"id":"row_id","type":"string","display":true,"readOnly":false,"required":false,"displayName":"row_id","defaultMatch":true},{"id":"status","type":"string","display":true,"readOnly":false,"required":false,"displayName":"status","defaultMatch":false},{"id":"job_id","type":"string","display":true,"readOnly":false,"required":false,"displayName":"job_id","defaultMatch":false},{"id":"published_at","type":"string","display":true,"readOnly":false,"required":false,"displayName":"published_at","defaultMatch":false},{"id":"error_message","type":"string","display":true,"readOnly":false,"required":false,"displayName":"error_message","defaultMatch":false}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"name","value":"Pins"},"documentId":{"__rl":true,"mode":"id","value":"YOUR_GOOGLE_SHEET_ID"}},"credentials":{"googleSheetsOAuth2Api":{"id":"uxKHoiIYG3lTl70m","name":"Google Sheets account"}},"typeVersion":4.5}],"pinData":{},"connections":{"Download Image":{"main":[[{"node":"Upload Image to PinBridge","type":"main","index":0}]]},"Manual Trigger":{"main":[[{"node":"Read Sheet Rows","type":"main","index":0}]]},"Read Sheet Rows":{"main":[[{"node":"Skip Published Rows","type":"main","index":0}]]},"Skip Published Rows":{"main":[[{"node":"Validate Required Fields","type":"main","index":0}]]},"Build Invalid Result":{"main":[[{"node":"Update Sheet Invalid Row","type":"main","index":0}]]},"Build Success Result":{"main":[[{"node":"Update Sheet Success","type":"main","index":0}]]},"Publish to Pinterest":{"main":[[{"node":"Build Success Result","type":"main","index":0}]]},"Validate Required Fields":{"main":[[{"node":"Download Image","type":"main","index":0}],[{"node":"Build Invalid Result","type":"main","index":0}]]},"Upload Image to PinBridge":{"main":[[{"node":"Publish to Pinterest","type":"main","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":17,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":3},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-pinbridge.pinBridge":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"PinBridge","username":"pinbridge","bio":"PinBridge is a developer-first, production-focused API layer for Pinterest: queues, pacing, and operational controls.","verified":false,"links":["https://www.pinbridge.io"],"avatar":"https://gravatar.com/avatar/f2dd094f98a4ff7ed8eb3d1bea40418d6ad8cb36d0220ee595b1a01a2925ca90?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":33,"name":"Social Media"}],"image":[]}}