{
  "id": "n3Mm8HlL7xBrM8nC",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Sync face-to-face fundraising data from offline Google Sheets to SinergiaCRM",
  "tags": [
    {
      "id": "52gEP1RAeC1i5aJZ",
      "name": "n8n Creator",
      "createdAt": "2025-08-27T11:32:09.072Z",
      "updatedAt": "2025-08-27T11:32:09.072Z"
    }
  ],
  "nodes": [
    {
      "id": "70d41235-6145-4c9b-b488-b952dbc3a9ef",
      "name": "Combinar ID del CRM",
      "type": "n8n-nodes-base.merge",
      "position": [
        832,
        -848
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "joinMode": "enrichInput2",
        "mergeByFields": {
          "values": [
            {
              "field1": "attributes.stic_identification_number_c",
              "field2": "NIF"
            }
          ]
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "ae03448e-f0f8-483f-b47f-20e559a89841",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1056,
        -848
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "551c98ad-18dc-4123-8e7e-65f88de385e1",
              "name": "First name",
              "type": "string",
              "value": "={{ $json['First name'] }}"
            },
            {
              "id": "1c06fe43-c098-44bf-8701-130fa167ed34",
              "name": "Last name",
              "type": "string",
              "value": "={{ $json['Last name'] }}"
            },
            {
              "id": "0abf9847-0966-4fa9-8852-decd2c4e1b73",
              "name": "NIF",
              "type": "string",
              "value": "={{ $json.NIF }}"
            },
            {
              "id": "e32878ed-45a5-490d-8e4f-e53118da990b",
              "name": "Email",
              "type": "string",
              "value": "={{ $json.Email }}"
            },
            {
              "id": "c631ca9e-3c1a-47db-90a2-2c73dca606cc",
              "name": "Periodicity",
              "type": "string",
              "value": "={{ $json['Periodicity'] }}"
            },
            {
              "id": "606f2511-b430-4c01-b9a5-560ac34bc068",
              "name": "Amount",
              "type": "string",
              "value": "={{ $json['Amount'] }}"
            },
            {
              "id": "775f3a67-4333-45a4-94ee-0da2bddcfedf",
              "name": "Bank Account",
              "type": "string",
              "value": "={{ $json['Bank Account'] }}"
            },
            {
              "id": "632788f1-5b4c-4113-ae73-ee16421820c5",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b469d896-4340-4870-9289-1a6a8af84789",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        -1728
      ],
      "parameters": {
        "width": 448,
        "height": 1152,
        "content": "Automate syncing of offline donor data from Google Sheets into SinergiaCRM for fast, error-free face-to-face fundraising tracking.\n\n### Who is this workflow for?\nThis workflow is perfect for nonprofit organizations that run face-to-face fundraising campaigns and collect donor data offline (e.g. via tablets or spreadsheets). It helps fundraising and CRM teams ensure donor records are correctly and automatically stored in **SinergiaCRM**, a popular CRM platform used by NGOs.\n\n### What it does / How it works\n- Watches a Google Sheet for new rows (also works offline if synced later).\n- Filters rows marked `To CRM = Yes` and `Processed = No`.\n- Checks if the donor already exists in **SinergiaCRM** (based on NIF).\n- If the contact exists: creates a \u201cmember\u201d relationship and a payment commitment.\n- If not: creates the contact first, then adds the relationship and commitment.\n- Finally, updates the original row as \u201cProcessed\u201d to prevent re-importing.\n\n### Requirements\n- An active **Google Sheets** account with the donor spreadsheet.\n- A **SinergiaCRM** account with API/OAuth access.\n- Fields `First name`, `Last name`, `Email`, `NIF`, `To CRM`, `Processed` must exist in the sheet.\n- SinergiaCRM modules enabled: Contacts, stic_Contacts_Relationships, stic_Payment_Commitments.\n\n### How to set up\n1. Connect your **Google Sheets** account and set the correct Document ID and Sheet name in the trigger and update nodes.  \n2. Connect your **SinergiaCRM** account using OAuth credentials.  \n3. Adjust the `assigned_user_id` field if required by your CRM instance.  \n\n### How to customize the workflow\n- Change the filter conditions in the IF nodes to match your business logic.\n- Customize fields like relationship type, amount, and periodicity to suit your campaign.\n- Add or remove nodes if you want additional steps (like sending Slack notifications).\n\n\ud83d\udccc Category: **CRM & Customer Management**  \n\ud83d\udcd8 [Learn more about SinergiaCRM](https://sinergiacrm.org)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "25950fcd-ff8c-4d58-bcf3-06e2ba0d5b7f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -1088
      ],
      "parameters": {
        "width": 432,
        "height": 512,
        "content": "## \ud83d\udfe2 Trigger: New Offline Donation Entry\nThis workflow starts when a new row is added in the Google Sheet.\nMake sure your sheet includes columns: First name, Last name, Email, NIF, To CRM, Processed\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e4f93b11-b9bb-4d10-8ebc-4c8b2052fc05",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -1344
      ],
      "parameters": {
        "width": 832,
        "height": 768,
        "content": "## SinergiaCRM Setup Requirements\n\nEnsure these modules are enabled in your SinergiaCRM instance:\n- Contacts\n- stic_Contacts_Relationships\n- stic_Payment_Commitments\n\nAuthentication:\n1) Configure OAuth credentials for your SinergiaCRM account in n8n.\n2) Adjust the `\"assigned_user_id\"` field if your instance requires a different user.\n\nImportant notes:\n- Contact matching uses the custom field `stic_identification_number_c` (NIF).\n- Payment Commitments require valid values for amount, periodicity, and bank account.\n- The workflow sets the first payment date automatically to the current date (dd/mm/yyyy).\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3a61fc6f-8f82-4bcf-9948-189d4f5146e7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        -1344
      ],
      "parameters": {
        "width": 1024,
        "height": 768,
        "content": "## Contact Existence Logic\n\nThis IF node decides the workflow path based on whether the contact exists in SinergiaCRM:\n\n- \u2705 If the contact exists (matched by NIF), the workflow creates:\n   \u2022 a \u201cmember\u201d relationship\n   \u2022 a payment commitment\n\n- \u274c If the contact does not exist, the workflow first creates the contact,\n   then creates the relationship and payment commitment.\n\nMatching is based on the custom field `stic_identification_number_c` (NIF).\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "cc70ad72-3799-4efa-abdc-6e7d1e938eb9",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        -1072
      ],
      "parameters": {
        "width": 528,
        "height": 496,
        "content": "## \ud83d\udd35 Mark as Processed\nThis step updates the sheet to prevent duplicate imports.\nIt matches rows using the NIF field.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "790d5db6-9074-4cd5-bd82-b2b66d11d782",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        -976
      ],
      "parameters": {
        "width": 448,
        "height": 400,
        "content": "## Troubleshooting Tips\n\n- Ensure your Google Sheet column names match exactly (case and spacing).\n- If no contact is found/created, check the NIF value and confirm the field `stic_identification_number_c` exists in SinergiaCRM.\n- If the payment commitment fails, verify Amount, Periodicity, and Bank Account values.\n- Review execution logs in n8n for API or authentication errors.\n- Confirm that your SinergiaCRM OAuth credentials are valid and that the user has access to the required modules.\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "65eb5af2-649c-4d06-8f55-748e9fbca656",
      "name": "SinergiaCRM: Create Payment Commitment",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        1728,
        -944
      ],
      "parameters": {
        "data": "={\n\"stic_payment_commitments_contactscontacts_ida\": \"{{ $('Check if Contact Already Exists in CRM').item.json.id }}\",\n\"amount\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json.Amount }}\",\n\"first_payment_date\": \"{{ ('0' + new Date().getDate()).slice(-2) + '/' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '/' + new Date().getFullYear() }}\",\n\"periodicity\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json.Periodicity }}\",\n\"payment_method\": \"direct_debit\",\n\"payment_type\": \"fee\",\n\"bank_account\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json['Bank Account'] }}\",\n\"channel\": \"face_to_face\",\n\"transaction_type\": \"income\"\n}",
        "module": "stic_Payment_Commitments",
        "operation": "create"
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cc3969df-c615-427f-aee8-6639a5c87311",
      "name": "New Row in Google Sheets (Offline Donations)",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -96,
        -848
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {
          "valueRender": "FORMATTED_VALUE"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1285276483,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A/edit#gid=1285276483",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A/edit?usp=drivesdk",
          "cachedResultName": "SinergiaCRM - Workflows"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "52910480-234b-4387-bd7e-68d7364a0c25",
      "name": "Check if Row Should Go to CRM",
      "type": "n8n-nodes-base.if",
      "position": [
        160,
        -848
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "140b0257-5336-4f90-aceb-ecae84dedb32",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['To CRM'] }}",
              "rightValue": "Yes"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c2ef6aa8-d6db-48c0-8a5c-f8a24a917a60",
      "name": "Check if Row Has Not Been Processed",
      "type": "n8n-nodes-base.if",
      "position": [
        384,
        -848
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f174aa87-e1ee-4877-9de8-282b314724e4",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Processed }}",
              "rightValue": "No"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4695eff9-291b-41c5-b1b2-f5617526ca01",
      "name": "Find Existing Contact in CRM by NIF",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        608,
        -976
      ],
      "parameters": {
        "module": "Contacts",
        "options": {
          "filters": {
            "Filter": [
              {
                "field": "stic_identification_number_c",
                "value": "={{ $json.NIF }}"
              }
            ]
          }
        }
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "2a6633dd-7168-41ee-97ee-3891c295a0f0",
      "name": "Check if Contact Already Exists in CRM",
      "type": "n8n-nodes-base.if",
      "position": [
        1280,
        -848
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "92d7b7c4-2564-4eec-ab05-586340a484ec",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "b0af0e80-951d-4b50-b299-c385d5041fd7",
      "name": "Create New Contact in SinergiaCRM",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        1504,
        -752
      ],
      "parameters": {
        "data": "={\n  \"first_name\": \"{{ $json['First name'] }}\",\n  \"last_name\":  \"{{ $json['Last name'] }}\",\n  \"email1\":     \"{{ $json.Email }}\",\n  \"stic_identification_type_c\": \"nif\",\n  \"stic_identification_number_c\": \"{{ $json.NIF }}\"\n}\n",
        "module": "Contacts",
        "operation": "create"
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4ebdb785-1e0d-409f-b800-c83360272ec0",
      "name": "Create Member Relationship in SinergiaCRM",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        1504,
        -944
      ],
      "parameters": {
        "data": "={\n  \"start_date\": \"{{ ('0' + new Date().getDate()).slice(-2) + '/' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '/' + new Date().getFullYear() }}\",\n  \"relationship_type\": \"member\",\n  \"stic_contacts_relationships_contactscontacts_ida\": \"{{ $json.id }}\",\n  \"assigned_user_id\": \"2\"\n}",
        "module": "stic_Contacts_Relationships",
        "operation": "create"
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "55708fc4-56cf-4cf6-84ca-808e92fb412c",
      "name": "Create Member Relationship in SinergiaCRM 2",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        1696,
        -752
      ],
      "parameters": {
        "data": "={\n  \"start_date\": \"{{ ('0' + new Date().getDate()).slice(-2) + '/' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '/' + new Date().getFullYear() }}\",\n  \"relationship_type\": \"member\",\n  \"stic_contacts_relationships_contactscontacts_ida\": \"{{ $json.id }}\",\n  \"assigned_user_id\": \"2\"\n}",
        "module": "stic_Contacts_Relationships",
        "operation": "create"
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c2c53955-96db-475c-91bb-16b8e654af66",
      "name": "SinergiaCRM: Create Payment Commitment 2",
      "type": "n8n-nodes-sinergiacrm.sinergiaCrm",
      "position": [
        1904,
        -752
      ],
      "parameters": {
        "data": "={\n\"stic_payment_commitments_contactscontacts_ida\": \"{{ $('Create New Contact in SinergiaCRM').item.json.id }}\",\n\"amount\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json.Amount }}\",\n\"first_payment_date\": \"{{ ('0' + new Date().getDate()).slice(-2) + '/' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '/' + new Date().getFullYear() }}\",\n\"periodicity\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json.Periodicity }}\",\n\"payment_method\": \"direct_debit\",\n\"payment_type\": \"fee\",\n\"bank_account\": \"{{ $('New Row in Google Sheets (Offline Donations)').item.json['Bank Account'] }}\",\n\"channel\": \"face_to_face\",\n\"transaction_type\": \"income\"\n}",
        "module": "stic_Payment_Commitments",
        "operation": "create"
      },
      "credentials": {
        "SinergiaCRMCredentials": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "699157a2-198e-4985-8067-d8f242f2044b",
      "name": "Mark Row as Processed in Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2176,
        -944
      ],
      "parameters": {
        "columns": {
          "value": {
            "NIF": "={{ $('Check if Contact Already Exists in CRM').item.json.NIF }}",
            "Processed": "Yes"
          },
          "schema": [
            {
              "id": "First name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "First name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Last name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "NIF",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "NIF",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Relation type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Relation type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Relation date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Relation date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Event ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Event ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Registration date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Registration date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "To CRM",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "To CRM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "NIF"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1285276483,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A/edit#gid=1285276483",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XRjRmPPv5ToZ5ZsFQyX1o5g8pWg-rod0yOmkKO-Ec3A/edit?usp=drivesdk",
          "cachedResultName": "SinergiaCRM - Workflows"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "u9Tk2Qoss5uVjdTl",
    "executionOrder": "v1",
    "executionTimeout": 900,
    "saveExecutionProgress": true,
    "timeSavedPerExecution": 5
  },
  "versionId": "47c9dfd0-9afa-4f2a-be00-96eacc6e8cc3",
  "connections": {
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Check if Contact Already Exists in CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combinar ID del CRM": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Row Should Go to CRM": {
      "main": [
        [
          {
            "node": "Check if Row Has Not Been Processed",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Create New Contact in SinergiaCRM": {
      "main": [
        [
          {
            "node": "Create Member Relationship in SinergiaCRM 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Row Has Not Been Processed": {
      "main": [
        [
          {
            "node": "Find Existing Contact in CRM by NIF",
            "type": "main",
            "index": 0
          },
          {
            "node": "Combinar ID del CRM",
            "type": "main",
            "index": 1
          }
        ],
        []
      ]
    },
    "Find Existing Contact in CRM by NIF": {
      "main": [
        [
          {
            "node": "Combinar ID del CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Row as Processed in Google Sheet": {
      "main": [
        []
      ]
    },
    "Check if Contact Already Exists in CRM": {
      "main": [
        [
          {
            "node": "Create Member Relationship in SinergiaCRM",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create New Contact in SinergiaCRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SinergiaCRM: Create Payment Commitment": {
      "main": [
        [
          {
            "node": "Mark Row as Processed in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SinergiaCRM: Create Payment Commitment 2": {
      "main": [
        [
          {
            "node": "Mark Row as Processed in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Member Relationship in SinergiaCRM": {
      "main": [
        [
          {
            "node": "SinergiaCRM: Create Payment Commitment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Member Relationship in SinergiaCRM 2": {
      "main": [
        [
          {
            "node": "SinergiaCRM: Create Payment Commitment 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Row in Google Sheets (Offline Donations)": {
      "main": [
        [
          {
            "node": "Check if Row Should Go to CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}