{
  "name": "Sync Zendesk knowledge base articles to Airtable with markdown conversion",
  "nodes": [
    {
      "id": "d3490654-2438-4d56-95ef-95a7c49b58a0",
      "name": "When clicking ‘Execute workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -100,
        0
      ]
    },
    {
      "id": "b555382d-1794-46aa-89b3-69c07e39a7d4",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        920,
        240
      ]
    },
    {
      "id": "3d30de50-21ac-42f4-b8a3-84cc80d954c7",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -120,
        480
      ]
    },
    {
      "id": "9beaf0bf-e3fb-4958-a355-50d91c58988c",
      "name": "Set fields to store",
      "type": "n8n-nodes-base.set",
      "position": [
        1140,
        240
      ]
    },
    {
      "id": "fa14f526-72f3-4bf8-a892-3a7c1e13edcd",
      "name": "Store Zendesk articles to Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1720,
        240
      ]
    },
    {
      "id": "e5cf0e34-4279-4596-845a-9debdb36fdcc",
      "name": "Set base_url",
      "type": "n8n-nodes-base.set",
      "position": [
        140,
        0
      ]
    },
    {
      "id": "3d7c2245-ed86-4a69-b4e6-fe4050e1e59e",
      "name": "Set base url",
      "type": "n8n-nodes-base.set",
      "position": [
        140,
        480
      ]
    },
    {
      "id": "c7af46d1-f9ea-4300-bc52-56eaf1647336",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        -580
      ],
      "parameters": {
        "width": 860,
        "height": 1700,
        "content": "# Sync Zendesk Knowledge Base Articles to Airtable\n\n## Overview\nThis workflow fetches articles from a Zendesk Knowledge Base and syncs them into an Airtable base. \nIt’s designed for teams who want to "
      }
    },
    {
      "id": "d57bedfe-ba62-448f-8e2b-b5f590477ee8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -180
      ],
      "parameters": {
        "width": 920,
        "height": 380,
        "content": "## Initial sync"
      }
    },
    {
      "id": "ee70ed91-ad63-4709-bdee-d9bbf0e26625",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -120
      ],
      "parameters": {
        "width": 220,
        "height": 280,
        "content": "Starts a full sync"
      }
    },
    {
      "id": "a08100e4-9d8d-4833-8ddb-485836060b6a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -120
      ],
      "parameters": {
        "width": 220,
        "height": 760,
        "content": "Sets your Zendesk domain.\n**💡 Edit the `base_url` before running**"
      }
    },
    {
      "id": "b803d8da-78c3-44ec-9917-0bba7ea5098f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        -120
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "#### Full Fetch: Get Articles\n- Pulls all articles from the Zendesk Help Center API.\n- Uses pagination to get large sets"
      }
    },
    {
      "id": "36877a5a-afc0-4f91-ade3-4648ade23736",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        320
      ],
      "parameters": {
        "width": 280,
        "height": 320,
        "content": "#### Incremental Fetch: Get Articles since last run\n- Pulls only new or updated articles since the last scheduled run.\n- Uses the incremental Zendesk endpoint and the schedule's interval."
      }
    },
    {
      "id": "0b082080-6cef-4672-b0c8-9ce0bfd6dcdb",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        320
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "Runs the workflow automatically on a schedule \n- Fetches only new or updated articles since the last run.\n- Change the interval in the node’s settings."
      }
    },
    {
      "id": "c12804e1-d2fc-47db-95e7-eca226395d59",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        260
      ],
      "parameters": {
        "width": 920,
        "height": 400,
        "content": "## Incremental sync"
      }
    },
    {
      "id": "a6024af3-0a29-4fdc-85e7-19ee8292ad6b",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        120
      ],
      "parameters": {
        "width": 680,
        "height": 320,
        "content": "#### Prepare the data\n- Splits the array of articles so each can be processed individually.\n- Selects and renames fields for storage.\n- Converts Zendesk article body from HTML to Markdown."
      }
    },
    {
      "id": "5ee117d9-c294-4a6b-ad52-ce709bb12d66",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1580,
        120
      ],
      "parameters": {
        "width": 380,
        "height": 320,
        "content": "#### Store Articles\nUpserts into Airtable, matching by Article ID\n💡 Update the Airtable base and table before running"
      }
    },
    {
      "id": "a73345d0-cc39-4a5d-9407-8cefaa0082b3",
      "name": "Get articles since last run",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        420,
        480
      ]
    },
    {
      "id": "96968991-0f63-4c53-bbc3-b5b22d88cd54",
      "name": "Get all articles",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        400,
        0
      ]
    },
    {
      "id": "b3ecd6a3-616d-4a7f-8db9-fd8eb88ddae8",
      "name": "Body to Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        1360,
        240
      ]
    },
    {
      "id": "70e66adc-d38f-40b2-8bef-245df759b2de",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1140,
        -900
      ],
      "parameters": {
        "width": 400,
        "height": 300,
        "content": "## Attribution\n![Agent Studio](https://agentstudio.io/images/agent_studio_logo_small.png)\nThis template was created by [Agent Studio](https://agentstudio.io/) and is available for free on [n8n](https:"
      }
    }
  ],
  "connections": {
    "Split Out": {
      "main": [
        [
          {
            "node": "Set fields to store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set base url": {
      "main": [
        [
          {
            "node": "Get articles since last run",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set base_url": {
      "main": [
        [
          {
            "node": "Get all articles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Body to Markdown": {
      "main": [
        [
          {
            "node": "Store Zendesk articles to Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all articles": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Set base url",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set fields to store": {
      "main": [
        [
          {
            "node": "Body to Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get articles since last run": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Set base_url",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}