
Sync Eventbrite Orders & Refunds to KlickTipp for Automated Event Marketing
Description
Categories
⚙️ Automation
Nodes Used
n8n-nodes-base.ifn8n-nodes-base.switchn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.httpRequest
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
"meta": {
"instanceId": "95b3ab5a70ab1c8c1906357a367f1b236ef12a1409406fd992f60255f0f95f85",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "a4cc12f5-2786-4402-9079-966c6f8a81f2",
"name": "Tag contact for refund",
"type": "n8n-nodes-klicktipp.klicktipp",
"notes": "This node tags contacts for refunds.",
"position": [
896,
16
],
"parameters": {
"email": "={{ $('Check for new orders and refunds').item.json.email }}",
"tagId": [
"13637325"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"id": "K9JyBdCM4SZc1cXl",
"name": "DEMO KlickTipp account"
}
},
"notesInFlow": true,
"typeVersion": 3
},
{
"id": "5321884e-bc36-4ad1-be46-3b28414cc8f4",
"name": "Order or refund?",
"type": "n8n-nodes-base.switch",
"notes": "This node checks if an order or a refund needs to be processed.",
"position": [
-16,
-80
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "New order",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9d5be80a-15b4-4dd8-88a4-bc31ccc7c2ad",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "placed"
}
]
},
"renameOutput": true
},
{
"outputKey": "Refund",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3bb81b62-3cb9-4359-b759-44421aac9950",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "refunded"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"notesInFlow": true,
"typeVersion": 3.3
},
{
"id": "d63a04d2-1db1-4789-8d19-d06b49e7025f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-336
],
"parameters": {
"color": 7,
"width": 704,
"height": 528,
"content": "## 1. Data reception & routing"
},
"typeVersion": 1
},
{
"id": "2f0e4612-f179-46eb-9955-fc3b7c309b16",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
352,
-336
],
"parameters": {
"color": 7,
"height": 528,
"content": "## 2. Saving primary data"
},
"typeVersion": 1
},
{
"id": "953ef4fe-23a5-4ee5-88ff-12c4a2caf06e",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
-336
],
"parameters": {
"color": 7,
"width": 496,
"height": 528,
"content": "## 2. Saving secondary data for segmentation"
},
"typeVersion": 1
},
{
"id": "f335cc38-9204-457a-b949-debd1a17b334",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
208
],
"parameters": {
"width": 816,
"height": 1296,
"content": "**Community Node Disclaimer** \nThis workflow uses KlickTipp community nodes and works only on **self-hosted** n8n instances.\n\n## Introduction\nAutomate **Eventbrite order and refund processing** by syncing data directly to **KlickTipp**. \nWhenever a participant registers or requests a refund, their profile is updated with event details and tags—keeping your segmentation accurate and automated.\n\n## Who’s it for\nPerfect for **event organizers**, **digital marketers**, and **automation specialists** using Eventbrite and KlickTipp who want to eliminate manual imports and keep contact data consistent.\n\n## How it works\n1. **Eventbrite Trigger** captures `order.placed` and `order.refunded` events. \n2. **Switch Node** routes logic:\n - 🟢 *Order placed* → Adds contact, fetches event data, and tags buyer. \n - 🔴 *Refunded* → Adds refund tag and removes buyer tag. \n3. **Enrichment** stores event name, page URL, and end date in KlickTipp fields. \n4. **Fee check** applies extra segmentation for paid vs. free events. \n5. KlickTipp updates contacts automatically—no manual steps needed.\n\n## Requirements\n- Self-hosted **n8n** (community node support) \n- **Eventbrite** account (OAuth2) \n- **KlickTipp** account (API access) \n- KlickTipp custom fields:\n - `Eventbrite | Event name` \n - `Eventbrite | Start timestamp` \n - `Eventbrite | Event page URL` \n- KlickTipp tags:\n - `Eventbrite | Buyer` \n - `Eventbrite | Refundee` \n - `Eventbrite | Registrant`\n\n## How to set up\n1. **Connect accounts:** Eventbrite (OAuth2) & KlickTipp (API). \n2. **Map fields:** Event name, date, and URL to KlickTipp custom fields. \n3. **Update tag IDs:** Replace with your own KlickTipp IDs. \n4. **Test the flow:** Place an order → verify tags → trigger a refund to test removal. \n\n> 💡 *Tip:* Enable auto tag removal in KlickTipp so `Buyer` tags are removed when `Refundee` tags are added.\n\n## How to customize\n- Adapt field mappings to match your KlickTipp setup. \n- Adjust tag rules for different event types or ticket tiers. \n- Extend for multiple events or recurring campaigns.\n\n## Campaign expansion ideas\n- Track **attendance vs. no-shows** using participation tags. \n- Add **VIP or ticket-type** segmentation. \n- Trigger **follow-up automations** for refundees or attendees. \n- Connect to other tools for reminders, surveys, or upsells."
},
"typeVersion": 1
},
{
"id": "0134961c-7958-4494-b887-1b0f08b449d9",
"name": "Check for new orders and refunds",
"type": "n8n-nodes-base.eventbriteTrigger",
"notes": "This node listens to new orders and refunds.",
"position": [
-240,
-80
],
"webhookId": "396b6aa3-2bd7-4ae7-8cce-a90801f93019",
"parameters": {
"event": "1764245398479",
"actions": [
"order.placed",
"order.refunded"
],
"organization": "2927333867811",
"authentication": "oAuth2"
},
"credentials": {
"eventbriteOAuth2Api": {
"id": "YuhRI76SN30EeZOY",
"name": "Integrations Eventbrite account"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "2a02a619-e48a-4cc0-852a-de8fa6f502be",
"name": "Get event data",
"type": "n8n-nodes-base.httpRequest",
"notes": "This node fetches the event details.",
"position": [
224,
-176
],
"parameters": {
"url": "=https://www.eventbriteapi.com/v3/events/{{ $json.event_id }}",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "eventbriteOAuth2Api"
},
"credentials": {
"eventbriteOAuth2Api": {
"id": "YuhRI76SN30EeZOY",
"name": "Integrations Eventbrite account"
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "f3c2eed2-d820-47c4-97d8-7e7663e98319",
"name": "Subscribe event attendee to KlickTipp",
"type": "n8n-nodes-klicktipp.klicktipp",
"notes": "This node subscribes the order to KlickTipp.",
"position": [
448,
-176
],
"parameters": {
"email": "={{ $('Check for new orders and refunds').item.json.email }}",
"tagId": "13634764",
"fields": {
"dataFields": [
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $('Check for new orders and refunds').item.json.first_name }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $('Check for new orders and refunds').item.json.last_name }}"
},
{
"fieldId": "field224369",
"fieldValue": "={{ $json.name.text }}"
},
{
"fieldId": "field224367",
"fieldValue": "={{ $json.url }}"
},
{
"fieldId": "field224368",
"fieldValue": "={{ \n // Take the ISO 8601 string from your JSON\n new Date($json.end.utc) \n \n // Convert it to milliseconds since 1970-01-01 (Unix Epoch)\n .getTime() \n \n // Divide by 1000 to get seconds instead of milliseconds\n / 1000 \n}}"
}
]
},
"listId": "358895",
"resource": "subscriber",
"operation": "subscribe"
},
"credentials": {
"klickTippApi": {
"id": "K9JyBdCM4SZc1cXl",
"name": "DEMO KlickTipp account"
}
},
"notesInFlow": true,
"typeVersion": 3
},
{
"id": "779d2e30-944b-488f-ae3a-347f4d7ddc74",
"name": "Purchase?",
"type": "n8n-nodes-base.if",
"notes": "This node checks if the event was free or subject to a fee.",
"position": [
672,
-176
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2c02f37d-a3f0-4136-9cc3-d941f2d4cf2c",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ \n parseFloat(\n // Take the display string (e.g. \"$12.34\", \"€10,50\", \"£99.99\")\n $('Check for new orders and refunds').item.json.costs.base_price.display\n\n // Remove everything except digits, dot, or comma\n .replace(/[^0-9.,]/g, '')\n\n // Replace comma with dot (handles European formats like \"10,50\")\n .replace(',', '.')\n )\n}}",
"rightValue": 0
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "81523d9d-1f50-4e71-b953-42972447ec95",
"name": "Tag attendee in case of purchase",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
896,
-192
],
"parameters": {
"email": "={{ $('Subscribe event attendee to KlickTipp').item.json.email }}",
"tagId": [
"13637318"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"id": "K9JyBdCM4SZc1cXl",
"name": "DEMO KlickTipp account"
}
},
"typeVersion": 3
},
{
"id": "98277075-dcca-418a-a0ff-5d7a3107dbbf",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-512
],
"parameters": {
"width": 288,
"content": "## 2. Process Orders\nFetches event details for new orders and subscribes contacts to KlickTipp. \nAdds event info (name, URL, date) to their profile automatically.\n"
},
"typeVersion": 1
},
{
"id": "d78bd9a5-d694-4cc7-a40a-81e77c011ddc",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-528
],
"parameters": {
"width": 320,
"height": 176,
"content": "## 1. Data Reception\nListens for new **Eventbrite orders or refunds** via webhook trigger. \nRoutes each record to the correct branch for processing. \n💡 Runs automatically whenever an order event occurs.\n"
},
"typeVersion": 1
},
{
"id": "4f6a7b79-8a18-464f-aed2-652df7faade7",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-512
],
"parameters": {
"width": 272,
"content": "## 3. Refund & Segmentation\nApplies refund tags in KlickTipp when Eventbrite reports a refund. \nKeeps CRM segmentation clean and always up-to-date.\n"
},
"typeVersion": 1
}
],
"pinData": {
"Check for new orders and refunds": [
{
"id": "13443123123",
"name": "Oleksandr Kovalenko",
"costs": {
"tax": {
"value": 0,
"display": "$0.00",
"currency": "USD",
"major_value": "0.00"
},
"gross": {
"value": 0,
"display": "$0.00",
"currency": "USD",
"major_value": "0.00"
},
"base_price": {
"value": 0,
"display": "$10.00",
"currency": "USD",
"major_value": "0.00"
},
"payment_fee": {
"value": 0,
"display": "$0.00",
"currency": "USD",
"major_value": "0.00"
},
"eventbrite_fee": {
"value": 0,
"display": "$0.00",
"currency": "USD",
"major_value": "0.00"
}
},
"email": "[email protected]",
"status": "placed",
"changed": "2025-10-08T13:41:12Z",
"created": "2025-10-08T09:45:51Z",
"event_id": "1764245398479",
"last_name": "Kovalenko",
"first_name": "Oleksandr",
"resource_uri": "https://www.eventbriteapi.com/v3/orders/13123123123/",
"time_remaining": null
}
]
},
"connections": {
"Purchase?": {
"main": [
[
{
"node": "Tag attendee in case of purchase",
"type": "main",
"index": 0
}
]
]
},
"Get event data": {
"main": [
[
{
"node": "Subscribe event attendee to KlickTipp",
"type": "main",
"index": 0
}
]
]
},
"Order or refund?": {
"main": [
[
{
"node": "Get event data",
"type": "main",
"index": 0
}
],
[
{
"node": "Tag contact for refund",
"type": "main",
"index": 0
}
]
]
},
"Check for new orders and refunds": {
"main": [
[
{
"node": "Order or refund?",
"type": "main",
"index": 0
}
]
]
},
"Subscribe event attendee to KlickTipp": {
"main": [
[
{
"node": "Purchase?",
"type": "main",
"index": 0
}
]
]
}
}
}