The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Save a company timeline from Bounce Watch to Notion",
"nodes": [
{
"parameters": {
"content": "## Save a company timeline from Bounce Watch to Notion\n\nBounce Watch tells you what just happened at a company and when \u2014 funding, senior hires, new offices, customer wins and partnerships, each carrying its own date. What the API covers: bouncewatch.com/products/data-enrichment-api\n\nAccount research that lives in a chat window is research you will redo. This workflow takes a company name, resolves it to a domain, pulls its dated timeline and files the lot as a page in a Notion database.\n\n### How it works\n\nYou start the run by hand. A Settings node holds the company name you want researched. The Bounce Watch lookup turns that name into ranked candidates, and a second Settings node takes the top one and records how it matched, so a wrong pick is visible rather than silent. The timeline for that domain is then pulled and written into Notion as one page: identity at the top, then every dated event underneath, newest first.\n\n### Setup\n\n1. Get an API key at bouncewatch.com/register/api. It is free, no card, and every new account starts with 2,500 credits. Paste it into the Bounce Watch credential.\n2. Put the company name into Company to research and run the workflow.\n3. Connect your Notion credential, choose the database, and rename the properties on the last node to match your own.\n\nDates marked as recorded are when the change was measured, not when it happened, and the page says so. An empty run means nothing matched the filters, not that those companies were quiet.\n\n### Customization tips\n\nReplace the manual trigger with a form, a webhook or a new row in your CRM and the same page is written every time someone asks for research. Narrow the timeline by category if you only want funding, or only product.",
"height": 1060,
"width": 520
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-380,
-120
],
"id": "sticky-overview",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Ask for a company\n\nOne name, typed by hand.\nSwap this for a form or a webhook later.",
"height": 300,
"width": 440,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
150,
-170
],
"id": "sticky-section-1",
"name": "Section 1"
},
{
"parameters": {
"content": "## Resolve it to a domain\n\nCandidates come back ranked.\nHow it matched is recorded on the page.",
"height": 300,
"width": 440,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
630,
-170
],
"id": "sticky-section-2",
"name": "Section 2"
},
{
"parameters": {
"content": "## File the timeline\n\nOne page per company.\nEvery event carries its own date.",
"height": 300,
"width": 440,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1110,
-170
],
"id": "sticky-section-3",
"name": "Section 3"
},
{
"parameters": {},
"id": "bw0117-0000-4000-8000-000000000117",
"name": "Run it by hand",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
220,
0
],
"notes": "Replace with a form, a webhook or a CRM row when you want this on demand."
},
{
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "as0118-0000-4000-8000-000000000118",
"name": "company_name",
"type": "string",
"value": "Example Company"
},
{
"id": "as0119-0000-4000-8000-000000000119",
"name": "lookback_days",
"type": "number",
"value": "={{ 180 }}"
}
]
}
},
"id": "bw0120-0000-4000-8000-000000000120",
"name": "Company to research",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
460,
0
],
"notes": "The name you want researched, and how far back the timeline should reach."
},
{
"parameters": {
"resource": "company",
"operation": "find",
"name": "={{ $json.company_name }}",
"filters": {
"limit": 5
}
},
"id": "bw0121-0000-4000-8000-000000000121",
"name": "Look up the company",
"type": "n8n-nodes-bouncewatch.bounceWatch",
"typeVersion": 1,
"position": [
700,
0
],
"credentials": {
"bounceWatchApi": {
"name": "<your credential>"
}
},
"notes": "Returns ranked candidates. Add a country code to the filters if the name is ambiguous."
},
{
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "as0122-0000-4000-8000-000000000122",
"name": "domain",
"type": "string",
"value": "={{ $json.candidates?.[0]?.domain || \"\" }}"
},
{
"id": "as0123-0000-4000-8000-000000000123",
"name": "matched_by",
"type": "string",
"value": "={{ $json.candidates?.[0] ? $json.matched_by : \"no candidate\" }}"
}
]
}
},
"id": "bw0124-0000-4000-8000-000000000124",
"name": "Take the top match",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
940,
0
],
"notes": "How the match was made travels onto the page, so a wrong pick is visible rather than silent."
},
{
"parameters": {
"resource": "signal",
"operation": "getForCompany",
"domain": "={{ $json.domain }}",
"splitSignals": false,
"filters": {
"days": "={{ $('Company to research').first().json.lookback_days }}",
"limit": 50
}
},
"id": "bw0125-0000-4000-8000-000000000125",
"name": "Pull the dated timeline",
"type": "n8n-nodes-bouncewatch.bounceWatch",
"typeVersion": 1,
"position": [
1180,
0
],
"credentials": {
"bounceWatchApi": {
"name": "<your credential>"
}
},
"notes": "One item per company, with the signals nested, so the page can be built in one pass."
},
{
"parameters": {
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": ""
},
"propertiesUi": {
"propertyValues": [
{
"key": "Name|title",
"title": "={{ $json.company.name }}"
},
{
"key": "Domain|rich_text",
"textContent": "={{ $json.company.domain }}"
},
{
"key": "Timeline|rich_text",
"textContent": "={{ $json.company.country }}{{ $json.company.employees ? \" \u00b7 \" + $json.company.employees + \" people\" : \"\" }}{{ $json.company.funding_stage ? \" \u00b7 \" + $json.company.funding_stage : \"\" }}\n{{ $json.company.profile_url }}\nMatched by: {{ $('Take the top match').item.json.matched_by }}\n\n{{ $json.signals.map(s => \"\u2022 \" + s.label + \" \u2014 \" + s.date + (s.date_is_measurement ? \" (date recorded)\" : \"\") + (s.unconfirmed ? \" (unconfirmed)\" : \"\") + (s.summary ? \"\\n \" + s.summary : \"\")).join(\"\\n\") }}"
}
]
}
},
"id": "bw0126-0000-4000-8000-000000000126",
"name": "Save the timeline",
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
1420,
0
],
"notes": "Choose your database and rename these properties to match it."
}
],
"connections": {
"Run it by hand": {
"main": [
[
{
"node": "Company to research",
"type": "main",
"index": 0
}
]
]
},
"Company to research": {
"main": [
[
{
"node": "Look up the company",
"type": "main",
"index": 0
}
]
]
},
"Look up the company": {
"main": [
[
{
"node": "Take the top match",
"type": "main",
"index": 0
}
]
]
},
"Take the top match": {
"main": [
[
{
"node": "Pull the dated timeline",
"type": "main",
"index": 0
}
]
]
},
"Pull the dated timeline": {
"main": [
[
{
"node": "Save the timeline",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
bounceWatchApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Save a company timeline from Bounce Watch to Notion. Uses n8n-nodes-bouncewatch, notion. Event-driven trigger; 10 nodes.
Source: https://github.com/bouncewatch/n8n-nodes-bouncewatch/blob/main/templates/save-a-company-timeline-from-bounce-watch-to-notion.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Create a task from a new Bounce Watch company signal. Uses n8n-nodes-bouncewatch, notion. Event-driven trigger; 7 nodes.
Workflow 01.01. Uses notion, executeWorkflowTrigger, httpRequest. Event-driven trigger; 60 nodes.
Automate sales call analysis and store structured insights in Notion with AI-powered intelligence.
Inspired by Alex Kim's workflow, this version adds the ability to keep multiple versions of the same workflow on the destination instance. Each copied workflow’s name is prefixed with the date (), ena
Everyone organizing him/herself by using a notion database for tasks but losing track on some important tasks having a deadline. The weekly reminder helps you to not forget about your notion tasks. Th