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": "Monitor competitors from a Google Sheets list",
"nodes": [
{
"parameters": {
"content": "## Monitor competitors from a Google Sheets list\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\nA spreadsheet is where most competitor lists actually live, and it is where people keep adding to them. This workflow makes that sheet the source of truth for what Bounce Watch is monitoring.\n\n### How it works\n\nA daily schedule reads the sheet. A filter drops the rows with no domain, because a watch is keyed on one. Every remaining row goes to the Bounce Watch node, which adds the watch and labels it with whatever the sheet calls that company. Adding a company that is already watched updates the existing watch instead of creating a second one, so re-reading the whole sheet every day is safe and cheap.\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. Pick your Google Sheets credential, then choose the spreadsheet and tab on the read node.\n3. Your sheet needs a Domain column and, optionally, a Company column for the label.\n4. In the watch options, raise the importance floor if you only want the big moments.\n\nAdding and collecting cost no credits. An empty run means nothing matched the filters, not that those companies were quiet.\n\n### Customization tips\n\nRestrict each watch to a few signal types if you only care about launches or funding. Pair this with the Bounce Watch trigger, and every name someone adds to the sheet starts producing alerts within the day.",
"height": 1040,
"width": 520
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-380,
-120
],
"id": "sticky-overview",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Read the sheet\n\nDaily pass over the competitor list.\nRows without a domain stop here.",
"height": 300,
"width": 680,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
150,
-170
],
"id": "sticky-section-1",
"name": "Section 1"
},
{
"parameters": {
"content": "## Start watching\n\nRe-adding an existing watch updates it\nrather than creating a duplicate.",
"height": 300,
"width": 200,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
870,
-170
],
"id": "sticky-section-2",
"name": "Section 2"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "days",
"triggerAtHour": 6
}
]
}
},
"id": "bw0080-0000-4000-8000-000000000080",
"name": "Every morning",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
220,
0
]
},
{
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": ""
}
},
"id": "bw0081-0000-4000-8000-000000000081",
"name": "Read the competitor list",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
460,
0
],
"notes": "Pick the spreadsheet and tab. The sheet needs a Domain column."
},
{
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "as0082-0000-4000-8000-000000000082",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ !!$json.Domain }}",
"rightValue": ""
}
]
}
},
"id": "bw0083-0000-4000-8000-000000000083",
"name": "Rows with a domain",
"type": "n8n-nodes-base.filter",
"typeVersion": 2.2,
"position": [
700,
0
],
"notes": "A watch is keyed on a domain, so a row without one cannot be matched to a company."
},
{
"parameters": {
"resource": "watch",
"operation": "add",
"domain": "={{ $json.Domain.toString().toLowerCase().replace(/^https?:\\/\\//, \"\").replace(/^www\\./, \"\").split(\"/\")[0] }}",
"watchOptions": {
"label": "={{ $json.Company || $json.Domain }}",
"min_weight": 3
}
},
"id": "bw0084-0000-4000-8000-000000000084",
"name": "Add to the watchlist",
"type": "n8n-nodes-bouncewatch.bounceWatch",
"typeVersion": 1,
"position": [
940,
0
],
"credentials": {
"bounceWatchApi": {
"name": "<your credential>"
}
},
"notes": "Adding a company that is already watched updates the watch rather than creating a second one."
}
],
"connections": {
"Every morning": {
"main": [
[
{
"node": "Read the competitor list",
"type": "main",
"index": 0
}
]
]
},
"Read the competitor list": {
"main": [
[
{
"node": "Rows with a domain",
"type": "main",
"index": 0
}
]
]
},
"Rows with a domain": {
"main": [
[
{
"node": "Add to the watchlist",
"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
Monitor competitors from a Google Sheets list. Uses googleSheets, n8n-nodes-bouncewatch. Scheduled trigger; 7 nodes.
Source: https://github.com/bouncewatch/n8n-nodes-bouncewatch/blob/main/templates/monitor-competitors-from-a-google-sheets-list.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.
Find companies that raised and are hiring in Google Sheets. Uses n8n-nodes-bouncewatch, googleSheets. Scheduled trigger; 7 nodes.
Track companies expanding into new markets in Google Sheets. Uses n8n-nodes-bouncewatch, googleSheets. Scheduled trigger; 7 nodes.
Track hiring signals for prospecting in Google Sheets. Uses n8n-nodes-bouncewatch, googleSheets. Scheduled trigger; 7 nodes.
Enrich company names with domains in Google Sheets. Uses googleSheets, n8n-nodes-bouncewatch. Scheduled trigger; 10 nodes.
Automate company enrichment in Google Sheets with Bounce Watch. Uses googleSheets, n8n-nodes-bouncewatch. Scheduled trigger; 8 nodes.