AutomationFlowsData & Sheets › Sync Printify Inventory to Supabase

Sync Printify Inventory to Supabase

Original n8n title: Imperium - Printify Inventory Sync

Imperium - Printify Inventory Sync. Uses httpRequest, supabase. Scheduled trigger; 4 nodes.

Cron / scheduled trigger★★★★☆ complexity4 nodesHTTP RequestSupabase
Data & Sheets Trigger: Cron / scheduled Nodes: 4 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "name": "Imperium - Printify Inventory Sync",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 1
            }
          ]
        }
      },
      "id": "schedule",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://api.printify.com/v1/catalog/products.json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer PRINTIFY_API_KEY"
            }
          ]
        }
      },
      "id": "printifyGetProducts",
      "name": "Get Products from Printify",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "const products = $input.first().json;\n\nconst transformedProducts = products.map(product => {\n  const variant = product.variants?.[0] || {};\n  \n  return {\n    printify_id: product.id.toString(),\n    name: product.title,\n    category: mapCategory(product.title),\n    description: product.description || '',\n    price: variant.price ? variant.price / 100 : 0,\n    image_url: product.images?.[0]?.url || '',\n    brand: 'imperium',\n    in_stock: product.variants?.some(v => v.available > 0) || false,\n    printify_variant_id: variant.id?.toString() || ''\n  };\n});\n\nfunction mapCategory(title) {\n  const t = title.toLowerCase();\n  if (t.includes('shirt') || t.includes('tee') || t.includes('t-shirt')) return 'shirts';\n  if (t.includes('hoodie') || t.includes('sweatshirt')) return 'hoodies';\n  if (t.includes('sweat') || t.includes('pants') || t.includes('jogger')) return 'sweats';\n  if (t.includes('beanie')) return 'beanies';\n  if (t.includes('hat') || t.includes('cap') || t.includes('snapback')) return 'hats';\n  return 'shirts';\n}\n\nreturn transformedProducts;"
      },
      "id": "transformData",
      "name": "Transform Data",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "operation": "create",
        "table": "products",
        "columns": [
          "printify_id",
          "name",
          "category",
          "description",
          "price",
          "image_url",
          "brand",
          "in_stock",
          "printify_variant_id",
          "updated_at"
        ],
        "schema": "public",
        "returnAll": false
      },
      "id": "supabaseUpsert",
      "name": "Upsert to Supabase",
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        850,
        300
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Products from Printify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Products from Printify": {
      "main": [
        [
          {
            "node": "Transform Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform Data": {
      "main": [
        [
          {
            "node": "Upsert to Supabase",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {}
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Imperium - Printify Inventory Sync. Uses httpRequest, supabase. Scheduled trigger; 4 nodes.

Source: https://github.com/SandMan-SM/imperium/blob/200983380033d8a9e209ca41b61105425979e950/automations/n8n-workflow-printify-sync.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

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

HTTP Request, RSS Feed Read, Supabase
Data & Sheets

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.

HTTP Request, Supabase, Postgres +1
Data & Sheets

03 - Recordatorio 4h (CON VERIFICACIÓN) ✅. Uses supabase, httpRequest, twilio. Scheduled trigger; 17 nodes.

Supabase, HTTP Request, Twilio
Data & Sheets

02 - Recordatorio 24h antes (CON VERIFICACIÓN) ✅. Uses supabase, httpRequest, twilio. Scheduled trigger; 17 nodes.

Supabase, HTTP Request, Twilio
Data & Sheets

• 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

HTTP Request, Supabase