Instantly and Google Sheets integration: full setup walkthrough for 2026
Sync Instantly.ai campaigns to Google Sheets in 2026 without Zapier. Real setup steps, field mapping, and sync troubleshooting for cold email teams.
Instantly.ai doesn't offer a native Google Sheets sync. Teams running both tools are either manually exporting CSVs every week or paying $49/month for a Zapier Business tier just to push reply events into a spreadsheet. For a 10-person outbound team on 3 active campaigns, that's $588/year for a workflow you can replicate free in under an hour using Instantly's webhooks and Google Apps Script.
By Rishabh Ambasta, Founder, Modern Inbound.
What the Instantly + Google Sheets Integration Actually Does
This integration pushes Instantly campaign events (email sent, opened, replied, bounced, unsubscribed) into Google Sheets rows in real time, via Zapier, Make.com, or a free Google Apps Script webhook receiver. You get a live log of every campaign touchpoint without opening the Instantly dashboard.
The practical use case is reply routing and ops handoff. When a prospect replies, a new row appears in your Sheet with their email, campaign name, reply text, and timestamp. Your team sees it immediately without needing an Instantly seat, which matters if you're routing replies to a founder, a part-time VA, or a client who won't log into another platform.
This isn't a CRM replacement. It's a lightweight event log. For teams sending fewer than 5,000 emails per month, it's more practical than wiring up a full HubSpot or Salesforce sync.
How to Connect Instantly to Google Sheets (3 Methods, Ranked)
There are three ways to connect Instantly to Google Sheets in 2026: Zapier (easiest, $49/month minimum), Make.com (cheaper at $9/month, more setup), and Google Apps Script with Instantly's native webhook output (free, 20 minutes). For most teams, the free method is the right call.
Method 1: Google Apps Script (Free, Best for Most Teams)
Instantly fires a webhook on every campaign event. Google Apps Script receives it and writes a row to your sheet. Here's the exact process:
- Create your Google Sheet. Add headers in row 1: Timestamp, Email, Campaign, Event, Reply Text, Subject.
- Open Apps Script. In your Sheet, go to Extensions, then Apps Script. Delete the default function block.
- Paste the receiver function. Write a
doPost(e)function that parsese.postData.contentsas JSON and callsSpreadsheetApp.getActiveSheet().appendRow()with the mapped field values. - Deploy as a web app. Click Deploy, then New Deployment. Set "Execute as" to your Google account and "Who has access" to Anyone. Copy the deployment URL exactly.
- Add the webhook in Instantly. Go to Settings, then Integrations, then Webhooks. Paste your Apps Script URL. Select the events you want to track: Replied, Bounced, and Unsubscribed are the most useful.
- Test the connection. Trigger a test send or use Instantly's built-in test payload. A new row should appear in your Sheet within 30 seconds.
- Add deduplication logic. Without it, Instantly's retry mechanism creates duplicate rows when your script times out. Cache processed event IDs using
PropertiesServiceto filter retries without rescanning the sheet.
Method 2: Zapier
Use the Instantly trigger "New Reply" or "Lead Status Changed" and connect it to Google Sheets "Create Spreadsheet Row." Setup takes 10 minutes. The problem: Zapier's Professional plan runs $49/month because Instantly is a premium partner app. For a single integration, that's a hard cost to justify.
Method 3: Make.com
Make.com's $9/month Starter plan supports webhooks. Create a scenario with an Instantly webhook trigger and a Google Sheets "Add a Row" module. More flexible than Zapier for conditional routing (filtering out auto-responders, for instance), but the interface takes longer to learn.
Instantly Webhook Field Mapping Reference
Instantly's v2 webhook payload includes these fields for reply and bounce events. Map them to your Sheet columns before you deploy so you don't have to redo your column structure after data starts coming in.
| Instantly Field | Description | Recommended Sheet Column | Notes |
|---|---|---|---|
timestamp | ISO 8601 event time | Timestamp | Convert to local timezone in Apps Script |
lead_email | Prospect email address | Primary dedup key | |
campaign_name | Instantly campaign name | Campaign | Match your naming convention exactly |
event_type | replied / bounced / unsubscribed / opened | Event | Filter on this column for triage |
reply_text | Full reply body | Reply Text | Present on reply events only |
subject | Email subject line | Subject | Useful for multi-sequence campaigns |
lead_first_name | First name from lead record | First Name | Optional, helps with routing |
The reply_text field is the most operationally useful. Add a conditional format rule in Sheets to highlight rows where reply_text contains "not interested" or "out of office," so triage happens visually without opening Instantly.
Common Setup Errors and How to Fix Them
Three failures account for most of the setup issues teams hit with this integration: a 403 on the Apps Script URL, duplicate rows on high-volume sends, and missing reply_text on older Instantly campaigns. All three have direct fixes.
403 Forbidden on your Apps Script URL. Almost always means you deployed the script with "Who has access" set to "Only myself." Redeploy with "Anyone" selected and copy the new URL. The old URL won't work even if you update the access setting without redeploying.
Duplicate rows. Instantly retries failed webhook deliveries up to 3 times. If your doPost function takes longer than 10 seconds (common when scanning the full Sheet to check for existing rows), Instantly marks the delivery as failed and retries. Fix: write the row first, then cache the event ID in PropertiesService and check the cache on subsequent calls instead of scanning the Sheet.
Missing reply_text field. Campaigns built before Instantly's 2025 API update don't always include reply_text in the payload. Confirm "Track Replies" is enabled in your campaign settings. If you're on an older workspace, contact Instantly support to migrate to the v2 webhook schema.
Sheet hitting the cell limit. Google Sheets caps at 10 million cells per spreadsheet. A team sending 50,000 emails per month can fill a sheet in under 6 months if tracking all event types. Route "opened" events to a separate tab and keep only "replied" and "bounced" in your main operational log.
Google Sheets vs. a Real CRM: When to Switch
Google Sheets is the right choice for Instantly reply routing when your team has fewer than 5 people and you're sending under 10,000 emails per month. Above that, you need a proper CRM sync because Sheets breaks under concurrent webhook writes and simultaneous multi-user editing.
Most small outbound teams stay on Sheets longer than they should because a CRM setup feels like a multi-week project. It isn't. Pipedrive's Instantly connection via Zapier takes about 2 hours to configure and runs $29/month for Pipedrive plus the Zapier fee. What you get: deal stages, owner assignment, and activity history that Sheets can't replicate without custom scripting that becomes a maintenance problem fast.
The honest take: one founder, one VA, one campaign? Sheets is fine. Two salespeople triaging replies from four campaigns at once? You need deal-level tracking. Don't wait until the sheet is breaking to make the call.
Too Busy to Run Outbound Yourself?
Modern Inbound handles research, infrastructure, warm-up, account lists, copy tests, sending, replies, and routing. The system has booked 2,700+ B2B meetings and influenced $20M+ in pipeline.
Frequently Asked Questions
Does Instantly.ai have a native Google Sheets integration?
No. As of 2026, Instantly.ai doesn't offer a native Google Sheets connector. You connect them via Zapier, Make.com, or Instantly's webhook output pointed at a Google Apps Script web app.
How do I sync Instantly reply data to Google Sheets without Zapier?
Deploy a Google Apps Script as a web app with a doPost() function that receives Instantly webhook events and calls appendRow() on your sheet. Setup takes under 20 minutes and costs nothing.
What data does Instantly send in its webhook payload?
Instantly's v2 webhook includes: timestamp, lead_email, campaign_name, event_type (replied/bounced/unsubscribed/opened), reply_text (on reply events only), subject, and lead_first_name. The reply_text field is the most useful for triage and routing.
Can I use Google Sheets to upload leads into Instantly?
Yes, but not via webhook. Export your Sheet as CSV and import it into Instantly manually. For live sync where a new row triggers a new lead, you need Make.com, Zapier, or a Google Apps Script calling Instantly's API on row insert.
If you're running Instantly campaigns and spending more time managing spreadsheets than booking calls, the workflow layer needs attention. Modern Inbound handles the full outbound stack, from infrastructure and copy to reply routing and meeting handoff.
You Might Also Like
Get the outbound breakdown.
Real campaigns we ran this month. Numbers, copy, what worked, what didn't. Drop your work email.
Ready to fill your pipeline?
We build cold outbound systems that book 20-30 qualified meetings per month. No long-term contracts.
Apply to work with us