This open-source (Free Bulk Email Tool) project lets you run Gmail marketing campaigns directly from Google Sheets using Google Apps Script. No Mailchimp, no paid tools — just Gmail automation for bulk email sending.
Tip
- Send up to 500–2,000 emails/day directly from Gmail
- Real-time tracking of opens, clicks, and delivery
- 100% free — powered by Google Sheets + Apps Script
- No external tools, no paid subscriptions
- Lightweight & secure, runs in your Google account
Note
Follow these steps to set up and run the email automation system directly from Google Sheets:
- Open Google Sheets.
- Add the following columns:
Name | Email | CC | Subject | Message | Status | Opened | Clicked CTA
Tip
You can customize the columns to include anything else your email system might need.
You can - add the Email Body as well from the google sheet itself
Important
The {{click-tracking-url}}, {{name}}, and {{tracking-pixel-url}} variables are critically important —
they are dynamically replaced at runtime using JavaScript/Apps
Script to track email opens and CTA clicks.
Do not remove or hardcode these — they enable tracking logic in the system.
"{{click-tracking-url}}" | {{name}} | "{{tracking-pixel-url}}"
- Go to Extensions → Apps Script inside your Google Sheet.
- You’ll be taken to the Script Editor (
https://script.google.com/...).
| Step 1: Click "Extensions" |
![]() |
- Create two files:
main.gs(orcode.gs) — contains your email logic.deploy.gs— used to deploy a Web App that tracks events.
|
|
[!INFO] You can paste the full code provided in this repository into the two different files.
- In the script editor, go to Deploy → Manage deployments.
- Click New deployment.
- Select Web app and set:
- Access: Anyone
- Execute as: Me (your email)
- Click Deploy and copy the Web App URL.

- Paste the copied Web App URL inside your
main.gswhere the tracking pixel or click URLs are generated.
``` var scriptUrl = ""; // Paste it over here ``` Warning
Do not share this URL publicly — it's unique to your tracker.
Once you've added the code:
- Click the Run
▶️ button in the Apps Script editor. - Google will prompt you to authorize the script to access your Google account.
- Make sure to review permissions and click Allow so that the script can send emails and interact with your spreadsheet.
🛑 If you skip this, the script will not execute and might throw apermission deniedorauthorization requirederror.
- Authorization Error → Run the script once manually and click “Allow.”
- Emails not sending → Check Gmail daily quota (500/2000).
- Tracking not working → Ensure you pasted your Web App URL in
main.gs. - Emails in spam/promotions → Avoid spammy words, configure SPF/DKIM, personalize content.
Caution
Do not exceed your daily email limits:
- 500/day for normal Gmail accounts
- 1,500/day for Google Workspace (professional) accounts
- Your account may get temporarily blocked or suspended
- Your domain may get flagged by spam filters (causing low Domain Authority (DA) and Page Authority (PA))
- You might face issues like DKIM/SPF failures or emails landing in spam/promotions tab
✅ Always double-check:
- Your email syntax is correct
- You're sending to valid, opted-in recipients only
- You follow email marketing best practices
- Yes! This tool allows you to send up to 500 emails/day (Gmail) or 1,500 emails/day (Google Workspace).
- Similar concept, but 100% free and fully inside Google Sheets.
- Yes, this script uses a tracking pixel for opens and custom CTA links for clicks.
This project is built and maintained by @buildwithfiroz
If you found this useful, consider giving it a ⭐️ on GitHub or contributing to improve it further!
Made with ❤️ by Firoz




