{
  "name": "Send Every Gravity Forms Submission Straight Into Zoho CRM",
  "nodes": [
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "parameters": {
        "httpMethod": "POST",
        "path": "gravity-forms-lead",
        "responseMode": "onReceived",
        "options": {}
      },
      "notes": "Copy this node's webhook URL into the source tool as the POST endpoint.",
      "position": [
        260,
        300
      ]
    },
    {
      "name": "Normalise Fields",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3,
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "301",
              "name": "email",
              "value": "={{ $json.body.email }}",
              "type": "string"
            },
            {
              "id": "302",
              "name": "firstname",
              "value": "={{ $json.body.first_name }}",
              "type": "string"
            },
            {
              "id": "303",
              "name": "lastname",
              "value": "={{ $json.body.last_name }}",
              "type": "string"
            },
            {
              "id": "304",
              "name": "company",
              "value": "={{ $json.body.company }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "notes": "",
      "position": [
        500,
        300
      ]
    },
    {
      "name": "Guard",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "parameters": {
        "conditions": {
          "conditions": [
            {
              "leftValue": "={{ $json.email }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              }
            }
          ],
          "combinator": "and"
        }
      },
      "notes": "Only rows that pass this check continue.",
      "position": [
        740,
        300
      ]
    },
    {
      "name": "Zoho CRM — Upsert Contact",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "parameters": {
        "method": "POST",
        "url": "https://api.example.com/replace-with-real-endpoint",
        "sendBody": true,
        "options": {}
      },
      "notes": "Zoho CRM has no dedicated n8n node — use an HTTP Request to the Zoho CRM API. Upsert keyed on email keeps records de-duplicated.",
      "position": [
        980,
        300
      ]
    },
    {
      "name": "Respond / Finish",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "parameters": {},
      "notes": "End of flow — extend with extra steps as needed.",
      "position": [
        1220,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Normalise Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalise Fields": {
      "main": [
        [
          {
            "node": "Guard",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Guard": {
      "main": [
        [
          {
            "node": "Zoho CRM — Upsert Contact",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Zoho CRM — Upsert Contact": {
      "main": [
        [
          {
            "node": "Respond / Finish",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
