This workflow corresponds to n8n.io template #5503 — we link there as the canonical source.
This workflow follows the HTTP Request → Supabase recipe pattern — see all workflows that pair these two integrations.
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 →
{
"id": "sezfOd4PU3efRizo",
"name": "Zoho Inventory to Supabase",
"tags": [],
"nodes": [
{
"id": "a3eaaf09-eb05-4181-a196-ab80b2b1cc64",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1000,
-60
],
"parameters": {
"width": 620,
"height": 460,
"content": "## Automated Zoho Inventory to Supabase Data Migration Workflow\n\nThis n8n workflow automates the process of migrating product data from Zoho Inventory to a Supabase table, ensuring seamless, scheduled updates and organized data management. Key features include:\n\t\u2022\tAutomated Scheduling: Runs on a set schedule to keep Supabase tables in sync with Zoho Inventory.\n\t\u2022\tSecure API Integration: Uses Zoho\u2019s OAuth2.0 for secure access token generation and API requests.\n\t\u2022\tComprehensive Data Retrieval: Fetches all listed items from Zoho Inventory, including detailed product attributes and stock information.\n\t\u2022\tData Structuring: Splits and organizes retrieved data for efficient migration.\n\t\u2022\tDirect Supabase Migration: Maps and transfers relevant fields\u2014such as product IDs, names, variants, attributes, and stock levels\u2014directly into your Supabase database.\n\t\u2022\tScalable & Reliable: Easily adapts to growing product catalogs and ensures consistent, up-to-date inventory records.\n\nIdeal for businesses looking to automate their inventory data pipeline between Zoho and Supabase, reducing manual work and minimizing errors."
},
"typeVersion": 1
},
{
"id": "111cf5b9-cf9e-4a1a-9120-f2938207fac5",
"name": "Scheduled Trigger1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-100,
80
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "24a43bf2-fd13-4c2a-9c8b-45687aa136ed",
"name": "POST to Zoho API for Access Token1",
"type": "n8n-nodes-base.httpRequest",
"position": [
120,
80
],
"parameters": {
"url": "https://accounts.zoho.in/oauth/v2/token",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "refresh_token",
"value": "your refresh token here"
},
{
"name": "client_id",
"value": "your client id here"
},
{
"name": "client_secret",
"value": "your client secret here"
},
{
"name": "grant_type",
"value": "refresh_token"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6f450435-efb3-4ee7-bfe2-3950018c05f0",
"name": "GET to Zoho Inventory for Listed Items1",
"type": "n8n-nodes-base.httpRequest",
"position": [
340,
80
],
"parameters": {
"url": "https://www.zohoapis.in/inventory/v1/items",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "organization_id",
"value": "your organization id here"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Zoho-oauthtoken {{ $json.access_token }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "433dba2c-a9a9-4c8b-af95-c884cdff3f62",
"name": "Split for better organisation1",
"type": "n8n-nodes-base.splitOut",
"position": [
560,
80
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "items"
},
"typeVersion": 1
},
{
"id": "b96e2231-06f7-4b7a-8d6e-5c734ecafb79",
"name": "Migrating to Supabase Table1",
"type": "n8n-nodes-base.supabase",
"notes": "https://docs.google.com/spreadsheets/d/1lm2cYalIe3mt8w7XZf7ZGeAxjksRst_EddW4uJ2SOV8/edit?usp=sharing",
"position": [
780,
80
],
"parameters": {
"tableId": "Fairy Frills",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "Product ID",
"fieldValue": "={{ $json.items.group_id }}"
},
{
"fieldId": "Product Name",
"fieldValue": "={{ $json.items.group_name }}"
},
{
"fieldId": "Brand",
"fieldValue": "={{ $json.items.brand }}"
},
{
"fieldId": "Variant ID",
"fieldValue": "={{ $json.items.item_id }}"
},
{
"fieldId": "Is Returnable Item",
"fieldValue": "={{ $json.items.is_returnable }}"
},
{
"fieldId": "AttributeName1",
"fieldValue": "={{ $json.items.attribute_name1 }}"
},
{
"fieldId": "AttributeType1",
"fieldValue": "={{ $json.items.attribute_type1 }}"
},
{
"fieldId": "AttributeName2",
"fieldValue": "={{ $json.items.attribute_name2 }}"
},
{
"fieldId": "AttributeType2",
"fieldValue": "={{ $json.items.attribute_type2 }}"
},
{
"fieldId": "AttributeName3",
"fieldValue": "={{ $json.items.attribute_name3 }}"
},
{
"fieldId": "AttributeType3",
"fieldValue": "={{ $json.items.attribute_type3 }}"
},
{
"fieldId": "Tags",
"fieldValue": "={{ $json.items.tags }}"
},
{
"fieldId": "Unit",
"fieldValue": "={{ $json.items.unit }}"
},
{
"fieldId": "Item Type",
"fieldValue": "={{ $json.items.item_type }}"
},
{
"fieldId": "Variant Name",
"fieldValue": "={{ $json.items.item_name }}"
},
{
"fieldId": "SKU",
"fieldValue": "={{ $json.items.sku }}"
},
{
"fieldId": "AttributeOptionData2",
"fieldValue": "={{ $json.items.attribute_option_data2 }}"
},
{
"fieldId": "AttributeOptionData3",
"fieldValue": "={{ $json.items.attribute_option_data3 }}"
},
{
"fieldId": "Stock On Hand",
"fieldValue": "={{ $json.items.stock_on_hand }}"
},
{
"fieldId": "UPC",
"fieldValue": "={{ $json.items.upc }}"
},
{
"fieldId": "EAN",
"fieldValue": "={{ $json.items.ean }}"
},
{
"fieldId": "ISBN",
"fieldValue": "={{ $json.items.isbn }}"
},
{
"fieldId": "Status",
"fieldValue": "={{ $json.items.status }}"
},
{
"fieldId": "Part Number",
"fieldValue": "={{ $json.items.part_number }}"
},
{
"fieldId": "Reorder Level",
"fieldValue": "={{ $json.items.reorder_level }}"
},
{
"fieldId": "Dimension Unit",
"fieldValue": "={{ $json.items.dimension_unit }}"
},
{
"fieldId": "Weight Unit",
"fieldValue": "={{ $json.items.weight_unit }}"
},
{
"fieldId": "Created Time",
"fieldValue": "={{ $json.items.created_time }}"
}
]
}
},
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "83553668-5a8e-465f-9893-bd20d4391d00",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-20,
300
],
"parameters": {
"color": 5,
"width": 360,
"height": 200,
"content": "## POST for Access Token\n- Go to Zoho API Console\n- Create a self client with the scope ZohoInventory.items.READ\n- Get Refresh Token, Client ID, and Client Secret\n- This node is using the Refresh Token to create an Access Token for later use"
},
"typeVersion": 1
},
{
"id": "f4cbe976-520f-4dd7-ab78-080754bd3750",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
-160
],
"parameters": {
"color": 4,
"width": 360,
"height": 200,
"content": "## GET Items from Zoho Inventory\n- Find your organization ID from Zoho Commerce URL\n- This node gets all the items from Zoho Inventory"
},
"typeVersion": 1
},
{
"id": "3f452ab6-7e20-49d1-93fb-c72b0acfc26b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
300
],
"parameters": {
"color": 3,
"width": 360,
"height": 200,
"content": "## Split Node\n- This node splits the list for better organization of the flow\n"
},
"typeVersion": 1
},
{
"id": "758314fa-3684-41e1-b1ce-adaf960afd9c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-160
],
"parameters": {
"color": 2,
"width": 360,
"height": 200,
"content": "## Migrate to Supabase\n- Sending product information to Supabase Table\n- Find URL in the Notes for Table Coloumns\n- Make a Copy of the Google Sheet, and Import it to your Supabase Project from Table Editor"
},
"typeVersion": 1
},
{
"id": "10d1ee56-7fd0-4493-849c-a3b4e8d88f33",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
-160
],
"parameters": {
"color": 7,
"width": 360,
"height": 200,
"content": "## Scheduled Trigger 1\n- Use this trigger for scheduling the workflow at regular intervals \n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "d5c8959d-9406-456f-9271-59f0f63b83b1",
"connections": {
"Scheduled Trigger1": {
"main": [
[
{
"node": "POST to Zoho API for Access Token1",
"type": "main",
"index": 0
}
]
]
},
"Split for better organisation1": {
"main": [
[
{
"node": "Migrating to Supabase Table1",
"type": "main",
"index": 0
}
]
]
},
"POST to Zoho API for Access Token1": {
"main": [
[
{
"node": "GET to Zoho Inventory for Listed Items1",
"type": "main",
"index": 0
}
]
]
},
"GET to Zoho Inventory for Listed Items1": {
"main": [
[
{
"node": "Split for better organisation1",
"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.
supabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Description
Source: https://n8n.io/workflows/5503/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow solves a common problem with RSS feeds: they often only provide a short summary or snippet of the full article. This template automatically monitors a list of your favorite blog RSS feed
This workflow is a multi-system document synchronization pipeline built in n8n, designed to automatically sync and back up files between Microsoft SharePoint, Supabase/Postgres, and Google Drive.
03 - Recordatorio 4h (CON VERIFICACIÓN) ✅. Uses supabase, httpRequest, twilio. Scheduled trigger; 17 nodes.
02 - Recordatorio 24h antes (CON VERIFICACIÓN) ✅. Uses supabase, httpRequest, twilio. Scheduled trigger; 17 nodes.
• Fetches IT-related tenders from the French BOAMP API (filter: informatique) • Scores each tender with OpenAI (pertinence, budget, stack, GO/NO-GO) • Routes to Supabase as hot (≥75) or archived • Run