{
  "name": "Google Sheets Row to CRM HTTP Sync",
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [{ "mode": "everyHour" }]
        },
        "documentId": { "__rl": true, "mode": "id", "value": "={{ $env.SHEET_ID }}" },
        "sheetName": { "__rl": true, "mode": "name", "value": "Leads" },
        "filters": {
          "conditions": [
            {
              "field": "synced",
              "type": "string",
              "operation": "equal",
              "value": "false"
            }
          ]
        }
      },
      "id": "scrms001-0001-4000-8000-000000000001",
      "name": "Watch Unsynced Leads",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $env.CRM_API_URL }}/contacts",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Authorization", "value": "Bearer {{ $env.CRM_API_KEY }}" },
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            { "name": "firstName", "value": "={{ $json.first_name }}" },
            { "name": "lastName", "value": "={{ $json.last_name }}" },
            { "name": "email", "value": "={{ $json.email }}" },
            { "name": "phone", "value": "={{ $json.phone }}" },
            { "name": "source", "value": "={{ $json.source }}" }
          ]
        },
        "options": {}
      },
      "id": "scrms001-0002-4000-8000-000000000002",
      "name": "Push Contact to CRM",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [460, 300]
    },
    {
      "parameters": {
        "conditions": {
          "options": { "caseSensitive": false },
          "conditions": [
            {
              "leftValue": "={{ $json.id }}",
              "rightValue": "",
              "operator": { "type": "string", "operation": "notEmpty" }
            }
          ]
        }
      },
      "id": "scrms001-0003-4000-8000-000000000003",
      "name": "CRM Success?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [680, 300]
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": { "__rl": true, "mode": "id", "value": "={{ $env.SHEET_ID }}" },
        "sheetName": { "__rl": true, "mode": "name", "value": "Leads" },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "email": "={{ $('Watch Unsynced Leads').item.json.email }}",
            "synced": "true",
            "crm_id": "={{ $json.id }}",
            "synced_at": "={{ $now.toISO() }}"
          },
          "matchingColumns": ["email"]
        },
        "options": {}
      },
      "id": "scrms001-0004-4000-8000-000000000004",
      "name": "Mark Synced in Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [900, 220]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "err1",
              "name": "sync_error",
              "value": "CRM push failed for {{ $('Watch Unsynced Leads').item.json.email }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "scrms001-0005-4000-8000-000000000005",
      "name": "Log Sync Error",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3,
      "position": [900, 400]
    }
  ],
  "connections": {
    "Watch Unsynced Leads": {
      "main": [[{ "node": "Push Contact to CRM", "type": "main", "index": 0 }]]
    },
    "Push Contact to CRM": {
      "main": [[{ "node": "CRM Success?", "type": "main", "index": 0 }]]
    },
    "CRM Success?": {
      "main": [
        [{ "node": "Mark Synced in Sheet", "type": "main", "index": 0 }],
        [{ "node": "Log Sync Error", "type": "main", "index": 0 }]
      ]
    }
  },
  "active": false,
  "settings": { "executionOrder": "v1" },
  "meta": {},
  "pinData": {}
}
