Automate Crypto Transactions with KlickTipp API Integration

This powerful workflow automates crypto transaction notifications and user responses through the KlickTipp API. Ideal for developers and integrators, it simplifies communication and improves user engagement. Requires 1 account: KlickTipp API. Save hours of manual processing while enhancing user experience and increasing response rates effectively.

98 views29 nodesSep 2025Lisa Zhang

Categories

Social Media

Credentials

1 required

Quick Actions

Copy or download to import into your n8n instance

Workflow JSON
{
  "meta": {
    "instanceId": "95b3ab5a70ab1c8c1906357a367f1b236ef12a1409406fd992f60255f0f95f85",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "1171779b-17d4-4f59-9105-05df49e2065d",
      "name": "Crypto",
      "type": "n8n-nodes-base.crypto",
      "notes": "This node prepares the response to the Zoom endpoint in order to answer to the validation.",
      "position": [
        -160,
        224
      ],
      "parameters": {
        "type": "SHA256",
        "value": "={{ $json.body.payload.plainToken }}",
        "action": "hmac",
        "secret": "dm4D484mTSKT67HpYQ8U0w"
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "0705f2e2-c80a-490e-b84a-649459579d16",
      "name": "Build Validation Body",
      "type": "n8n-nodes-base.set",
      "notes": "This node builds the body for the response to the Zoom endpoint in order to answer for validation.",
      "position": [
        64,
        224
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "plainToken",
              "value": "={{ $json.body.payload.plainToken }}"
            },
            {
              "name": "encryptedToken",
              "value": "={{ $json.data }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "db95d054-dbc9-4247-9c3d-b44a59c58b16",
      "name": "Respond to Webhook (Validation)",
      "type": "n8n-nodes-base.respondToWebhook",
      "notes": "This node sends the response back to the Zoom endpoint.",
      "position": [
        272,
        224
      ],
      "parameters": {
        "options": {}
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "e960b86a-88c9-4c51-b8da-044192df547d",
      "name": "Build Normal Event Body",
      "type": "n8n-nodes-base.set",
      "notes": "This node builds a body for a response to the endpoint in case of a regular event.",
      "position": [
        -160,
        416
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "status",
              "value": "ok"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "cb377d31-34f1-4b27-a202-e771eb36a6ba",
      "name": "Respond to Webhook (Events)",
      "type": "n8n-nodes-base.respondToWebhook",
      "notes": "This node answers to the endpoint in case of regular Zoom events - such as ending meetings in this case.",
      "position": [
        64,
        416
      ],
      "parameters": {
        "options": {}
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "f1b3a8d2-3d9a-41fc-929b-3b560b922ab1",
      "name": "URL Validation check",
      "type": "n8n-nodes-base.if",
      "notes": "This node checks whether the received data was a ending meeting or a URL validation call by Zoom.",
      "position": [
        -384,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "8516a75f-6aa9-4b72-828a-f5627d066ecc",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.event }}",
              "rightValue": "endpoint.url_validation"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "eeebd744-fe21-4a1e-b045-6aee7edf81ea",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        -304
      ],
      "parameters": {
        "color": 4,
        "width": 1104,
        "height": 1472,
        "content": "## Webinar data reception\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0550d6a3-c0fe-4ce4-984d-594b96b3fde5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -304
      ],
      "parameters": {
        "color": 2,
        "width": 448,
        "height": 1472,
        "content": "## Pulling webinar data - participants and absentees\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fdf9bab2-272f-483d-b891-a82f83253c3b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -304
      ],
      "parameters": {
        "color": 3,
        "width": 1216,
        "height": 1472,
        "content": "## Segment all participants and absentees from the past webinar\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6323c7fb-26d0-4af1-9a83-bc1185dd71b6",
      "name": "Tag participant with full attendance1",
      "type": "CUSTOM.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for the full attendance if they have attended more than 90% of the webinar.",
      "position": [
        1664,
        208
      ],
      "parameters": {
        "email": "={{ $json.user_email }}",
        "tagId": [
          "13445224"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "275e07c7-8e92-448e-99f7-121e9e65dd56",
      "name": "Tag participant for general attendance",
      "type": "n8n-nodes-klicktipp.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for the full attendance if they have attended less than 90% of the webinar and more than 60%.",
      "position": [
        1904,
        0
      ],
      "parameters": {
        "email": "={{ $json.user_email }}",
        "tagId": [
          "13327964"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 3
    },
    {
      "id": "a31f5450-c672-4a54-9488-0582d7cf7d33",
      "name": "Tag participant for full attendance",
      "type": "CUSTOM.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for the full attendance if they have attended more than 90% of the webinar.",
      "position": [
        1664,
        -192
      ],
      "parameters": {
        "email": "={{ $json.user_email }}",
        "tagId": [
          "13440472"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "e5454093-9343-4b54-ae0a-bd47e207a6f0",
      "name": "Tag participant for general attendance1",
      "type": "n8n-nodes-klicktipp.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for the full attendance if they have attended less than 90% of the webinar and more than 60%.",
      "position": [
        1904,
        384
      ],
      "parameters": {
        "email": "={{ $json.user_email }}",
        "tagId": [
          "13327965"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 3
    },
    {
      "id": "56492c33-aa03-4232-9911-ad7b18cea23e",
      "name": "Check general attendance",
      "type": "n8n-nodes-base.if",
      "notes": "This node checks whether the participants have spent more than 60% in the webinar or not.",
      "position": [
        1664,
        16
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7b7d2fd5-c72b-49bf-978d-84924490a953",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.duration}}",
              "rightValue": "={{ $('Get past Zoom webinar participants').item.json.duration *60 * 0.6}}"
            },
            {
              "id": "6899a474-e440-4d45-94e9-c5c2e7770b51",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.internal_user }}",
              "rightValue": ""
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "2823c3a0-abb6-4b7b-8a24-2ba88fe2c6c4",
      "name": "Check general attendance1",
      "type": "n8n-nodes-base.if",
      "notes": "This node checks whether the participants have spent more than 60% in the webinar or not.",
      "position": [
        1664,
        400
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5ccc0640-5283-4c99-8df4-1fd128fd8fd6",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.duration }}",
              "rightValue": "={{ $('Get past Zoom webinar participants').item.json.duration * 60 * 0.6 }}"
            },
            {
              "id": "833a43d6-eb9e-4103-b518-82ec04ba244e",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.internal_user }}",
              "rightValue": ""
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "5015d24a-4c84-4854-a7ff-d7d5c361b8b6",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        1184
      ],
      "parameters": {
        "color": 7,
        "width": 1104,
        "height": 1920,
        "content": "Community Node Disclaimer: This workflow uses KlickTipp community nodes.\n\n\n### Introduction\nThis workflow automates the end-to-end integration between Zoom and KlickTipp using n8n. It listens to Zoom webinar events (specifically, when a webinar ends), fetches attendance data, and tags participants in KlickTipp based on how long they attended. This enables precise segmentation for follow-ups and campaign automation based on actual user engagement.\n\n### Benefits\n- **Fully automated tagging**: No manual effort—participants are tagged in KlickTipp based on attendance percentage.\n- **Precise segmentation**: Supports differentiated tags for full, partial, or no attendance per webinar type.\n- **Dual-webinar support**: Handles multiple webinar types (e.g. Beginner vs. Expert) in one automated flow.\n\n### Key Features\n- **Zoom Webhook Listener**:\n  - Reacts to `webinar.ended` events.\n  - Validates Zoom URL on webhook registration using HMAC.\n- **Zoom API Integration**:\n  - Pulls past webinar details and participant list using webinar UUID.\n  - Uses `duration` fields to calculate attendance.\n- **Conditional Logic**:\n  - Uses Switch nodes to differentiate webinars by topic.\n  - Filters out internal users.\n  - Applies IF logic to check attendance thresholds (e.g. ≥ 90%, ≥ 60%).\n- **KlickTipp Tagging**:\n  - Applies different tags for each attendance segment:\n    - Full attendance (≥ 90%)\n    - General attendance (60%–89%)\n    - No attendance\n  - Supports tagging per webinar name (ex.: Webinar E-Mail Zustellung für Anfänger vs. Webinar E-Mail Zustellung für Experten).\n- **Scalable Structure**:\n  - Easily extendable to more webinars by duplicating the Switch and tagging logic.\n\n### Setup Instructions\n**Zoom Preparation**\n   - Ensure Zoom API access is enabled.\n   - Set up recurring webinars or webinars.\n   - Note the webinar IDs or UUIDs used in the flow.\n   - Enable webhook event `webinar.ended` for your Zoom webhook and the scopes `webinar:read:webinar`, `webinar:read:list_past_participants` and `webinar:read:list_absentees`.\n\n**KlickTipp Preparation**\n   - Create these custom fields (if not already present):\n  - `Zoom | webinar selection` (Text)\n- `Zoom | webinar start` (Date & Time)\n- `Zoom | Join URL` (URL)\n- `Zoom | Registration ID` (Text)\n- `Zoom | Duration webinar` (Text)\n  - Manually add the following tags:\n     - `Zoom webinar E-Mail Zustellung für Anfänger`\n     - `Zoom webinar E-Mail Zustellung für Anfänger attended`\n     - `Zoom webinar E-Mail Zustellung für Anfänger attended fully`\n     - `Zoom webinar E-Mail Zustellung für Anfänger not attended`\n     - `Zoom webinar E-Mail Zustellung für Experten`\n     - `Zoom webinar E-Mail Zustellung für Experten attended`\n     - `Zoom webinar E-Mail Zustellung für Experten attended fully`\n     - `Zoom webinar E-Mail Zustellung für Experten not attended`\n\n\n**n8n Configuration**\n   - Configure the webhook node for the Zoom endpoint and connect it to your webhook.\n   - Set up API credentials for Zoom and KlickTipp.\n  \n\n### Testing and Deployment\n1. End a Zoom webinar connected to the flow.\n2. Verify:\n   - The webhook triggers.\n   - Participants are fetched from Zoom.\n   - Tags are applied correctly in KlickTipp.\n3. Review KlickTipp contact records for tag and custom field updates.\n\n> 💡 *Pro Tip*: Use test emails and simulate different durations to validate tagging logic.\n\n### Campaign Expansion Ideas\n- Add additional webinar topics and tag logic by extending the Switch node.\n- Trigger personalized email sequences in KlickTipp based on attendance status.\n- Combine this workflow with registration tracking for full-funnel automation.\n- Use conditional routing to send follow-ups only to specific attendance segments.\n\n### Customization\n- Update tag names in the KlickTipp nodes to match your campaign naming convention.\n- Adjust attendance thresholds (e.g. 80% instead of 90%) in IF nodes.\n- Add fallback conditions for missing data or error handling on Zoom API calls.\n- Use more granular time ranges for segmentation (e.g. 0–30%, 30–60%, etc.).\n"
      },
      "typeVersion": 1
    },
    {
      "id": "11a2eab3-edc7-41c2-b60c-2af829816b4a",
      "name": "Route by meeting name1",
      "type": "n8n-nodes-base.switch",
      "notes": "This node filters for the different meetings via the name in order to process them.",
      "position": [
        1184,
        704
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "E-Mail Zustellung für Anfänger",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8de9cdc6-5393-4daa-acbd-7d14fbcd2586",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
                    "rightValue": "E-Mail Zustellung für Anfänger"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "E-Mail Zustellung für Experten",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bb59b2cb-b22c-4325-8373-f2a50dcb5ef1",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
                    "rightValue": "E-Mail Zustellung für Experten"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "notesInFlow": true,
      "typeVersion": 3.2
    },
    {
      "id": "f49c185b-1abc-487a-b5d1-2415ca8c0667",
      "name": "Listen to ending Zoom webinars",
      "type": "n8n-nodes-base.webhook",
      "notes": "This node is listening to Zoom events and triggers when a webinar was ended.",
      "position": [
        -608,
        320
      ],
      "webhookId": "fb4bace5-304b-499f-b3af-5b1d266ceeef",
      "parameters": {
        "path": "zoom",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "notesInFlow": true,
      "typeVersion": 2.1
    },
    {
      "id": "10cf5a5a-f9ae-46b3-93a0-1e073ab4ac27",
      "name": "Get past Zoom webinar absentees",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "This node pulls data of the webinar absentees in order to process them.",
      "position": [
        528,
        704
      ],
      "parameters": {
        "url": "=https://api.zoom.us/v2/past_webinars/{{ $('Listen to ending Zoom webinars').item.json.body.payload.object.uuid }}/absentees",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "zoomOAuth2Api"
      },
      "credentials": {
        "zoomOAuth2Api": {
          "id": "qmYwItfGtnNF2XQQ",
          "name": "Ricardo's Zoom account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 4.2
    },
    {
      "id": "ec1e2ef0-6f04-4897-a160-ec156fa76b65",
      "name": "Get past Zoom webinar participants",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "This node pulls data of the webinar participants in order to process them.",
      "position": [
        512,
        80
      ],
      "parameters": {
        "url": "=https://api.zoom.us/v2/past_webinars/{{ $('Listen to ending Zoom webinars').item.json.body.payload.object.uuid }}/participants",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "zoomOAuth2Api"
      },
      "credentials": {
        "zoomOAuth2Api": {
          "id": "qmYwItfGtnNF2XQQ",
          "name": "Ricardo's Zoom account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 4.2
    },
    {
      "id": "46d74f1e-2f14-473d-916a-4d409c4b6b63",
      "name": "Tag absentee for non attendance",
      "type": "CUSTOM.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for their absence.",
      "position": [
        1664,
        592
      ],
      "parameters": {
        "email": "={{ $json.email }}",
        "tagId": [
          "13445226"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "22b9c4ae-42c4-48de-860f-626a4ccde70e",
      "name": "Tag absentee for non attendance1",
      "type": "CUSTOM.klicktipp",
      "notes": "This node tags the contacts of your first webinar branch  for their absence.",
      "position": [
        1664,
        816
      ],
      "parameters": {
        "email": "={{ $json.email }}",
        "tagId": [
          "13445225"
        ],
        "resource": "contact-tagging"
      },
      "credentials": {
        "klickTippApi": {
          "id": "K9JyBdCM4SZc1cXl",
          "name": "DEMO KlickTipp account"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "c3d8eada-45ca-4b43-b439-31d444641a78",
      "name": "Filter internal users",
      "type": "n8n-nodes-base.filter",
      "notes": "This node filters out internal users from the webinar such as the host.",
      "position": [
        976,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6c66e073-723a-44a2-83c7-0ece10385a3b",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('Split webinar participants').item.json.internal_user }}",
              "rightValue": ""
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "8c99b292-15fe-440e-9555-a411a13092aa",
      "name": "Split webinar absentees",
      "type": "n8n-nodes-base.splitOut",
      "notes": "This node iterates through all absentees.",
      "position": [
        752,
        704
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "registrants"
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "788a36d9-476e-4268-875f-db04f4db31a4",
      "name": "Split webinar participants",
      "type": "n8n-nodes-base.splitOut",
      "notes": "This node iterates through all participants.",
      "position": [
        752,
        80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "participants"
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "d2367ac1-c5d4-4afb-ab3b-f9f20f7aea9f",
      "name": "Route by webinar name",
      "type": "n8n-nodes-base.switch",
      "notes": "This node filters for the different webinars via the name in order to process them.",
      "position": [
        1184,
        80
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "E-Mail Zustellung für Anfänger",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8de9cdc6-5393-4daa-acbd-7d14fbcd2586",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
                    "rightValue": "E-Mail Zustellung für Anfänger"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "E-Mail Zustellung für Experten",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bb59b2cb-b22c-4325-8373-f2a50dcb5ef1",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
                    "rightValue": "E-Mail Zustellung für Experten"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "notesInFlow": true,
      "typeVersion": 3.2
    },
    {
      "id": "569abe79-d847-4252-b44a-abc89903d5a6",
      "name": "Check full attendance",
      "type": "n8n-nodes-base.if",
      "notes": "This node checks whether the participants have spent more than 90% in the webinar or not.",
      "position": [
        1440,
        -96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "55a73ac0-4754-4ae4-b6ac-cc3b46b19580",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.duration }}",
              "rightValue": "={{ $('Get past Zoom webinar participants').item.json.duration * 60 * 0.9}}"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "834b0581-0e43-4c4a-bd0a-5d32423778db",
      "name": "Check full attendance1",
      "type": "n8n-nodes-base.if",
      "notes": "This node checks whether the participants have spent more than 90% in the webinar or not.",
      "position": [
        1440,
        288
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4501fc2a-fbe9-48f9-9828-132f3969bca0",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.internal_user }}",
              "rightValue": ""
            },
            {
              "id": "f3673baa-a23b-4f19-91d9-5b1bac26e064",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.duration }}",
              "rightValue": "={{$('Get past Zoom webinar participants').item.json.duration * 60 * 0.9 }}"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "7b303b1d-8bc5-4767-9b0e-ffa9a46f1d68",
      "name": "Wait 1 second",
      "type": "n8n-nodes-base.wait",
      "notes": "This node waits 1 second to avoid calling the past webinar to early before it is available.",
      "position": [
        272,
        416
      ],
      "webhookId": "224dbc24-be90-493a-8fbd-9e2a5439fd68",
      "parameters": {
        "amount": 1
      },
      "notesInFlow": true,
      "typeVersion": 1.1
    }
  ],
  "pinData": {
    "Listen to ending Zoom webinars": [
      {
        "body": {
          "event": "webinar.ended",
          "payload": {
            "object": {
              "id": "83622557591",
              "type": 5,
              "uuid": "K1qcAb2xS0SbieJa4L+n2A==",
              "topic": " E-Mail Zustellung für Anfänger",
              "host_id": "imnEs0zeTWSDBv5eq2M4tg",
              "duration": 75,
              "end_time": "2025-09-16T16:15:40Z",
              "timezone": "Europe/Berlin",
              "start_time": "2025-09-16T16:12:29Z"
            },
            "account_id": "t0mC6eOWQ6KZg4QL1sUQgg"
          },
          "event_ts": 1758039340830
        },
        "query": {},
        "params": {},
        "headers": {
          "host": "n8n-test-u24934.vm.elestio.app",
          "clientid": "jDZWANnaRpGCbjH9lZqA_A",
          "x-real-ip": "170.114.6.88",
          "connection": "close",
          "user-agent": "Zoom Marketplace/1.0a",
          "traceparent": "00-f2d0bc2de06d192c323e45f73f33e128-4d39268e6cc63db4-00",
          "content-type": "application/json; charset=utf-8",
          "authorization": "wmnEKko8Q5KhGKWGtM2UCA",
          "content-length": "363",
          "x-zm-signature": "v0=d8ac7b2edfd603ca13f0f3833eaf2aad80ca9027916909f6d4c2b96a5365dbf6",
          "x-forwarded-for": "170.114.6.88",
          "x-zm-request-id": "aedd90ea_efbf_44eb_9360_3ff5a32ee11f",
          "x-zm-trackingid": "v=2.0;clid=us06;rid=WEB_bcbeef3ecc9b5d9c980af031ce49b890",
          "x-forwarded-port": "443",
          "x-forwarded-proto": "https",
          "x-zm-request-timestamp": "1758039363"
        },
        "webhookUrl": "https://n8n-test-u24934.vm.elestio.app/webhook/zoom",
        "executionMode": "production"
      }
    ],
    "Get past Zoom webinar absentees": [
      {
        "page_size": 30,
        "page_count": 1,
        "registrants": [
          {
            "id": "6P7Zs8CUQGqJMl6J-GZyIQ",
            "org": "",
            "zip": "",
            "city": "",
            "email": "ricardo_absentito@example.com",
            "phone": "",
            "state": "",
            "status": "approved",
            "address": "",
            "country": "",
            "comments": "",
            "industry": "",
            "job_title": "",
            "last_name": "Coming",
            "first_name": "Not",
            "create_time": "2025-09-16T16:03:13Z",
            "no_of_employees": "",
            "custom_questions": [],
            "purchasing_time_frame": "",
            "role_in_purchase_process": ""
          }
        ],
        "total_records": 1,
        "next_page_token": ""
      }
    ],
    "Get past Zoom webinar participants": [
      {
        "page_size": 30,
        "page_count": 1,
        "participants": [
          {
            "id": "imnEs0zeTWSDBv5eq2M4tg",
            "name": "Ricardo Kluenter",
            "status": "in_meeting",
            "groupId": "",
            "user_id": "16778240",
            "duration": 191,
            "failover": false,
            "join_time": "2025-09-16T16:12:29Z",
            "leave_time": "2025-09-16T16:15:40Z",
            "user_email": "ricardo.kluenter@example.com",
            "internal_user": true,
            "registrant_id": "imnEs0zeTWSDBv5eq2M4tg"
          },
          {
            "id": "",
            "name": "Ric Ja",
            "status": "in_meeting",
            "groupId": "",
            "user_id": "16783360",
            "duration": 182,
            "failover": false,
            "join_time": "2025-09-16T16:12:37Z",
            "leave_time": "2025-09-16T16:15:39Z",
            "user_email": "ricardo_fire@example.com",
            "internal_user": false,
            "registrant_id": "zXHEKBd-Q3iyoBCEdm9xTQ"
          }
        ],
        "total_records": 2,
        "next_page_token": ""
      }
    ]
  },
  "connections": {
    "Crypto": {
      "main": [
        [
          {
            "node": "Build Validation Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 1 second": {
      "main": [
        [
          {
            "node": "Get past Zoom webinar absentees",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get past Zoom webinar participants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "URL Validation check": {
      "main": [
        [
          {
            "node": "Crypto",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Normal Event Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Validation Body": {
      "main": [
        [
          {
            "node": "Respond to Webhook (Validation)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check full attendance": {
      "main": [
        [
          {
            "node": "Tag participant for full attendance",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check general attendance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter internal users": {
      "main": [
        [
          {
            "node": "Route by webinar name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by webinar name": {
      "main": [
        [
          {
            "node": "Check full attendance",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check full attendance1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check full attendance1": {
      "main": [
        [
          {
            "node": "Tag participant with full attendance1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check general attendance1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by meeting name1": {
      "main": [
        [
          {
            "node": "Tag absentee for non attendance",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Tag absentee for non attendance1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Normal Event Body": {
      "main": [
        [
          {
            "node": "Respond to Webhook (Events)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split webinar absentees": {
      "main": [
        [
          {
            "node": "Route by meeting name1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check general attendance": {
      "main": [
        [
          {
            "node": "Tag participant for general attendance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check general attendance1": {
      "main": [
        [
          {
            "node": "Tag participant for general attendance1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split webinar participants": {
      "main": [
        [
          {
            "node": "Filter internal users",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Respond to Webhook (Events)": {
      "main": [
        [
          {
            "node": "Wait 1 second",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Listen to ending Zoom webinars": {
      "main": [
        [
          {
            "node": "URL Validation check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get past Zoom webinar absentees": {
      "main": [
        [
          {
            "node": "Split webinar absentees",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get past Zoom webinar participants": {
      "main": [
        [
          {
            "node": "Split webinar participants",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Related Workflows

Automate Social Media Content with Google Gemini & OpenAI GPT

Streamline your social media content creation using Google Gemini and OpenAI GPT. This automation generates tailored posts for Facebook, Instagram, and LinkedIn, perfect for social media managers looking to enhance engagement. Requires 9 accounts, including Google Palm API and OpenAI API. Save over 10 hours each week by automating content generation and posting, ensuring a consistent online presence.

271,706 views
Social MediaMultimodal AI

Automate Social Media Engagement with Google Gemini & APIs

Streamline your social media strategy by automating content generation using Google Gemini and the Facebook Graph API. This workflow is perfect for social media managers looking to enhance engagement across platforms like Twitter and LinkedIn. Requires 1 account: Twitter API. Save hours of manual posting and generate tailored content that drives engagement and boosts your online presence.

115,393 views
Social MediaMultimodal AI

Automate File Insights with OpenAI GPT for Communication Teams

Extract valuable information from files using the Extract From File tool and enrich insights with OpenAI GPT's AI Chat capabilities. This workflow is perfect for communication teams looking to streamline data processing. Requires 2 accounts: OpenAI API and Email SMTP. Save hours of manual data extraction and enhance decision-making with clear, actionable insights.

71,278 views
Social MediaMultimodal AI

Automate LinkedIn Content Creation with OpenAI GPT Agent

Leverage OpenAI's powerful GPT capabilities to automate content generation for your LinkedIn profile. This workflow utilizes the OpenAI API to craft engaging posts and messages, making it ideal for AI-powered automation users looking to enhance their LinkedIn presence. Requires 3 accounts: OpenAI API, OpenAI API Key, and LinkedIn OAuth. Save hours each week while producing high-quality, targeted content effortlessly.

69,057 views
Social MediaMultimodal AI

How to Use This Workflow

1Import to n8n

  1. Copy the JSON using the button above
  2. Open your n8n instance
  3. Click “Import workflow” or press Ctrl+V
  4. Paste the JSON and click “Import”

2Before Running

Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.

98