Overview
Bitscale is designed to fit into your existing GTM stack, not replace it overnight.
In practice, many SDR and BDR teams still use Google Sheets as their first touchpoint for:
- Early list building
- Campaign tracking
- Manual research
- Lightweight collaboration
What This Solves
- SDRs continue working inside Google Sheets
- Bitscale ingests new rows automatically
- No manual exports or CSV uploads
- Near–realtime sync (5, 10, 15-minute granularity)
- Works with any sheet structure (fully modular)
- Multiple SDRs update the same sheet
- You want Bitscale to act as the processing engine
- You don’t want to disrupt existing workflows
How It Works (High Level)
- SDRs maintain a Google Sheet
- A small Apps Script scans the sheet periodically
- Rows that have not yet been pushed are sent to Bitscale
- A
statuscolumn is automatically created and updated - Data lands in a Webhook-based Grid inside Bitscale
Key Design Principles
- No fixed schema: Any number of columns, any naming
- Single control column:
status(managed by the script) - Idempotent sync: Rows are pushed once and marked
- Pull-based ingestion: Bitscale does not poll Google, the script pushes
⚠️ Do not create a column namedstatusmanually.
The script creates and manages it automatically.
Prerequisites
- A Google Sheet used by SDRs
- A Bitscale workspace
- A Webhook-based Grid in Bitscale
Step 1: Create a Webhook Grid in Bitscale
- Go to New Grid
- Select Import Data via Webhook
- Copy the generated Webhook URL
- Keep this handy (you’ll need it in the script)
Step 2: Set Up Google Apps Script
- Go to https://script.google.com
- Create a new project
- Name it something like
Sheets to Bitscale - Paste the provided script (shared in this documentation)
Required Configuration
How to find the Spreadsheet ID
From a Google Sheets URL:/d/ and /edit.
Complete Script:
Step 3: Run Once (Manual Test)
- Click Run inside Apps Script
- Approve permissions
- The script will:
- Create a
statuscolumn (if missing) - Push unprocessed rows to Bitscale
- Update their status automatically
- Create a
Step 4: Automate with Triggers
To make this fully automatic:- Go to Triggers in Apps Script
- Click Add Trigger
- Select:
- Function: the sync function
- Event type: Time-driven
- Frequency: every 10–15 minutes (recommended)
Why not every minute?
- SDRs may still be typing
- Partial rows could sync prematurely
- 10–15 minutes gives the best reliability
What Happens After Sync
Inside Bitscale, the webhook grid behaves like any other grid:- You can enrich rows
- Apply ICP filters
- Find people
- Run email/phone waterfalls
- Push data to CRM or outreach tools
Bitscale becomes the execution layer
Common Use Cases
- SDRs tagging accounts as “Ready for Enrichment”
- Researchers pasting manual findings
- Campaign managers coordinating multiple contributors
- Transitional setups before full CRM adoption
Best Practices
- Keep one sheet per use case
- Avoid editing rows after status is marked
- Use Bitscale for downstream processing only
- Pair with Run Conditions to control spend
- Store the Apps Script under a shared Google account