Pedidos de Airtable a facturas de Stripe (B2B/recaudación manual)

Avanzado

Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como If, Code, Stripe, Airtable, HttpRequest. Crear facturas de Stripe desde pedidos de Airtable y registrar usando Google Sheets

Requisitos previos
  • Clave de API de Stripe
  • Clave de API de Airtable
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "2ko7gxYzw5Uy6lFh",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Airtable Order to Stripe Invoice (B2B/Manual Capture)",
  "tags": [],
  "nodes": [
    {
      "id": "7e7fd28b-de0f-4be1-806f-ff05fe0d383d",
      "name": "Descripción del Flujo de Trabajo",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        80
      ],
      "parameters": {
        "width": 320,
        "height": 708,
        "content": "## 🚀 B2B Invoice Automation Workflow\n\nThis workflow automatically creates Stripe invoices for B2B paid orders and logs them to Google Sheets.\n\n### What it does:\n- Triggers every hour to check for new B2B orders\n- Filters for paid B2B orders only\n- Creates Stripe customers and invoices\n- Logs invoice data to Google Sheets for tracking\n\n### Requirements:\n- Airtable with Orders table\n- Stripe account with API access\n- Google Sheets for logging\n\n### Setup Instructions:\n1. Configure your Airtable credentials\n2. Set up Stripe API credentials\n3. Connect Google Sheets with proper permissions\n4. Update the record ID in \"Fetch B2B Order\" node\n5. Update Google Sheets document ID\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ff6b94d0-1292-4413-a374-72c9304d2bb2",
      "name": "Guía de Configuración de Programación",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        -160
      ],
      "parameters": {
        "width": 280,
        "height": 340,
        "content": "## ⏰ Schedule Setup\n\n**Purpose:** Triggers the workflow every hour to check for new orders\n\n**Configuration:**\n- Interval: 1 hour\n- Can be changed based on your needs\n\n**Tips:**\n- For testing, use manual trigger first\n- Consider timezone settings for your business hours"
      },
      "typeVersion": 1
    },
    {
      "id": "9d95e100-66c2-4bad-b3a3-9aafcdc6ea52",
      "name": "Activador por Hora",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        80,
        208
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "1e771a28-cf1d-4f20-bb4a-5f212bc5ef81",
      "name": "Guía de Configuración Airtable",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        368
      ],
      "parameters": {
        "width": 300,
        "height": 376,
        "content": "## 📋 Airtable Setup\n\n**Purpose:** Fetch order data from your Airtable\n\n**Required Steps:**\n1. Replace the hardcoded record ID with your actual record ID\n2. Update base ID and table ID to match your setup\n3. Ensure your Airtable has these fields:\n   - Customer Name\n   - Email\n   - Phone Number\n   - financial_status\n   - tags\n\n**Security:** Never commit your actual record IDs to public repos"
      },
      "typeVersion": 1
    },
    {
      "id": "fdd91819-6baa-4c0c-bf05-2ef2ae931625",
      "name": "Obtener Pedido B2B",
      "type": "n8n-nodes-base.airtable",
      "position": [
        288,
        208
      ],
      "parameters": {
        "id": "rec5GbGenP8Wurf4W",
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appxjEpOgye5YQG1J",
          "cachedResultUrl": "https://airtable.com/appxjEpOgye5YQG1J",
          "cachedResultName": "Lead Manager"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbl56YM9iZKaIhAB3",
          "cachedResultUrl": "https://airtable.com/appxjEpOgye5YQG1J/tbl56YM9iZKaIhAB3",
          "cachedResultName": "Orders"
        },
        "options": {}
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "nWc9JHR6t25WPWVV",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "87e76054-5d3e-4f98-b565-b2be586673ac",
      "name": "Guía de Filtro de Pedidos",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -176
      ],
      "parameters": {
        "width": 280,
        "height": 336,
        "content": "## 🔍 Order Filtering\n\n**Purpose:** Only process B2B orders that are already paid\n\n**Filter Conditions:**\n- financial_status = \"paid\"\n- tags contains \"B2B\"\n- Both conditions must be true (AND logic)\n\n**Customization:**\n- Modify conditions based on your order structure\n- Add additional filters if needed"
      },
      "typeVersion": 1
    },
    {
      "id": "72e1a601-e9c4-4e65-93db-f4dcb23d9530",
      "name": "Filtrar Pedidos B2B Pagados",
      "type": "n8n-nodes-base.if",
      "position": [
        512,
        208
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "condition1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.financial_status }}",
              "rightValue": "paid"
            },
            {
              "id": "condition2",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.tags }}",
              "rightValue": "B2B"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "aa6e2bc9-1e47-4a4a-9236-cd2066c8b1ac",
      "name": "Guía de Cliente Stripe",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        384
      ],
      "parameters": {
        "width": 300,
        "height": 452,
        "content": "## 👤 Stripe Customer Creation\n\n**Purpose:** Create or update customer in Stripe\n\n**Configuration:**\n- Maps customer data from Airtable\n- Uses continueOnFail to handle existing customers\n- Stores customer ID for invoice creation\n\n**Required Fields:**\n- Customer Name\n- Email\n- Phone Number (optional)\n\n**Note:** Stripe will return existing customer if email already exists"
      },
      "typeVersion": 1
    },
    {
      "id": "162bda8f-8ab2-467b-a856-ee7796da8e81",
      "name": "Crear Cliente Stripe",
      "type": "n8n-nodes-base.stripe",
      "position": [
        736,
        208
      ],
      "parameters": {
        "name": "={{ $json[\"Customer Name\"] }}",
        "resource": "customer",
        "operation": "create",
        "additionalFields": {
          "email": "={{ $json.Email }}",
          "phone": "={{ $json[\"Phone Number\"] }}"
        }
      },
      "credentials": {
        "stripeApi": {
          "id": "DV4tPpxjbOUkGfAx",
          "name": "Stripe account"
        }
      },
      "typeVersion": 1,
      "continueOnFail": true
    },
    {
      "id": "bc462aa9-f034-4e7f-8a07-5668b462396a",
      "name": "Guía de Artículos Line",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -208
      ],
      "parameters": {
        "width": 280,
        "height": 384,
        "content": "## 📄 Line Item Processing\n\n**Purpose:** Split orders into individual line items for invoicing\n\n**What it does:**\n- Processes each product in the order separately\n- Formats data for Stripe invoice creation\n- Handles missing data gracefully\n- Creates test data if no order items found\n\n**Output:** One item per product for detailed invoicing"
      },
      "typeVersion": 1
    },
    {
      "id": "8d23c8a5-9ca5-43ac-a69c-c0ae0e71d1f5",
      "name": "Procesar Artículos Line",
      "type": "n8n-nodes-base.code",
      "position": [
        960,
        208
      ],
      "parameters": {
        "jsCode": "// Get the current input (Stripe customer)\nconst stripeCustomer = $input.item.json;\n\n// Try to get Shopify order from various sources\nlet shopifyOrder = null;\n\n// Method 1: Try from execution data\ntry {\n  const executionData = $workflow.data;\n  console.log('Execution Data:', JSON.stringify(executionData, null, 2));\n} catch (e) {\n  console.log('Cannot access execution data');\n}\n\n// Method 2: Try from items\ntry {\n  const items = $items();\n  console.log('Items:', JSON.stringify(items, null, 2));\n  \n  // Look for Shopify order in items\n  for (const item of items) {\n    if (item.line_items) {\n      shopifyOrder = item;\n      break;\n    }\n  }\n} catch (e) {\n  console.log('Cannot access items');\n}\n\n// Method 3: Create a test line item if no Shopify data found\nif (!shopifyOrder || !shopifyOrder.line_items || shopifyOrder.line_items.length === 0) {\n  console.log('No Shopify order found, creating test data');\n  \n  // Return test data to verify the node works\n  return [\n    {\n      stripe_customer: stripeCustomer,\n      line_item: {\n        id: 'test_item_1',\n        title: 'Test Product',\n        price: '99.99',\n        quantity: 1\n      },\n      price: 99.99,\n      quantity: 1,\n      title: 'Test Product',\n      customer_id: stripeCustomer.id,\n      currency: 'USD'\n    }\n  ];\n}\n\n// If we have Shopify order, process it\nconst lineItems = shopifyOrder.line_items || [];\nconsole.log('Processing line items:', lineItems);\n\n// Return processed line items\nreturn lineItems.map((item, index) => ({\n  shopify_order: shopifyOrder,\n  stripe_customer: stripeCustomer,\n  line_item: item,\n  price: parseFloat(item.price || '0'),\n  quantity: parseInt(item.quantity || '1'),\n  title: item.title || `Item ${index + 1}`,\n  customer_id: stripeCustomer.id,\n  currency: shopifyOrder.currency || 'USD'\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "188a61b7-5c0f-4bab-a2e9-8c15ebf18d7b",
      "name": "Guía de Creación de Factura",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        384
      ],
      "parameters": {
        "width": 300,
        "height": 372,
        "content": "## 🧾 Invoice Creation\n\n**Purpose:** Create draft invoice in Stripe\n\n**Configuration:**\n- Creates invoice for the customer\n- Sets 30-day payment terms\n- Uses send_invoice collection method\n- Includes all pending invoice items\n\n**Parameters:**\n- customer: Stripe customer ID\n- currency: Order currency\n- days_until_due: 30 days\n- auto_advance: false (manual finalization)"
      },
      "typeVersion": 1
    },
    {
      "id": "8e7661ce-e5e0-4011-96ad-c63f561ddfee",
      "name": "Crear Factura Stripe",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1184,
        208
      ],
      "parameters": {
        "url": "https://api.stripe.com/v1/invoices",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "customer",
              "value": "={{ $json.customer_id }}"
            },
            {
              "name": "currency",
              "value": "={{ $json.currency }}"
            },
            {
              "name": "auto_advance",
              "value": "false"
            },
            {
              "name": "collection_method",
              "value": "send_invoice"
            },
            {
              "name": "days_until_due",
              "value": "30"
            },
            {
              "name": "pending_invoice_items_behavior",
              "value": "include"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "nodeCredentialType": "stripeApi"
      },
      "credentials": {
        "stripeApi": {
          "id": "DV4tPpxjbOUkGfAx",
          "name": "Stripe account"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "4f617671-ca7c-4da7-8d32-f15e5845431a",
      "name": "Guía de Finalización",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -192
      ],
      "parameters": {
        "width": 280,
        "height": 384,
        "content": "## ✅ Invoice Finalization\n\n**Purpose:** Finalize the draft invoice to make it payable\n\n**What happens:**\n- Converts draft to final invoice\n- Generates invoice number\n- Makes invoice payable by customer\n- Triggers email sending (if configured)\n\n**Parameters:**\n- auto_advance: true (automatically send)\n- Invoice ID from previous step"
      },
      "typeVersion": 1
    },
    {
      "id": "fdf51683-a973-4a01-9872-3df221a34526",
      "name": "Finalizar Factura",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1392,
        208
      ],
      "parameters": {
        "url": "=https://api.stripe.com/v1/invoices/{{ $json.id }}/finalize ",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "auto_advance",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "nodeCredentialType": "stripeApi"
      },
      "credentials": {
        "stripeApi": {
          "id": "DV4tPpxjbOUkGfAx",
          "name": "Stripe account"
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "6811b3d3-4b24-4637-97be-d5d32b9576e8",
      "name": "Guía de Formato de Datos",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        400
      ],
      "parameters": {
        "width": 280,
        "height": 368,
        "content": "## 📊 Data Formatting\n\n**Purpose:** Format invoice data for Google Sheets logging\n\n**Data includes:**\n- Invoice details (ID, number, status)\n- Customer information\n- Financial amounts (converted from cents)\n- Important URLs (hosted invoice, PDF)\n- Timestamps for tracking\n\n**Output:** Clean, formatted data ready for spreadsheet"
      },
      "typeVersion": 1
    },
    {
      "id": "60bf510e-5a75-4e55-af01-0ca305ddeee5",
      "name": "Formatear Datos para Hojas",
      "type": "n8n-nodes-base.code",
      "position": [
        1584,
        208
      ],
      "parameters": {
        "jsCode": "// Get the invoice data from the HTTP response\nconst invoice = $input.item.json;\n\n// Format the data for Google Sheets\nconst formattedData = {\n  // Invoice Information\n  stripe_invoice_id: invoice.id,\n  invoice_number: invoice.number,\n  invoice_status: invoice.status,\n  \n  // Customer Information\n  customer_id: invoice.customer,\n  customer_name: invoice.customer_name,\n  customer_email: invoice.customer_email,\n  customer_phone: invoice.customer_phone,\n  \n  // Financial Information\n  currency: invoice.currency.toUpperCase(),\n  amount_due: (invoice.amount_due / 100).toFixed(2), // Convert from cents to dollars\n  amount_paid: (invoice.amount_paid / 100).toFixed(2),\n  amount_remaining: (invoice.amount_remaining / 100).toFixed(2),\n  subtotal: (invoice.subtotal / 100).toFixed(2),\n  total: (invoice.total / 100).toFixed(2),\n  \n  // Invoice URLs\n  hosted_invoice_url: invoice.hosted_invoice_url,\n  invoice_pdf: invoice.invoice_pdf,\n  \n  // Dates (converted to readable format)\n  created_date: new Date(invoice.created * 1000).toISOString(),\n  due_date: invoice.due_date ? new Date(invoice.due_date * 1000).toISOString() : null,\n  finalized_at: invoice.status_transitions.finalized_at ? new Date(invoice.status_transitions.finalized_at * 1000).toISOString() : null,\n  paid_at: invoice.status_transitions.paid_at ? new Date(invoice.status_transitions.paid_at * 1000).toISOString() : null,\n  \n  // Additional Information\n  collection_method: invoice.collection_method,\n  billing_reason: invoice.billing_reason,\n  line_items_count: invoice.lines.total_count,\n  \n  // Timestamp for when this record was processed\n  processed_timestamp: new Date().toISOString(),\n  \n  // Original Shopify Order Reference (if available from previous nodes)\n  shopify_order_id: null // This will be populated if you have Shopify data in workflow\n};\n\n// Try to get Shopify order ID from previous nodes if available\ntry {\n  const shopifyData = $('Process Line Items').item.json.shopify_order;\n  if (shopifyData && shopifyData.id) {\n    formattedData.shopify_order_id = shopifyData.id;\n  }\n} catch (e) {\n  console.log('No Shopify order data found');\n}\n\n// Log the formatted data for debugging\nconsole.log('Formatted data for Google Sheets:', formattedData);\n\nreturn formattedData;"
      },
      "typeVersion": 2
    },
    {
      "id": "57fcfb57-b703-4f89-baa9-d784b1f3dd48",
      "name": "Guía de Registro en Hojas",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        -304
      ],
      "parameters": {
        "width": 300,
        "height": 488,
        "content": "## 📋 Google Sheets Logging\n\n**Purpose:** Log invoice data to spreadsheet for tracking\n\n**Setup Required:**\n1. Replace YOUR_SPREADSHEET_ID with your actual Google Sheets ID\n2. Ensure proper column headers in your sheet\n3. Grant n8n access to your Google account\n\n**Logged Data:**\n- Invoice details, customer info, financial amounts\n- URLs for invoice access\n- Timestamps for tracking\n\n**Security:** Never commit your actual spreadsheet ID to public repos"
      },
      "typeVersion": 1
    },
    {
      "id": "c36e89ac-03af-42c7-9c0e-6ca4c1780171",
      "name": "Registrar en Hojas Google",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1792,
        208
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "stripe_invoice_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "stripe_invoice_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "invoice_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "invoice_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "invoice_status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "invoice_status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customer_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customer_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customer_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customer_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customer_email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customer_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customer_phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customer_phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "currency",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "amount_due",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "amount_due",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "amount_paid",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "amount_paid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "amount_remaining",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "amount_remaining",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtotal",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "subtotal",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "total",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hosted_invoice_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "hosted_invoice_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "invoice_pdf",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "invoice_pdf",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "created_date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "created_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "due_date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "due_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "finalized_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "finalized_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "paid_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "paid_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "collection_method",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "collection_method",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "billing_reason",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "billing_reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "line_items_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "line_items_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "processed_timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "processed_timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shopify_order_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "shopify_order_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uc9oXoocsPsu5X0oDx6Q552389F28K8X_Yp75tAvhaU/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Uc9oXoocsPsu5X0oDx6Q552389F28K8X_Yp75tAvhaU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uc9oXoocsPsu5X0oDx6Q552389F28K8X_Yp75tAvhaU/edit?usp=drivesdk",
          "cachedResultName": "Orders Invoices Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9cba8243-00ab-42f0-a229-fcf7e559a4b3",
  "connections": {
    "9d95e100-66c2-4bad-b3a3-9aafcdc6ea52": {
      "main": [
        [
          {
            "node": "fdd91819-6baa-4c0c-bf05-2ef2ae931625",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fdd91819-6baa-4c0c-bf05-2ef2ae931625": {
      "main": [
        [
          {
            "node": "72e1a601-e9c4-4e65-93db-f4dcb23d9530",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fdf51683-a973-4a01-9872-3df221a34526": {
      "main": [
        [
          {
            "node": "60bf510e-5a75-4e55-af01-0ca305ddeee5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8d23c8a5-9ca5-43ac-a69c-c0ae0e71d1f5": {
      "main": [
        [
          {
            "node": "8e7661ce-e5e0-4011-96ad-c63f561ddfee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e7661ce-e5e0-4011-96ad-c63f561ddfee": {
      "main": [
        [
          {
            "node": "fdf51683-a973-4a01-9872-3df221a34526",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "162bda8f-8ab2-467b-a856-ee7796da8e81": {
      "main": [
        [
          {
            "node": "8d23c8a5-9ca5-43ac-a69c-c0ae0e71d1f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "72e1a601-e9c4-4e65-93db-f4dcb23d9530": {
      "main": [
        [
          {
            "node": "162bda8f-8ab2-467b-a856-ee7796da8e81",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "60bf510e-5a75-4e55-af01-0ca305ddeee5": {
      "main": [
        [
          {
            "node": "c36e89ac-03af-42c7-9c0e-6ca4c1780171",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Creación de contenido, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Flujos de trabajo relacionados recomendados

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos19
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34