
Sync Event Attendees from Eventbrite to Pipedrive Automatically
描述
分类
⚙️ Automation
使用的节点
n8n-nodes-base.coden8n-nodes-base.mergen8n-nodes-base.pipedriven8n-nodes-base.pipedriven8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.manualTriggern8n-nodes-base.scheduleTrigger
价格免费
浏览量0
最后更新11/28/2025
workflow.json
{
"meta": {
"instanceId": "efb474b59b0341d7791932605bd9ff04a6c7ed9941fdd53dc4a2e4b99a6f9439",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "2aa95999-e977-454e-b6cb-0dae63c0fbec",
"name": "Extract Eventbrite Signups",
"type": "n8n-nodes-base.code",
"position": [
400,
-200
],
"parameters": {
"jsCode": "const token = 'ZZZZZZZZZZZZZZZZZZZZ'; //Replace with your token from eventbrite\nconst orgId = '1111111111111'; // Replace with your actual organization ID\n\nconst fetch = async (url) => {\n return await this.helpers.request({\n method: 'GET',\n url,\n json: true,\n });\n};\n\nconst allAttendees = [];\nlet eventContinuation = null;\nlet eventHasMore = false;\n\n// 1. Fetch all events (live + ended)\ndo {\n const eventUrl = eventContinuation\n ? `https://www.eventbriteapi.com/v3/organizations/${orgId}/events/?status=live,ended&continuation=${eventContinuation}&token=${token}`\n : `https://www.eventbriteapi.com/v3/organizations/${orgId}/events/?status=live,ended&token=${token}`;\n\n const eventData = await fetch(eventUrl);\n\n const events = eventData.events || [];\n\n for (const event of events) {\n const eventId = event.id;\n let continuation = null;\n let hasMore = false;\n\n do {\n const attendeeUrl = continuation\n ? `https://www.eventbriteapi.com/v3/events/${eventId}/attendees/?continuation=${continuation}&token=${token}`\n : `https://www.eventbriteapi.com/v3/events/${eventId}/attendees/?token=${token}`;\n\n const attendeeData = await fetch(attendeeUrl);\n\n for (const a of attendeeData.attendees || []) {\n let customAnswers = {};\n if (Array.isArray(a.answers)) {\n a.answers.forEach(ans => {\n customAnswers[ans.question] = ans.answer || '';\n });\n }\n// Replace below with the fields you want to bring into pipedrive from eventbrite\nallAttendees.push({\n json: {\n event_id: eventId,\n event_name: event.name?.text || '',\n event_date: event.start?.local || '', // Add this line\n name: a.profile?.name || '',\n email: a.profile?.email || '',\n phone: a.profile?.phone || '',\n work_phone: a.profile?.work_phone || '',\n ticket_class: a.ticket_class_name || '',\n status: a.status,\n order_id: a.order_id,\n created: a.created\n }\n});\n\n }\n\n continuation = attendeeData.pagination?.continuation || null;\n hasMore = attendeeData.pagination?.has_more_items === true;\n\n } while (hasMore && continuation);\n }\n\n eventContinuation = eventData.pagination?.continuation || null;\n eventHasMore = eventData.pagination?.has_more_items === true;\n\n} while (eventHasMore && eventContinuation);\n\nreturn allAttendees;\n"
},
"typeVersion": 2
},
{
"id": "f08c4987-c184-43cf-a8a2-3f3e9f3f66fa",
"name": "Extract current leads in pipedrive",
"type": "n8n-nodes-base.pipedrive",
"position": [
400,
120
],
"parameters": {
"resource": "person",
"operation": "getAll",
"returnAll": true,
"additionalFields": {}
},
"credentials": {
"pipedriveApi": {
"id": "oB2Ngws5qjvju8Rr",
"name": "Pipedrive account"
}
},
"typeVersion": 1
},
{
"id": "3ddd3458-952b-430f-bfe5-26d8be7b42af",
"name": "Merge to keep only new leads",
"type": "n8n-nodes-base.merge",
"position": [
660,
0
],
"parameters": {
"mode": "combine",
"options": {},
"advanced": true,
"joinMode": "keepNonMatches",
"mergeByFields": {
"values": [
{
"field1": "email",
"field2": "primary_email"
}
]
},
"outputDataFrom": "input1"
},
"typeVersion": 3.1
},
{
"id": "10e213d5-7e97-472f-b861-55c9b7d5407e",
"name": "Add New Leads to Pipedrive",
"type": "n8n-nodes-base.pipedrive",
"position": [
840,
360
],
"parameters": {
"name": "={{ $json.name }}",
"resource": "person",
"additionalFields": {
"email": [
"={{ $json.email }}"
],
"phone": [
"={{ $json.work_phone }}"
],
"customProperties": {
"property": [
{
"name": "1e00d5b90cd7df463975bd87d7185b0bde7745d0",
"value": "={{ $json.company }}"
},
{
"name": "ca46149c27f5fdc4b4c1ec43db042f968a0f5bed",
"value": "={{ $json.event_date }}"
}
]
}
}
},
"credentials": {
"pipedriveApi": {
"id": "oB2Ngws5qjvju8Rr",
"name": "Pipedrive account"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "60c09118-1cba-4da8-bbd9-33d919f3a181",
"name": "Schedule Daily",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
120
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 10
}
]
}
},
"typeVersion": 1.2
},
{
"id": "42afbcee-474b-4ad4-8403-9bed3f1848ed",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-340
],
"parameters": {
"width": 1120,
"height": 980,
"content": "## Eventbrite → Pipedrive Lead‑Sync Workflow\n**Need help? Email [email protected]**"
},
"typeVersion": 1
},
{
"id": "b2b9580d-2fa8-4cdd-90bc-2270cc72e888",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
-340
],
"parameters": {
"color": 5,
"width": 880,
"height": 980,
"content": "#### ⚙️ Setup Instructions\n\n1. **Import the workflow** \n - n8n → **Workflows → Import from File** (or **Paste JSON**) → **Save**\n\n2. **Connect Pipedrive** \n | Service | Where to get your token | Node(s) to update |\n |------------|------------------------|-------------------|\n | **Pipedrive** | Pipedrive → *Personal preferences → API* → copy **API token** | **Extract current leads in pipedrive** & **Add New Leads to Pipedrive** |\n\n3. **Update the “Extract Eventbrite Signups” Code node** \n - Open the **Code** node at the top of the flow. \n - Replace `ZZZZZZZZZZZZZZZZZZZZ` with **your Eventbrite Personal OAuth token**. \n - Replace `1111111111111` with **your Eventbrite Organization ID**. \n - At the **bottom** of the Code node you’ll see an array of properties being pushed (e.g., `event_name`, `email`, `ticket_class`). \n - **Add / remove fields** there to control which attendee data flows downstream.\n\n4. **Adjust the schedule** \n - Open the **Schedule Daily** trigger. \n - Default interval is **every 10 minutes**; change the minutes or switch to hours/days as needed.\n\n5. **Customize Pipedrive field mapping** \n - Open **Add New Leads to Pipedrive**. \n - Update any **customProperties** IDs so they point to the correct custom fields in your Pipedrive account. \n - Map additional attendee fields (e.g., company, ticket type) if desired.\n\n6. **Test the workflow** \n - Click **Test or Manually run workflow**. \n - Watch the execution log; new Eventbrite attendees that **don’t already exist** in Pipedrive should appear within seconds. \n - Confirm no duplicates—existing contacts are filtered out by the **Merge → keep only new leads** step.\n\n7. **Activate** \n - Toggle **Active** so the Schedule trigger runs automatically throughout the day.\n\n---\n\n### Need help?\n\n- **Email:** [email protected] \n- **Website:** https://ynteractive.com \n- **YouTube:** https://www.youtube.com/@ynteractivetraining \n- **LinkedIn:** https://www.linkedin.com/in/robertbreen\n\n"
},
"typeVersion": 1
},
{
"id": "4ab6de6c-a665-4a0f-b30f-2cc7f52578b6",
"name": "Test or Manually run workflow",
"type": "n8n-nodes-base.manualTrigger",
"position": [
20,
-200
],
"parameters": {},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Schedule Daily": {
"main": [
[
{
"node": "Extract Eventbrite Signups",
"type": "main",
"index": 0
},
{
"node": "Extract current leads in pipedrive",
"type": "main",
"index": 0
}
]
]
},
"Extract Eventbrite Signups": {
"main": [
[
{
"node": "Merge to keep only new leads",
"type": "main",
"index": 0
}
]
]
},
"Merge to keep only new leads": {
"main": [
[
{
"node": "Add New Leads to Pipedrive",
"type": "main",
"index": 0
}
]
]
},
"Test or Manually run workflow": {
"main": [
[
{
"node": "Extract Eventbrite Signups",
"type": "main",
"index": 0
},
{
"node": "Extract current leads in pipedrive",
"type": "main",
"index": 0
}
]
]
},
"Extract current leads in pipedrive": {
"main": [
[
{
"node": "Merge to keep only new leads",
"type": "main",
"index": 1
}
]
]
}
}
}