AutomationFlowsSlack & Telegram › Import Productboard Notes Companies And Features Into Snowflake

Import Productboard Notes Companies And Features Into Snowflake

Import Productboard Notes Companies And Features Into Snowflake. Uses stickyNote, httpRequest, splitOut, snowflake. Scheduled trigger; 35 nodes.

Cron / scheduled trigger★★★★★ complexity35 nodesHttp RequestSnowflakeSlack
Slack & Telegram Trigger: Cron / scheduled Nodes: 35 Complexity: ★★★★★

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "adcb71e4-880b-4c19-acbb-0708ae4af95f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5620,
        1440
      ],
      "parameters": {
        "color": 5,
        "width": 442.66083354762577,
        "height": 155.09952210536395,
        "content": "## Preview Slack Message\n:productboard: Weekly Update in :snowflake_logo: Completed\n27 new insights added in the last 7 days.\n88 insights remain unprocessed.\nYou can view the updated :metabase: dashboard below:\n<link metabase>\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8a590e59-cbcd-43f3-a0de-7c1391661fcf",
      "name": "Manual mapping feature",
      "type": "n8n-nodes-base.set",
      "position": [
        4380,
        -180
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "feature_id",
              "stringValue": "={{ $json.id }}"
            },
            {
              "name": "feature_name",
              "stringValue": "={{ $json.name }}"
            },
            {
              "name": "feature_status",
              "stringValue": "={{ $json.status.name }}"
            },
            {
              "name": "feature_start_date",
              "stringValue": "={{ $json.timeframe.startDate }}"
            },
            {
              "name": "feature_end_date",
              "stringValue": "={{ $json.timeframe.endDate }}"
            },
            {
              "name": "feature_owner",
              "stringValue": "={{ $json.owner.email }}"
            },
            {
              "name": "feature_created_at",
              "stringValue": "={{ $json.createdAt }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "ca339c8f-71c0-432f-88ef-595b9bc24b98",
      "name": "get productboard companies",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4060,
        220
      ],
      "parameters": {
        "url": "https://api.productboard.com/companies",
        "options": {
          "pagination": {
            "pagination": {
              "nextURL": "={{ $response.body[\"links\"][\"next\"] }}",
              "paginationMode": "responseContainsNextURL",
              "requestInterval": 2000,
              "completeExpression": "={{ $response.body[\"links\"][\"next\"] === null }}",
              "paginationCompleteWhen": "other"
            }
          }
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "X-Version",
              "value": "1"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.1,
      "alwaysOutputData": true
    },
    {
      "id": "ba15244b-4311-4045-8087-47f05bea427e",
      "name": "Manual mapping companies",
      "type": "n8n-nodes-base.set",
      "position": [
        4760,
        220
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "company_id",
              "stringValue": "={{ $json.id }}"
            },
            {
              "name": "company_name",
              "stringValue": "={{ $json.name }}"
            },
            {
              "name": "company_domain",
              "stringValue": "={{ $json.domain }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "d7c491cf-6545-40e1-9ee5-429e4f6b8cb4",
      "name": "get productboard notes",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4500,
        640
      ],
      "parameters": {
        "url": " https://api.productboard.com/notes",
        "options": {
          "pagination": {
            "pagination": {
              "parameters": {
                "parameters": [
                  {
                    "name": "pageCursor",
                    "value": "={{ $response.body.pageCursor }}"
                  }
                ]
              },
              "requestInterval": 2000,
              "completeExpression": "={{ $response.body.pageCursor === null }}",
              "paginationCompleteWhen": "other"
            }
          }
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "X-Version",
              "value": "1"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "beeb2cfc-c017-4691-b92f-ee10b943b08d",
      "name": "Manual mapping notes",
      "type": "n8n-nodes-base.set",
      "position": [
        5200,
        640
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "note_id",
              "stringValue": "={{ $json.id }}"
            },
            {
              "name": "note_title",
              "stringValue": "={{ $json.title }}"
            },
            {
              "name": "note_state",
              "stringValue": "={{ $json.state }}"
            },
            {
              "name": "note_company_id",
              "stringValue": "={{ $json.company.id }}"
            },
            {
              "name": "note_source",
              "stringValue": "={{ $json.source.origin }}"
            },
            {
              "name": "note_content",
              "stringValue": "={{ $json.content }}"
            },
            {
              "name": "note_created_at",
              "stringValue": "={{ $json.createdAt }}"
            },
            {
              "name": "note_created_by",
              "stringValue": "={{ $json.createdBy.name }}"
            },
            {
              "name": "note_owner",
              "stringValue": "={{ $json.owner.name }}"
            },
            {
              "name": "note_url",
              "stringValue": "={{ $json.displayUrl }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "770df012-b5a0-49f9-9614-8988c2436c34",
      "name": "Split features",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        3920,
        -180
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "910e27f0-b910-415e-a171-5c6cfce07dc4",
      "name": "Split companies",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        4300,
        220
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "f57f3865-8970-4771-aee6-2e656215b13e",
      "name": "Split notes",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        4740,
        640
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "d3939c15-9523-49c1-93ba-7942d37a0ec0",
      "name": "Split features in notes",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        5400,
        900
      ],
      "parameters": {
        "include": "selectedOtherFields",
        "options": {},
        "fieldToSplitOut": "features",
        "fieldsToInclude": "id"
      },
      "typeVersion": 1
    },
    {
      "id": "bde6dc0c-6104-4b84-8c09-33dbe0cfe69f",
      "name": "Combine Feature ID + Note ID",
      "type": "n8n-nodes-base.set",
      "position": [
        5640,
        900
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "note_id",
              "stringValue": "={{ $json.id }}"
            },
            {
              "name": "feature_id",
              "stringValue": "={{ $json.features.id }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "b47db956-ec4f-4342-b973-aa3277e397f2",
      "name": "get productboard features",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3680,
        -180
      ],
      "parameters": {
        "url": "https://api.productboard.com/features",
        "options": {
          "pagination": {
            "pagination": {
              "nextURL": "={{ $response.body[\"links\"][\"next\"] }}",
              "paginationMode": "responseContainsNextURL",
              "requestInterval": 3000,
              "completeExpression": "={{ $response.body[\"links\"][\"next\"] === null }}",
              "paginationCompleteWhen": "other"
            }
          }
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "X-Version",
              "value": "1"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "ef3cd766-3887-4d6b-981b-d8e72a06a655",
      "name": "Update Productboard Notes",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        5940,
        660
      ],
      "parameters": {
        "table": "PRODUCTBOARD_NOTES",
        "columns": "NOTE_ID,NOTE_TITLE,NOTE_STATE,NOTE_COMPANY_ID,NOTE_SOURCE,NOTE_CONTENT,NOTE_CREATED_BY,NOTE_OWNER,NOTE_CREATED_AT,NOTE_URL"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8dc03797-1ac9-47a8-8e4c-e85e9539b091",
      "name": "Empty Table Productboard Notes",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        4260,
        640
      ],
      "parameters": {
        "query": "TRUNCATE TABLE PRODUCTBOARD_NOTES;",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "9d5a6d6f-a672-48b0-baf8-67b608690d28",
      "name": "[CREATE] PRODUCTBOARD_NOTES",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3280,
        1140
      ],
      "parameters": {
        "query": "CREATE OR REPLACE TABLE PRODUCTBOARD_NOTES (\n    note_id STRING NOT NULL,\n    note_title STRING,\n    note_state STRING,\n    note_company_id STRING,\n    note_source STRING,\n    note_content STRING,\n    note_created_by STRING,\n    note_owner STRING,\n    note_url STRING,\n    note_created_at TIMESTAMP_NTZ\n);",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ea27f38b-3199-46aa-959f-9c1502898696",
      "name": "[CREATE] PRODUCTBOARD_COMPANIES",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3520,
        1140
      ],
      "parameters": {
        "query": "CREATE OR REPLACE TABLE PRODUCTBOARD_COMPANIES (\n    company_id STRING NOT NULL,\n    company_name STRING,\n    company_domain STRING\n);",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7bb94678-d106-4b77-8a96-4c598b057d09",
      "name": "Update Productboard Companies",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        5280,
        220
      ],
      "parameters": {
        "table": "PRODUCTBOARD_COMPANIES",
        "columns": "COMPANY_ID,COMPANY_NAME,COMPANY_DOMAIN"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "86128f9b-8b16-4dc0-bdf5-1bab946716e2",
      "name": "Manual mapping companies db",
      "type": "n8n-nodes-base.set",
      "position": [
        5020,
        220
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "COMPANY_ID",
              "stringValue": "={{ $json.company_id }}"
            },
            {
              "name": "COMPANY_NAME",
              "stringValue": "={{ $json.company_name }}"
            },
            {
              "name": "COMPANY_DOMAIN",
              "stringValue": "={{ $json.company_domain }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "dd2a3264-4171-43af-9409-ad2e79091bfb",
      "name": "Manual mapping notes db",
      "type": "n8n-nodes-base.set",
      "position": [
        5720,
        660
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "NOTE_ID",
              "stringValue": "={{ $json.note_id }}"
            },
            {
              "name": "NOTE_TITLE",
              "stringValue": "={{ $json.note_title }}"
            },
            {
              "name": "NOTE_STATE",
              "stringValue": "={{ $json.note_state }}"
            },
            {
              "name": "NOTE_COMPANY_ID",
              "stringValue": "={{ $json.note_company_id }}"
            },
            {
              "name": "NOTE_CONTENT",
              "stringValue": "={{ $json.note_content }}"
            },
            {
              "name": "NOTE_CREATED_BY",
              "stringValue": "={{ $json.note_created_by }}"
            },
            {
              "name": "NOTE_CREATED_AT",
              "stringValue": "={{ $json.note_created_at }}"
            },
            {
              "name": "NOTE_SOURCE",
              "stringValue": "={{ $json.note_source }}"
            },
            {
              "name": "NOTE_OWNER",
              "stringValue": "={{ $json.note_owner }}"
            },
            {
              "name": "NOTE_URL",
              "stringValue": "={{ $json.note_url }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "d163879a-6020-4ace-b3ea-36c3d7b3675a",
      "name": "Empty Table Productboard Companies",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3820,
        220
      ],
      "parameters": {
        "query": "TRUNCATE TABLE PRODUCTBOARD_COMPANIES;",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "0dbf1a3c-ae8b-4e7b-afb5-d1363d3d7634",
      "name": "[CREATE] PRODUCTBOARD_NOTES_FEATURES",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3760,
        1140
      ],
      "parameters": {
        "query": "CREATE OR REPLACE TABLE PRODUCTBOARD_NOTES_FEATURES (\n    note_id STRING NOT NULL,\n    feature_id STRING\n)",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fa9e8744-c348-481c-a6f9-083689ee8ea9",
      "name": "Manual mapping feature note IDs db",
      "type": "n8n-nodes-base.set",
      "position": [
        6160,
        920
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "NOTE_ID",
              "stringValue": "={{ $json.note_id }}"
            },
            {
              "name": "FEATURE_ID",
              "stringValue": "={{ $json.feature_id }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "718f041a-dd02-4331-a704-fd1aa809212b",
      "name": "Update Productboard Note and Feature IDs",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        6380,
        920
      ],
      "parameters": {
        "table": "PRODUCTBOARD_NOTES_FEATURES",
        "columns": "NOTE_ID,FEATURE_ID"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "51430e95-1eb9-4c47-a0cf-e05708e6d41b",
      "name": "Empty Table Productboard Note and Feature IDs",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        4040,
        640
      ],
      "parameters": {
        "query": "TRUNCATE TABLE PRODUCTBOARD_NOTES_FEATURES;",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "8c03178f-baf1-4ed8-94d8-91e90ef5cd26",
      "name": "Loop Over Items notes",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        5460,
        640
      ],
      "parameters": {
        "options": {},
        "batchSize": 100
      },
      "typeVersion": 3
    },
    {
      "id": "0c6a787f-48da-479c-b45a-8122b8fada3f",
      "name": "Loop Over Items features notes",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        5900,
        900
      ],
      "parameters": {
        "options": {},
        "batchSize": 100
      },
      "typeVersion": 3
    },
    {
      "id": "1adb9ff0-be18-4ceb-aae0-62186e75668f",
      "name": "[CREATE] PRODUCTBOARD_FEATURES",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3040,
        1140
      ],
      "parameters": {
        "query": "CREATE OR REPLACE TABLE PRODUCTBOARD_FEATURES (\n    feature_id STRING NOT NULL,\n    feature_name STRING,\n    feature_status STRING,\n    feature_start_date STRING,\n    feature_end_date STRING,\n    feature_owner STRING,\n    feature_created_at STRING\n);",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0357ba46-4934-4c3f-8f0a-676496a6eee6",
      "name": "Empty Table Productboard Features",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        3440,
        -180
      ],
      "parameters": {
        "query": "TRUNCATE TABLE PRODUCTBOARD_FEATURES;",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "df076304-ce27-4801-8e0f-c268b313ef4e",
      "name": "Loop Over Items features",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        4640,
        -180
      ],
      "parameters": {
        "options": {},
        "batchSize": 100
      },
      "typeVersion": 3
    },
    {
      "id": "40732e40-5ff2-4b1f-b300-b6b734e31637",
      "name": "Manual mapping features db",
      "type": "n8n-nodes-base.set",
      "position": [
        4900,
        -160
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "FEATURE_ID",
              "stringValue": "={{ $json.feature_id }}"
            },
            {
              "name": "FEATURE_NAME",
              "stringValue": "={{ $json.feature_name }}"
            },
            {
              "name": "FEATURE_STATUS",
              "stringValue": "={{ $json.feature_status }}"
            },
            {
              "name": "FEATURE_START_DATE",
              "stringValue": "={{ $json.feature_start_date }}"
            },
            {
              "name": "FEATURE_END_DATE",
              "stringValue": "={{ $json.feature_end_date }}"
            },
            {
              "name": "FEATURE_OWNER",
              "stringValue": "={{ $json.feature_owner }}"
            },
            {
              "name": "FEATURE_CREATED_AT",
              "stringValue": "={{ $json.feature_created_at }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "59a838c4-fef0-4902-b6d6-418934ac986f",
      "name": "Update Productboard Features",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        5140,
        -160
      ],
      "parameters": {
        "table": "PRODUCTBOARD_FEATURES",
        "columns": "FEATURE_ID,FEATURE_NAME,FEATURE_STATUS,FEATURE_START_DATE,FEATURE_END_DATE,FEATURE_OWNER,FEATURE_CREATED_AT"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "110ebd3a-50ac-4e9f-9297-f64759dfdd18",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2980,
        -180
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "3eb88f88-8fad-4aaf-b6f9-6f7d87e30018",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "onError": "continueRegularOutput",
      "position": [
        5900,
        1220
      ],
      "parameters": {
        "text": "=",
        "select": "channel",
        "blocksUi": "={\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \":productboard: Weekly Update in :snowflake_logo: Completed\\n\\n*{{ $json.NOTES_7_DAYS }}* new insights added in the last 7 days.\\n\\n*{{ $json.NOTES_UNPROCESSED }}* insights remain unprocessed.\\n\\nYou can view the updated :metabase: dashboard below:\"\n      }\n    },\n    {\n      \"type\": \"actions\",\n      \"elements\": [\n        {\n          \"type\": \"button\",\n          \"text\": {\n            \"type\": \"plain_text\",\n            \"text\": \"Open Dashboard\",\n            \"emoji\": true\n          },\n          \"url\": \"https://metabase.com\"\n        }\n      ]\n    }\n  ]\n}",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#product-notifications"
        },
        "messageType": "block",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "retryOnFail": false,
      "typeVersion": 2.1
    },
    {
      "id": "3a16d947-a218-4ec2-8081-19b676bb51c3",
      "name": "Count Notes Last 7 days and Unprocessed",
      "type": "n8n-nodes-base.snowflake",
      "position": [
        5660,
        1220
      ],
      "parameters": {
        "query": "SELECT\n    COUNT(DISTINCT CASE \n        WHEN DATEDIFF(DAY, NOTE_CREATED_AT, CURRENT_DATE()) <= 7 THEN note_id \n    END) AS notes_7_days,\n    COUNT(DISTINCT CASE \n        WHEN NOTE_STATE = 'unprocessed' THEN note_id \n    END) AS notes_unprocessed\nFROM PRODUCTBOARD_NOTES;\n",
        "operation": "executeQuery"
      },
      "credentials": {
        "snowflake": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "2bdfb96c-1c38-444d-9507-ab74f3572129",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2980,
        1060
      ],
      "parameters": {
        "color": 5,
        "width": 983.4896175671602,
        "height": 314.88047081122676,
        "content": "## Setup snowflake tables"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Split notes": {
      "main": [
        [
          {
            "node": "Manual mapping notes",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split features in notes",
            "type": "main",
            "index": 0
          },
          {
            "node": "Count Notes Last 7 days and Unprocessed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split features": {
      "main": [
        [
          {
            "node": "Manual mapping feature",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split companies": {
      "main": [
        [
          {
            "node": "Manual mapping companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Empty Table Productboard Features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping notes": {
      "main": [
        [
          {
            "node": "Loop Over Items notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items notes": {
      "main": [
        [],
        [
          {
            "node": "Manual mapping notes db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping feature": {
      "main": [
        [
          {
            "node": "Loop Over Items features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get productboard notes": {
      "main": [
        [
          {
            "node": "Split notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping notes db": {
      "main": [
        [
          {
            "node": "Update Productboard Notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split features in notes": {
      "main": [
        [
          {
            "node": "Combine Feature ID + Note ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items features": {
      "main": [
        [
          {
            "node": "Empty Table Productboard Companies",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Manual mapping features db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping companies": {
      "main": [
        [
          {
            "node": "Manual mapping companies db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Productboard Notes": {
      "main": [
        [
          {
            "node": "Loop Over Items notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get productboard features": {
      "main": [
        [
          {
            "node": "Split features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping features db": {
      "main": [
        [
          {
            "node": "Update Productboard Features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get productboard companies": {
      "main": [
        [
          {
            "node": "Split companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping companies db": {
      "main": [
        [
          {
            "node": "Update Productboard Companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine Feature ID + Note ID": {
      "main": [
        [
          {
            "node": "Loop Over Items features notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Productboard Features": {
      "main": [
        [
          {
            "node": "Loop Over Items features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Productboard Companies": {
      "main": [
        [
          {
            "node": "Empty Table Productboard Note and Feature IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Empty Table Productboard Notes": {
      "main": [
        [
          {
            "node": "get productboard notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items features notes": {
      "main": [
        [],
        [
          {
            "node": "Manual mapping feature note IDs db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Empty Table Productboard Features": {
      "main": [
        [
          {
            "node": "get productboard features",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Empty Table Productboard Companies": {
      "main": [
        [
          {
            "node": "get productboard companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual mapping feature note IDs db": {
      "main": [
        [
          {
            "node": "Update Productboard Note and Feature IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Count Notes Last 7 days and Unprocessed": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Productboard Note and Feature IDs": {
      "main": [
        [
          {
            "node": "Loop Over Items features notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Empty Table Productboard Note and Feature IDs": {
      "main": [
        [
          {
            "node": "Empty Table Productboard Notes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

About this workflow

Import Productboard Notes Companies And Features Into Snowflake. Uses stickyNote, httpRequest, splitOut, snowflake. Scheduled trigger; 35 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →