Automation without Zapier
Zapier is how most schools connect Teachable to everything else, and it's fine for a handful of steps. As a school grows, the monthly bill grows with it, and a surprising amount of it pays for work a few lines of code could do.
When Zapier is the right answer
- A few automations, run a few hundred times a month.
- Nobody on the team wants to look after code.
- You're connecting to a tool Zapier supports well and you don't.
There's no shame in paying for convenience. The question is when it stops being worth it.
When it stops being worth it
- The bill climbs with every enrolment, because every step counts as a task.
- Your zaps need filters, paths and formatters to work around the data.
- Something fails quietly and nobody notices for a week.
The alternative: one address, your rules
Send every Teachable webhook to a single address you control, and let one small program decide what happens:
app.post('/teachable', async (req, res) => {
res.sendStatus(200);
const event = req.body;
switch (event.type) {
case 'Enrollment.created':
await addToCrm(event.object.user);
await sendWelcome(event.object.user.email);
break;
case 'Transaction.refunded':
await tagInCrm(event.object, 'refunded');
break;
case 'Enrollment.completed':
await sendCertificateEmail(event.object);
break;
}
});
One address, however many events. That also gets round the limit on how many webhooks your plan allows.
Where the program can live
| Option | Good for |
|---|---|
| Google Apps Script | Anything that ends in a spreadsheet. Free. The next lesson. |
| A serverless function | Small handlers that run only when a message arrives. Usually free or nearly. |
| A small server | Several automations, a database, and a nightly catch-up job. |
| Make or n8n | Visual building like Zapier, usually cheaper at volume. |
This is most of my client work: Teachable connected to CRMs, spreadsheets and email tools without a monthly Zapier bill. It's also what I'm building Optio Connect to do. If you'd rather not look after the code yourself, that's the route.
In short
- Zapier suits a few, low-volume automations. At scale it gets expensive.
- Send every webhook to one address, and switch on event.type.
- Apps Script, a serverless function or a small server can all do the job.