AutomationFlowsEmail & Gmail › Fluidflow Licensing Framework

Fluidflow Licensing Framework

Fluidflow Licensing Framework. Uses httpRequest, xero, googleSheetsTrigger, slack. Event-driven trigger; 25 nodes.

Event trigger★★★★☆ complexity25 nodesHTTP RequestXeroGoogle Sheets TriggerSlackGmailHubSpotGoogle Sheets
Email & Gmail Trigger: Event Nodes: 25 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Sheets 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": "Fluidflow Licensing Framework",
  "nodes": [
    {
      "parameters": {
        "url": "https://anvil.example.com/api/generateContract",
        "jsonParameters": true,
        "options": {}
      },
      "name": "Send Anvil Contract1",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        -280,
        1420
      ],
      "id": "926773d9-be38-49fa-a194-ab37e8ca3a02"
    },
    {
      "parameters": {
        "additionalFields": {}
      },
      "name": "Create Xero Invoice1",
      "type": "n8n-nodes-base.xero",
      "typeVersion": 1,
      "position": [
        1080,
        800
      ],
      "id": "74d81375-c975-43a0-91bd-93967b4d92f9",
      "credentials": {
        "xeroOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "disabled": true
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "documentId": {
          "__rl": true,
          "value": "1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE",
          "mode": "list",
          "cachedResultName": "MasterLead TEMPLATE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 240677149,
          "mode": "list",
          "cachedResultName": "MasterList",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE/edit#gid=240677149"
        },
        "event": "rowAdded",
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [
        -380,
        500
      ],
      "id": "46eb1dae-8403-4d10-b9c8-80a59e6c6855",
      "name": "Google Sheets Trigger",
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Trigger from Sheet",
        "height": 80,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        180,
        520
      ],
      "id": "1b9ae3dd-8e76-4c2a-b7e8-01010cfeb9f5",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "channel": "fluidflow-licensing-bot",
        "text": "=New FluidFlow quote for {{ $('Google Sheets Trigger').item.json.Email }} with SKU {{ $('Google Sheets Trigger').item.json.SKU_Selected }}. @brian please record Loom.",
        "otherOptions": {},
        "attachments": []
      },
      "name": "Slack Notification3",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [
        -460,
        1180
      ],
      "id": "f2e9c86a-fdec-4708-87be-8b876f415d43",
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "fcb.sinaga@gmail.com",
        "subject": "={{ $json.message.blocks[0].elements[0].elements[0].text }}",
        "emailType": "text",
        "message": "=**Hello [CUSTOMER_NAME],**\n\nThank you for your interest in FluidFlow. Based on your requirements, here is your personalized licensing quote.  \n\n## **Quote Summary**  *\n*Package:**\u00a0[PACKAGE_NAME]  **Users:**\u00a0[USER_COUNT] engineers  \n**Quote Date:**\u00a0[QUOTE_DATE]  \n**Quote ID:**\u00a0[QUOTE_ID]  \n\n**Recommended**  \n\n**[LICENSE_TYPE] Licenses**  \n**[TOTAL_PRICE]**  \n[PRICE_BREAKDOWN]  **\nPricing Details:**\n[DETAILED_CALCULATION]  \n**Product SKU:**\u00a0[SKU_CODE]\n**License Count:**\u00a0[LICENSE_QUANTITY]  \n\n### **Why This Works for You**  \n- [REASON_1]\n- [REASON_2] \n- [REASON_3]  \n\n### **What's Included**  \n\n### **Ready to Proceed**  Get started with FluidFlow today  [**Review Contract**](https://www.claudeusercontent.com/[CONTRACT_LINK])  [**Schedule Demo**](https://www.claudeusercontent.com/[DEMO_LINK])  **Quote Valid Until:**\u00a0\n[EXPIRY_DATE]**Terms:**\u00a0\n\nNet 14 payment terms | Annual billing  \n\n### Questions About Your Quote  **Email:**\u00a0sales@fluidflow.com  \n**Phone:**\u00a0+44 (0)1296 481 220  **Web:**\u00a0www.fluidflowinfo.com  \n\nReply to this email with any questions - we're here to help  \n\n**FluidFlow Design Suite**  \nComplete pipe flow simulation software",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        -40,
        1180
      ],
      "id": "6b0e957c-caac-4caa-bca7-c2218769edc4",
      "name": "Gmail",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Insert dan Create Hubspot",
        "height": 80,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        180,
        860
      ],
      "id": "86813303-efb0-4dba-a444-f148a136905b",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## Notification",
        "height": 80,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        180,
        1180
      ],
      "id": "3ee73bdc-2b26-4b84-a922-c0fd0ae1d680",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "deal",
        "operation": "update",
        "dealId": {
          "__rl": true,
          "value": 91304314603,
          "mode": "list",
          "cachedResultName": "12345"
        },
        "updateFields": {
          "description": "",
          "stage": "closedwon"
        }
      },
      "type": "n8n-nodes-base.hubspot",
      "typeVersion": 2.1,
      "position": [
        760,
        800
      ],
      "id": "84745e7d-17b0-4938-b5c5-2861715a4f68",
      "name": "HubSpot",
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Output Data to Anvil",
        "height": 100,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        200,
        1480
      ],
      "id": "5295c5e7-f8db-456e-9ca0-d19dcd17f047",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "path": "5a289f6f-b672-48a7-9e67-844228104830",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        940,
        1200
      ],
      "id": "dca0a7c1-67fd-4491-938a-06527bf91095",
      "name": "Xero Paid"
    },
    {
      "parameters": {
        "content": "## Webhook Xero Paid\n",
        "height": 80,
        "width": 300,
        "color": 2
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1220,
        1220
      ],
      "id": "5e81349f-0347-4c9c-9d90-20338fd17dd5",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE",
          "mode": "list",
          "cachedResultName": "MasterLead TEMPLATE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 240677149,
          "mode": "list",
          "cachedResultName": "MasterList",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1miCU_IlGdC0MqzaRHcXGB27PIcaxLQ7oZryfUjv28BE/edit#gid=240677149"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Funnel_Stage": "Paid"
          },
          "matchingColumns": [
            "HubSpot_UID"
          ],
          "schema": [
            {
              "id": "HubSpot_UID",
              "displayName": "HubSpot_UID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Company_ID",
              "displayName": "Company_ID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain",
              "displayName": "Domain",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "displayName": "Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "First_Name",
              "displayName": "First_Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Last_Name",
              "displayName": "Last_Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Company",
              "displayName": "Company",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Industry",
              "displayName": "Industry",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Source",
              "displayName": "Source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "User_Type",
              "displayName": "User_Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Funnel_Stage",
              "displayName": "Funnel_Stage",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Email_Verified",
              "displayName": "Email_Verified",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Bounce_Status",
              "displayName": "Bounce_Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Trial_Start_Date",
              "displayName": "Trial_Start_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Converted_to_Paid",
              "displayName": "Converted_to_Paid",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Training_Attended",
              "displayName": "Training_Attended",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Educational_User",
              "displayName": "Educational_User",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer_Hub_User",
              "displayName": "Customer_Hub_User",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "In_Success_Cycle",
              "displayName": "In_Success_Cycle",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Success_Onboard_Date",
              "displayName": "Success_Onboard_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Last_Login",
              "displayName": "Last_Login",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Engagement_Score",
              "displayName": "Engagement_Score",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "UTM_Source",
              "displayName": "UTM_Source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "UTM_Medium",
              "displayName": "UTM_Medium",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "UTM_Campaign",
              "displayName": "UTM_Campaign",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Created_Date",
              "displayName": "Created_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Status_Detail",
              "displayName": "Status_Detail",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Last_Modified_Date",
              "displayName": "Last_Modified_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Data_Owner",
              "displayName": "Data_Owner",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Enrichment_Status",
              "displayName": "Enrichment_Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Next_Action_Date",
              "displayName": "Next_Action_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "FlowDesigner_Free_Entitlement",
              "displayName": "FlowDesigner_Free_Entitlement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "FlowDesigner_Interest",
              "displayName": "FlowDesigner_Interest",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "FlowDesigner_Paid_User",
              "displayName": "FlowDesigner_Paid_User",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Video_Sent",
              "displayName": "Video_Sent",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Engineer_Notes",
              "displayName": "Engineer_Notes",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Referrer_Email",
              "displayName": "Referrer_Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Referral_Date ",
              "displayName": "Referral_Date ",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Spots_Earned",
              "displayName": "Spots_Earned",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Hub_Access_Type",
              "displayName": "Hub_Access_Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Referral_Type",
              "displayName": "Referral_Type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Team_Challenge_Progress Certificate_Issued",
              "displayName": "Team_Challenge_Progress Certificate_Issued",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Product_Line",
              "displayName": "Product_Line",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "SKU_Selected",
              "displayName": "SKU_Selected",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Quote_Link",
              "displayName": "Quote_Link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Contract_Sent_Date",
              "displayName": "Contract_Sent_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Contract_Signed_Date",
              "displayName": "Contract_Signed_Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Invoice_Status",
              "displayName": "Invoice_Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        800,
        1420
      ],
      "id": "49eafa53-aa9a-478d-8827-18af175fd5d1",
      "name": "Google Sheets",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "deal",
        "operation": "update",
        "dealId": {
          "__rl": true,
          "value": 91304314603,
          "mode": "list",
          "cachedResultName": "12345"
        },
        "updateFields": {}
      },
      "type": "n8n-nodes-base.hubspot",
      "typeVersion": 2.1,
      "position": [
        1080,
        1420
      ],
      "id": "498c93c2-f92e-40c8-a721-8c969c5f142e",
      "name": "Update to Paid",
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Webhook Contract Signed in Anvil",
        "height": 80,
        "color": 2
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1160,
        500
      ],
      "id": "c88924eb-464b-439a-b707-5e1bc75c4447",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.2,
      "position": [
        940,
        540
      ],
      "id": "2855cf16-7e4e-49df-9189-0f270cdf8f0e",
      "name": "Contact Anvil Webhook"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://graphql.useanvil.com",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Basic Q1NDOGFISklHOW9uUE15enI0dFU1RzBtYmpEdzRoOHg6"
            },
            {
              "name": "Cookie",
              "value": "sesh=0b7ab502ecaa98fe97275a949e458c26291a40b17500430e; sesh.sig=fof0SkGUDRfnrAgwyWMR5ed_meE; b_id=a42bc5f41b4452cf8e13f95428691cd7; b_id.sig=sohAWmxFBRFZLBK4XeXKSwYwWsI"
            },
            {
              "name": "cookie",
              "value": "sesh=0b7ab502ecaa98fe97275a949e458c26291a40b17500430e;sesh.sig=fof0SkGUDRfnrAgwyWMR5ed_meE;b_id=a42bc5f41b4452cf8e13f95428691cd7;b_id.sig=sohAWmxFBRFZLBK4XeXKSwYwWsI;"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"query\": \"mutation CreatePacket(\\n  $name: String!\\n  $isDraft: Boolean!\\n  $isTest: Boolean!\\n  $files: [EtchFile!]!\\n  $data: JSON!\\n  $signers: [JSON!]!\\n) {\\n  createEtchPacket(\\n    name: $name\\n    isDraft: $isDraft\\n    isTest: $isTest\\n    files: $files\\n    data: $data\\n    signers: $signers\\n  ) {\\n    eid\\n    documentGroup {\\n      signers { eid status }\\n    }\\n  }\\n}\\n\",\n  \"variables\": {\n    \"name\": \"IRS-W4 Packet \u2013 Adri\",\n    \"isDraft\": false,\n    \"isTest\": true,\n    \"files\": [\n      {\n        \"id\": \"IRS_W4\",\n        \"castEid\": \"7Ah5n3WUo7uyVdWvzJzp\"\n      }\n    ],\n    \"data\": {\n      \"payloads\": {\n        \"IRS_W4\": {\n          \"data\": {\n            \"customerCompanyName\": \"ACME Corp\",\n            \"customerName\": \"Adri Sinaga\",\n            \"customerAddress\": \"123 Main St #234\",\n            \"customerCity\": \"San Francisco\",\n            \"customerState\": \"CA\",\n            \"currentDate\": \"06/11/2025\",\n            \"signatureCustomer\": \"\"\n          }\n        }\n      }\n    },\n    \"signers\": [\n      {\n        \"id\": \"employee\",\n        \"name\": \"Adri Sinaga\",\n        \"email\": \"fcb.sinaga@gmail.com\",\n        \"signerType\": \"email\",\n        \"routingOrder\": 1,\n        \"fields\": [\n          {\n            \"fileId\": \"IRS_W4\",\n            \"fieldId\": \"signatureCustomer\"\n          }\n        ]\n      }\n    ]\n  }\n}",
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -1360,
        1820
      ],
      "id": "3bf32959-7f7d-4978-becf-02907d34a9df",
      "name": "HTTP Request4"
    },
    {
      "parameters": {
        "resource": "contact",
        "organizationId": "13fbdc3d-31d5-461f-9c9d-24bb553280a0",
        "name": "={{ $json.Last_Name }}",
        "additionalFields": {
          "emailAddress": "={{ $json.Email }}"
        }
      },
      "type": "n8n-nodes-base.xero",
      "typeVersion": 1,
      "position": [
        -360,
        820
      ],
      "id": "2a395128-2ea5-425e-be38-98fb9e6e366b",
      "name": "Xero",
      "credentials": {
        "xeroOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "organizationId": "13fbdc3d-31d5-461f-9c9d-24bb553280a0",
        "type": "ACCREC",
        "contactId": "={{ $json.ContactID }}",
        "lineItemsUi": {
          "lineItemsValues": [
            {
              "description": "={{ $('Limit').item.json.Product_Line }}",
              "unitAmount": "5000",
              "itemCode": "=",
              "accountCode": "200",
              "taxType": "NONE"
            }
          ]
        },
        "additionalFields": {
          "date": "={{ $now }}",
          "dueDate": "={{ $now }}",
          "status": "SUBMITTED"
        }
      },
      "type": "n8n-nodes-base.xero",
      "typeVersion": 1,
      "position": [
        -140,
        820
      ],
      "id": "d709aff1-7059-4816-b3fe-a814904092d3",
      "name": "Xero1",
      "credentials": {
        "xeroOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "keep": "lastItems"
      },
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        -160,
        500
      ],
      "id": "c37d814c-2db9-4a94-bd55-c2e67370d8ca",
      "name": "Limit"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://graphql.useanvil.com",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Basic Q1NDOGFISklHOW9uUE15enI0dFU1RzBtYmpEdzRoOHg6"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"query\": \"mutation ($signerEid: String!, $clientUserId: String!) {\\n    # use the eid and id on the signer return from the `createEtchPacket` mutation\\n    generateEtchSignURL (signerEid: $signerEid, clientUserId: $clientUserId)\\n}\",\n  \"variables\": {\n    \"signerEid\": \"8jpAcDf0nLbnY0ZWoMnq\",\n    \"clientUserId\": \"2227508\"\n  }\n}",
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -820,
        2180
      ],
      "id": "e7cc667f-61bc-4c47-9254-51c41e7c20ff",
      "name": "HTTP Request3",
      "disabled": true
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://graphql.useanvil.com",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Basic Q1NDOGFISklHOW9uUE15enI0dFU1RzBtYmpEdzRoOHg6"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"query\": \"mutation (\\n    $name: String,\\n    $files: [EtchFile!],\\n    $isDraft: Boolean,\\n    $isTest: Boolean,\\n    $signatureEmailSubject: String,\\n    $signatureEmailBody: String,\\n    $signatureProvider: String,\\n    $signaturePageOptions: JSON,\\n    $signers: [JSON!],\\n    $data: JSON,\\n) {\\n    createEtchPacket (\\n        name: $name,\\n        files: $files,\\n        isDraft: $isDraft,\\n        isTest: $isTest,\\n        signatureEmailSubject: $signatureEmailSubject,\\n        signatureEmailBody: $signatureEmailBody,\\n        signatureProvider: $signatureProvider,\\n        signaturePageOptions: $signaturePageOptions,\\n        signers: $signers,\\n        data: $data\\n    ) {\\n        eid\\n        name\\n        detailsURL\\n        documentGroup {\\n            eid\\n            status\\n            signers {\\n                id\\n                eid\\n                name\\n                email\\n                status\\n                routingOrder\\n            }\\n        }\\n    }\\n}\",\n  \"variables\": {\n    \"name\": \"Important Packet of Forms\",\n    \"isDraft\": false,\n    \"isTest\": true,\n    \"signatureEmailSubject\": \"Test Packet\",\n    \"signatureEmailBody\": \"Please sign these forms as soon as possible. Thanks!\",\n    \"signatureProvider\": \"etch\",\n    \"signaturePageOptions\": {\n      \"title\": \"Test Packet\",\n      \"description\": \"Please soon as soon as posssible\",\n      \"style\": {\n        \"successColor\": \"#1985a1\",\n        \"infoColor\": \"#46494c\"\n      }\n    },\n    \"files\": [\n      {\n        \"id\": \"PDF_Template_IRS_W4\",\n        \"castEid\": \"XnuTZKVZg1Mljsu999od\"\n      }\n    ],\n    \"signers\": [\n      {\n        \"id\": \"signer1\",\n        \"name\": \"Sally Signer\",\n        \"email\": \"sally@example.com\",\n        \"fields\": [\n          {\n            \"fileId\": \"PDF_Template_IRS_W4\",\n            \"fieldId\": \"employeeSignature\"\n          },\n          {\n            \"fileId\": \"PDF_Template_IRS_W4\",\n            \"fieldId\": \"employeeSignatureDate\"\n          }\n        ],\n        \"signerType\": \"embedded\",\n        \"redirectURL\": \"https://www.useanvil.com/docs/api/e-signatures#redirecturl\",\n        \"enableEmails\": [\n          \"etchComplete\"\n        ]\n      }\n    ],\n    \"data\": {\n      \"payloads\": {\n        \"PDF_Template_IRS_W4\": {\n          \"textColor\": \"#0000CC\",\n          \"data\": {\n            \"name\": \"Sally Signer\",\n            \"address\": {\n              \"street1\": \"123 Main St #234\",\n              \"city\": \"San Francisco\",\n              \"state\": \"CA\",\n              \"zip\": \"94106\",\n              \"country\": \"US\"\n            },\n            \"ssn\": \"456454567\",\n            \"filingStatus\": \"Joint\",\n            \"under17Cost\": 2000,\n            \"otherDependentsCost\": 0,\n            \"totalDependentsCost\": 2000,\n            \"otherIncome\": 0,\n            \"otherDeductions\": 0,\n            \"extraWithholding\": 0,\n            \"employerName\": \"Awesome Co Inc\",\n            \"firstDateEmployment\": \"2021-01-12\",\n            \"employerEin\": \"897654321\",\n            \"headOfHousehold\": true,\n            \"employerAddress\": {\n              \"street1\": \"555 Market St\",\n              \"city\": \"San Francisco\",\n              \"state\": \"CA\",\n              \"zip\": \"94103\",\n              \"country\": \"US\"\n            }\n          }\n        }\n      }\n    }\n  }\n}",
        "options": {
          "redirect": {
            "redirect": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -1000,
        2180
      ],
      "id": "34710f1c-168b-4b98-ac6a-fe746f9d65ab",
      "name": "HTTP Request2",
      "disabled": true
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.useanvil.com/api/v1/fill/7Ah5n3WUo7uyVdWvzJzp.pdf",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {}
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -220,
        2180
      ],
      "id": "2d481441-d439-4fc7-be6c-89e8dd0db3f1",
      "name": "HTTP Request1",
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -1200,
        2180
      ],
      "id": "1ac4776b-cf8e-42cb-b3fd-85c5b0502b19",
      "name": "When clicking \u2018Test workflow\u2019",
      "disabled": true
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.useanvil.com/api/v1/generate-pdf",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "application/json",
        "body": "={\n\t\"title\": \"Example Invoice\",\n\t\"type\": \"markdown\",\n    \"data\":  [\n        {\n            \"label\": \"Name\",\n            \"content\": \"Sally Smith\"\n        },\n        {\n            \"content\": \"Lorem **ipsum** dolor sit _amet_...\",\n            \"fontSize\": 12,\n            \"textColor\": \"#616161\"\n        },\n        {\n            \"content\": \"Lorem **ipsum** [dolor sit _amet_](https://useanvil.com)...\",\n            \"fontSize\": 12,\n            \"textColor\": \"#616161\"\n        },\n        {\n            \"table\": {\n                \"rows\": [\n                    [\"Description\", \"Quantity\", \"Price\"],\n                    [\"4x Large Wigets\", \"4\", \"$40.00\"],\n                    [\"10x Medium Sized Widgets in dark blue\", \"10\", \"$100.00\"],\n                    [\"6x Small Widgets in white\", \"6\", \"$60.00\"]\n                ],\n                \"columnOptions\": [\n                    { \"align\": \"left\", \"width\": \"60%\" },\n                    { \"align\": \"center\", \"width\": \"100px\" },\n                    { \"align\": \"right\" }\n                ],\n                \"firstRowHeaders\": true,\n                \"rowGridlines\": true,\n                \"columnGridlines\": true,\n                \"verticalAlign\": \"center\"\n            }\n        }\n    ],\n\t\"page\": {\n\t\t\"width\": \"612px\",\n\t\t\"height\": \"792px\",\n\t\t\"margin\": \"50px\",\n\t\t\"marginTop\": \"30px\",\n\t\t\"marginBottom\": \"30px\",\n\t\t\"marginLeft\": \"60px\",\n\t\t\"marginRight\": \"60px\",\n\t\t\"pageCount\": \"bottomCenter\"\n\t},\n\t\"fontSize\": 16,\n\t\"textColor\": \"#171717\",\n\t\"includeTimestamp\": true,\n\t\"logo\": {\n\t\t\"src\": \"https://example.com/mtnlogo.png\",\n\t\t\"maxWidth\": 200,\n\t\t\"maxHeight\": 200\n\t}\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -480,
        2180
      ],
      "id": "dfed1929-4e0f-4514-bd05-478c1f56a3a1",
      "name": "HTTP Request",
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Send Anvil Contract1": {
      "main": [
        []
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack Notification3": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail": {
      "main": [
        [
          {
            "node": "Send Anvil Contract1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot": {
      "main": [
        [
          {
            "node": "Create Xero Invoice1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Xero Paid": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Update to Paid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contact Anvil Webhook": {
      "main": [
        [
          {
            "node": "HubSpot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Xero": {
      "main": [
        [
          {
            "node": "Xero1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Xero",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request2": {
      "main": [
        [
          {
            "node": "HTTP Request3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "HTTP Request2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Xero1": {
      "main": [
        [
          {
            "node": "Slack Notification3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "dee7b25e-21a9-43d6-98d4-f7e093a5ed1d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "cdTv2D1Y5OFQjW4K",
  "tags": []
}

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.

Pro

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

About this workflow

Fluidflow Licensing Framework. Uses httpRequest, xero, googleSheetsTrigger, slack. Event-driven trigger; 25 nodes.

Source: https://github.com/adrisinaga/n8n-workflow/blob/main/Fluidflow_Licensing_Framework.json — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

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

Email & Gmail

Hiring teams often struggle with document follow-ups, offer letter generation, and stakeholder communication. Manual checks, email back-and-forth, and missing files slow down hiring and create chaos d

Google Sheets Trigger, HTTP Request, Slack +3
Email & Gmail

This template is ideal for HR teams, startup founders, operations leads, remote-first companies, and freelancers managing onboarding manually or across multiple tools.

Google Sheets Trigger, Jira, HubSpot Trigger +7
Email & Gmail

Automatically processes new orders added to Google Sheets. Small orders are approved instantly; large orders trigger an HTML email with one-click Approve / Reject links — each handled by an independen

Google Sheets Trigger, Google Sheets, Gmail +1
Email & Gmail

This workflow automatically manages every new Calendly booking from start to finish. When a prospect books a meeting, it captures all details, syncs everything to HubSpot, creates a prep task for the

HTTP Request, Calendly Trigger, ClickUp +4
Email & Gmail

This workflow monitors a Google Sheets billing queue, creates Mercado Pago payment links for new invoices, emails customers via Gmail, and logs sent links back to Google Sheets, while also handling Me

Google Sheets Trigger, @Mercadopago/N8N Nodes Mercadopago, HTTP Request +2