DEV Community

alex
alex

Posted on

# Day 1: I Built My First Automation Template — And Almost Gave Up Three Times

This is Day 1 of my 30 templates in 30 days challenge. I'm an automation developer building a library of plug-and-play Make.com, n8n, and Zapier templates. Today I shipped the first one.*


I almost didn't post this.

The template broke four times. The error messages were cryptic. I spent two hours on something that should have taken thirty minutes. And at one point I genuinely considered just going to bed.

But it works now. And I think the messy story is more useful than a polished tutorial.


What I Built

A simple invoice automation in Make.com:

Google Form submission → Auto-generate invoice number → Send HTML invoice email to client

That's it. Client fills a form, they get a professional invoice in their inbox. No manual work.

Sounds simple. Here's what actually happened.


The First Problem: Module IDs

Make.com uses module IDs to reference data between steps. My first blueprint referenced {{1.FieldName}} throughout — but the Google Forms trigger was Module 2, not Module 1.

Every single data reference was broken.

Fix: Find and replace every {{1. with {{2. in the blueprint JSON. Obvious in hindsight. Took me longer than I'd like to admit.


The Second Problem: The Form ID

The Google Forms module needs a Form ID. I pasted the full URL.

https://docs.google.com/forms/d/e/1FAIpQLSf.../viewform
Enter fullscreen mode Exit fullscreen mode

Make threw a 404. The field wants just the ID — the string between /d/e/ and /viewform:

1FAIpQLSf...
Enter fullscreen mode Exit fullscreen mode

Again: obvious once you know. Zero indication of this in the UI.


The Third Problem: Nested Data

This one took the longest.

Google Forms returns data in a nested structure. I was trying to access {{2.Client Email}} directly. That doesn't exist.

The actual path is:

{{2.answers.`30b18069`.textAnswers.answers[1].value}}
Enter fullscreen mode Exit fullscreen mode

Where 30b18069 is the question ID Google assigns internally. You have to find that ID from the module's output structure, map it to your field name, then build the path manually.

Once I understood this, the email started populating correctly.


What the Final Workflow Looks Like

Module 2: Google Forms (Watch Responses)
   ↓
Module 5: Set Variable (Invoice Number = INV-{{date}}-{{timestamp}})
   ↓
Module 8: Gmail (Send HTML invoice email)
Enter fullscreen mode Exit fullscreen mode

Three modules. The email arrives within 30 seconds of form submission with a properly formatted invoice table, unique invoice number, and all client details filled in correctly.


What I Learned Today

1. Make's error messages don't tell you what's wrong. "Module references non-existing module '1'" sounds scary. It just means your data path is wrong.

2. Read the actual data structure, don't guess. After connecting Google Forms, run the module once to see what it actually outputs. The panel shows you the full nested structure — use it.

3. Start with a hardcoded test. I wasted an hour debugging dynamic email mapping when I should have first confirmed the workflow ran at all by hardcoding my own email in the TO field. Test the pipeline first, then add dynamic data.

4. Shipping something imperfect beats perfecting something unshipped. This template will have a v2 with Google Sheets logging and better invoice numbers. But v1 works and it's out today.


The Template

I've packaged this up as a ready-to-import Make.com blueprint with a setup guide and FAQ.

If you spend more than 10 minutes per invoice, this gets you back ~10 hours a year. At minimum.

→ Get the Invoice Generator template on Gumroad (£20)


Tomorrow

Day 2. Building a lead capture automation — contact form submission → save to Airtable → send welcome email sequence. More modules, similar principles.

Following along? Subscribe to the newsletter (top of page) — I send one update per week, not per day.


Alex Kraft is an automation developer based in the UK, building 30 Make.com/n8n templates in 30 days and documenting the process publicly. Find the full template library at alexkraft.gumroad.com

Top comments (0)