Stop Paying $50/mo for ConvertKit: Build a $0 System Instead
Instead of paying for an email service before I had a single subscriber, I built my own email capture system for $0. I build a real signup form for my website, using a Google Sheet for storage and Google Apps Script as the backend, with AI as a coding assistant, then test it end to end the way a real visitor would.
Key takeaways
- A Google Sheet can store your email list, and Google Apps Script can act as the backend.
- Deploy the Apps Script as a web app and test the backend on its own before building the form.
- Then build the website signup form and run a full end-to-end test as a visitor.
- This isn't a Mailchimp or ConvertKit replacement. It's a simple way to capture emails somewhere you control.
- Avoid subscription creep: solve the problem in front of you, and pay for tools when you have problems worth paying to solve.
Chapters
- 0:00 Why pay to store my own emails?
- 1:13 Setting up the spreadsheet
- 1:38 Avoiding subscription creep
- 2:26 Writing the Apps Script with AI
- 3:23 Deploying it as a web app
- 4:01 Testing the backend on its own
- 4:32 Building the website signup form
- 5:27 The full end-to-end test
- 5:54 What I built (and what I didn't)
- 7:12 Solve the problem in front of you
Tools used
Google Sheets, Google Apps Script
Transcript
Read the full transcript(about 1400 words)
0:00Someone comes to my website and chooses to give me their email address. Why should my first move be to pay another company to hold it? Especially when I'm starting with zero email subscribers. This brand is still new. I have an audience on YouTube but I haven't started an email list yet.
0:16I don't have an email capture system on my website. There's nobody on that list yet. So before I collect the first email address, I want to see if I can build this system myself. I don't want to automatically sign up for another monthly service. I want to find out what I actually need. Right now I need one thing, a reliable way to capture information from my website and store it somewhere I control. So I'm going to build that from scratch in this video. The form, the backend, and somewhere to store the data. No template, no hypothetical tutorial. This is the real system that's going on my website.
0:50And by the end of this video, we're going to test the whole thing. Enter an email address on the website, hit submit, and see if it actually shows up in the spreadsheet. If it works, I've got the beginning of an email list and I'll know exactly what I built, where the data goes, and whether I actually need to pay for something more complicated yet. Let's build it. The first thing I need is somewhere for the data to actually land. This is going to be my real list, so I want it clean from day one. Keeping it simple, three columns, email, timestamp, and special code, so I know exactly when each signup came in. Nothing fancy here, the spreadsheet isn't the interesting part. The interesting part is getting my website to put data into the sheet automatically. And for that, I need a way for the outside world to talk to it.
1:38There's a bigger reason why I'm approaching it this way. Starting a business can turn into a pile of subscriptions really fast. Every tool may only be 10, 20, 30 dollars a month, but stack enough of them together and you've created a monthly bill before you've created a customer. So I'm trying to ask a question before I add another service.
1:54What problem do I actually have today? I spent 30 years in IT, 20 as a consultant building systems for other people. Those systems can be successful, useful, even valuable, but at the end of the project, they still belong to somebody else. At this point in my life, I want to spend more of my time building things I can actually own. This brand is one of them, so if the problem today is simply capturing the first few people who choose to hear from me, that's the problem I'm going to solve, not ten problems I might have someday. Google Sheets has a built-in scripting environment called Apps Script. What I need it to do is pretty simple. When my website sends over an email address and code, I want the script to grab that information, add the current time, and write everything into the next empty row. I could write this from scratch, but part of what I'm testing with this brand is how much faster I can build when I use AI as a coding assistant. So I'm going to tell it exactly what I need. Now, I'm not going to copy this, hit Deploy, and just hope for the best. AI can write code quickly.
2:59That doesn't mean the code is automatically right. So let's see what it actually gave me. Replace the sheet ID, extract data from the post. This line adds the new row to the sheet, and this gives the website a response so it knows whether the request worked.
3:15That's really the whole job. Now I need to make it reachable from my website. Apps Script can publish this as a web app. That gives me an endpoint, basically an address where my website can send the form data to. This is the part of AI assisted coding I find interesting. The goal isn't to avoid understanding what I'm building, it's to remove some of the friction between having an idea and actually testing it. I still need to understand the pieces, I still need to test them, and when something breaks, I still need to figure out why. But I can get to that point a lot faster. And for somebody trying to build a brand while doing everything else that comes with life and work, that matters. And there it is. That's the address that should connect the outside world to my spreadsheet. But before I connect my real website to it, I want to know where this piece works by itself. I don't want to build the whole form then discover the backend was broken the entire time. So I'm going to test this piece first. There it is. Email timestamp code.
4:22That means the backend works. This is one of those habits that saves a lot of frustration. Test each piece while it's small. If something breaks later, I already know this part worked. Now let's connect it to something a real person would actually use.
4:37This is the part that turns the experiment into something useful. I already have somewhere to store the data, and I have an endpoint that can receive it. Now the form on my website needs to collect the information and send it there. The visitor doesn't need to know anything about Apps Script or spreadsheets.
4:53They see a normal form. Email and a button to subscribe. They don't even see the code field. That's a hidden field I'll repurpose later. When they hit subscribe, the website packages those values up and sends them to the end point I just created. This is the form, this is the endpoint we just created, and this is where the data that's sent will be stored. I'm also going to make sure the visitor gets some kind of confirmation when it succeeds because clicking a button and getting no response is a terrible experience.
5:25Now comes the part that actually matters. Does the entire thing work? I'm going to test this exactly the way somebody visiting my site would. No Postman, no developer shortcut, just the real form. Form says it worked. But I'm not taking its word for it. And there it is, the information I just entered on my website went all the way through the form, the backend, and into my spreadsheet. That's the system.
5:57At the beginning of this video, I asked whether I actually needed to pay for another service, just to start collecting information people choose to give me on my own website. Now I have a working first version of my own system. I want to be clear about what I did and what I didn't do.
6:13I did not rebuild Mailchimp. I didn't build campaign management, unsubscribe handling, bounce management, deliverability tools, automations or analytics. Those services solve real problems. I just don't have those problems yet. The problem I've solved is much smaller.
6:30Someone comes to my website, chooses to give me their information. I need a reliable way to capture and store it. That's what I built. And the data lands in a spreadsheet I control. Could I eventually outgrow this? Absolutely. If this brand reaches the point where I need campaigns, automation, serious deliverability management, analytics, or other features that make a dedicated platform worth paying for. Then paying for one is something that I'll do. But I'll be paying to solve a problem I actually have. Not because somebody told me every new business needs another subscription on day one.
7:03Today, I need a working way to start collecting my list. And now I have one. This is what I'm trying to do as I build this brand. Solve the problem that's actually in front of me, and not pay for a solution to five problems I don't have yet. Not hypothetical projects, the actual pieces I need to make the business work. And when something works, I'll show you. When it breaks, I'll show you that too. If you're building something of your own, subscribe to the channel and follow along. And if you want the code I used in this video, join my email list through the link in the description. You'll see the signup form we just built in action.
From the video's captions, lightly cleaned up. Click a time to watch from that moment.


