{
  "name": "Track companies expanding into new markets in Google Sheets",
  "nodes": [
    {
      "parameters": {
        "content": "## Track companies expanding into new markets in Google Sheets\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 company opening an office or announcing a move into a new market is buying a lot of things it did not need last quarter \u2014 and choosing suppliers, partners and agencies while it does. This workflow keeps a running sheet of who is expanding where.\n\n### How it works\n\nA daily schedule starts the run. A Settings node holds the country and the lookback window, so pointing this at a different market is a one-field edit. The Bounce Watch node searches for announced expansions and new offices in that window and returns one item per company. Each becomes a row in Google Sheets: the company, what was announced, the date and a link to the profile.\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. Set the window in Search settings. Country is optional: blank means every country.\n3. Pick your Google Sheets credential, then choose the spreadsheet and tab on the last node.\n\nThe country filter matches the company headquarters, not the market being entered. An empty run means nothing matched the filters, not that those companies were quiet.\n\n### Customization tips\n\nDrop the country filter to watch expansion everywhere and sort the sheet later. Add a headcount band if a company has to be a certain size before it is worth approaching, or add the softer expansion-plan key to catch intent before the announcement.",
        "height": 1020,
        "width": 520
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -380,
        -120
      ],
      "id": "sticky-overview",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Which market\n\nDaily run, one country, one window.\nThe filter matches the headquarters.",
        "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": "## Who is expanding\n\nAnnounced expansions and new offices.\nOne row per company.",
        "height": 300,
        "width": 440,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        630,
        -170
      ],
      "id": "sticky-section-2",
      "name": "Section 2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "triggerAtHour": 8
            }
          ]
        }
      },
      "id": "bw0107-0000-4000-8000-000000000107",
      "name": "Every morning",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "as0108-0000-4000-8000-000000000108",
              "name": "country_code",
              "type": "string",
              "value": ""
            },
            {
              "id": "as0109-0000-4000-8000-000000000109",
              "name": "lookback_days",
              "type": "number",
              "value": "={{ 7 }}"
            }
          ]
        }
      },
      "id": "bw0110-0000-4000-8000-000000000110",
      "name": "Search settings",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        460,
        0
      ],
      "notes": "The country filter matches the company headquarters, not the market being entered."
    },
    {
      "parameters": {
        "resource": "signal",
        "operation": "search",
        "splitSignals": true,
        "filters": {
          "signal_keys": "expansion_announced,new_office_opened",
          "country": "={{ $json.country_code  || undefined }}",
          "days": "={{ $json.lookback_days }}",
          "limit": 50,
          "sort": "most_recent"
        }
      },
      "id": "bw0111-0000-4000-8000-000000000111",
      "name": "Expansion signals",
      "type": "n8n-nodes-bouncewatch.bounceWatch",
      "typeVersion": 1,
      "position": [
        700,
        0
      ],
      "credentials": {
        "bounceWatchApi": {
          "name": "<your credential>"
        }
      },
      "notes": "Add expansion_plan to the keys to catch intent before the announcement."
    },
    {
      "parameters": {
        "columns": {
          "value": {
            "Company": "={{ $json.company.name }}",
            "Domain": "={{ $json.company.domain }}",
            "HQ country": "={{ $json.company.country }}",
            "Employees": "={{ $json.company.employees }}",
            "What was announced": "={{ $json.signals.map(s => s.summary || s.label).join(\" | \") }}",
            "Most recent signal date": "={{ $json.latest_signal_date }}",
            "Profile": "={{ $json.company.profile_url }}"
          },
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": ""
        }
      },
      "id": "bw0112-0000-4000-8000-000000000112",
      "name": "Add a row per company",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        940,
        0
      ],
      "notes": "Pick the spreadsheet and tab here. Column headers must already exist in the sheet."
    }
  ],
  "connections": {
    "Every morning": {
      "main": [
        [
          {
            "node": "Search settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search settings": {
      "main": [
        [
          {
            "node": "Expansion signals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Expansion signals": {
      "main": [
        [
          {
            "node": "Add a row per company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}