written by
Maya

Webhook Automation for Non-Developers: What I Learned Building Shy Car

Ideas (in the age of robots) 8 min read

Before I built Shy Car, I'd seen the word "webhook" maybe a hundred times across documentation, Stack Overflow answers, and no-code tool settings pages. Every time I saw it, I clicked past it. It felt like something for developers.

It's not.

A webhook is one of the simplest, most powerful concepts in no-code automation — and once you understand what it actually is, you'll start seeing where you can use it everywhere. This is the explanation I wish I'd had before I built a car listing automation from scratch as someone with no developer background.

What Even Is a Webhook? (The Explanation I Wish I'd Had)

Most of the internet works on a request-response model. You ask for something ("give me this webpage"), something gives it to you, and then it forgets you exist. You have to ask again to get anything new.

A webhook inverts that. Instead of you asking repeatedly ("is there anything new yet? is there anything new yet?"), the other system tells you when something happens. Automatically. Without you asking.

The word "hook" is the key. You're hooking into a stream of events. When a specific event happens — a new record is created, a form is submitted, a payment is processed — the system "fires" the webhook: it sends a message to a URL you specified. That URL is your automation's front door.

Here's the non-technical version:

A webhook is like signing up for a text notification. You don't call the restaurant to check if your table is ready — you gave them your number, and they text you when it's time. The restaurant fires a webhook. Your phone is the webhook receiver.

That's it. That's the whole concept. The receiver (your URL, your Make.com scenario, your automation) then does something with the message. That's where the logic lives.

Why Webhooks Are the Missing Link Between Your No-Code Tools

Most no-code tools connect to each other through polling: Make.com checks Gmail every 15 minutes to see if a new email arrived. Zapier checks your CRM every 5 minutes to see if a new contact was added. This works, but it's slow, it uses your task quota, and it's fundamentally reactive on a delay.

Webhooks are instant. When the event happens, the notification fires in milliseconds. There's no polling loop. No task quota consumed for empty checks. No 15-minute wait.

For anything time-sensitive — new order alerts, real-time listing updates, form responses — webhooks are the right tool. For anything where "close enough" timing is fine (daily digest, weekly report), polling is simpler.

The practical difference for Shy Car: car listing data changes throughout the day. A polling setup checking every hour would miss updates, consume Make.com operations constantly, and run expensive scenarios on empty results. A webhook fires only when new data arrives. Night-and-day difference.

The Shy Car Problem: Selling Cars With Automation

Shy Car started as a simple problem: I wanted to aggregate car listings from multiple sources into one place, with consistent formatting and AI-written summaries, without manually touching each listing.

The manual version of this looked like:

  1. Check source A for new listings
  2. Copy data into a spreadsheet
  3. Write or clean up the description
  4. Paste into the site

I did this for about a week before I refused to do it a second week.

The automated version I eventually built:

  1. Source A fires a webhook when a new listing is created
  2. The webhook payload arrives at my Make.com scenario
  3. Make normalizes the data and passes it to an AI step (prompt: "here is raw listing data — write a 100-word clean summary in this format")
  4. The cleaned listing gets pushed to the Shy Car site via API

I check it now instead of doing it. There's a difference.

The webhook was the critical piece. Without it, I'd need to constantly ask "is there anything new?" With it, the flow only runs when there's actually something to process.

Step-by-Step: How I Set Up the Shy Car Webhook Flow

I'll walk through this in plain English. No code required to understand it, and if you use Make.com, you can follow this directly.

Step 1: Create a webhook receiver in Make.com

In Make, you can create a "Custom Webhook" trigger module. This gives you a unique URL — something like hook.make.com/abcxyz123. This is your front door. Copy that URL. You'll paste it into the source system in a moment.

Step 2: Tell the source system to fire to your URL

Every system that supports webhooks has a settings area for this. Usually it's called "Webhooks," "Integrations," or "Developer Settings." You paste in your Make URL and tell it which events to fire on (new listing created, record updated, etc.).

At this point, whenever the source system creates a new listing, it sends a JSON payload to your Make URL. Make receives it.

Step 3: Run a test to teach Make what the data looks like

Make needs to see a sample payload to understand the structure of the data you're sending. Trigger a test event in the source system. Make will display the data structure and let you map fields. You don't have to understand JSON — Make visualizes it for you as field names and values. You just click the field you want.

Step 4: Add processing steps

After the webhook trigger, I have three modules:

  1. Set Variables — normalize field names to consistent format
  2. HTTP / AI step — send the raw listing data to a language model API with a structured prompt. The prompt specifies the output format exactly.
  3. HTTP / Site push — send the clean, formatted listing to Shy Car via the site's API

The AI step is where the magic happens. The prompt looks roughly like: "Here is raw car listing data: [data]. Write a 100-word plain-English listing summary in this format: [format]. Do not add information not present in the data." The constraint at the end matters — without it, AI models will hallucinate details.

Step 5: Error handling

This is the step I skipped initially and regretted. If the webhook fires and Make fails to process it (API is down, data format changed, rate limit hit), the payload is lost. Set up a catch error path in Make that sends you a notification when a scenario fails.

Mistakes I Made (So You Don't Have to)

1. Assuming the payload structure would be stable.

It's not. The source system updated their webhook payload format once — a field was renamed — and my Make scenario broke silently. It ran, but it was mapping the wrong field. The data was wrong for two days before I caught it.

Fix: build a simple "verify the key fields are present" check at the top of your scenario. If a required field is missing, fire an alert instead of continuing with bad data.

2. Not testing failure cases.

I tested the "it works" path. I didn't test "what happens when the source API is down" or "what happens when the payload is malformed." The answers were: the scenario fails silently, and I find out later.

Fix: test your error paths before you trust the automation in production.

3. Overcomplicating the AI prompt.

My first AI prompt was long. It had examples, edge cases, formatting rules, all of it. The output was inconsistent and sometimes ignored parts of the prompt.

Fix: shorter prompts with clearer constraints outperform long prompts trying to cover every case. I rewrote the prompt three times before it stabilized. Start simple, add constraints only when you encounter specific failures.

4. Not having a manual override path.

Automation is great until it isn't. There are listings that need human judgment — unusual cars, incomplete data, edge cases the prompt doesn't handle well. I didn't build a "flag this for review" path at first.

Fix: add a branching path in Make that routes unusual cases to a manual review queue.

Where to Go From Here: Webhooks + AI = Real Automation

Webhooks are the trigger. AI is the processor. No-code tools are the plumbing. Together, they let one person do work that used to require a small team.

The pattern I use in Shy Car — event fires → webhook triggers → AI processes → output is pushed — is reusable across almost any project:

  • A form is submitted → webhook → AI extracts intent and routes to the right inbox
  • A new product is added to an inventory system → webhook → AI writes the product description
  • A customer support ticket comes in → webhook → AI classifies urgency and tags it

The specific tools change. The pattern doesn't.

Where webhooks fit in my full stack — if you want to see how this fits into everything else I run. And the AI tools I paired with this automation — the honest breakdown of what's worth using.

The One Thing Worth Remembering

You don't need to understand how webhooks work under the hood to use them. You need to understand what they are: a system for receiving event notifications instead of asking for them repeatedly.

Once you internalize that — once you stop thinking "that's for developers" when you see the word webhook — you'll start spotting opportunities everywhere.

Shy Car runs because of a webhook. I check it occasionally instead of running it manually. That's the whole win.

From the Age of Robots build log: My full no-code AI stack for solopreneurs — start here if you want the bigger picture. The AI tools guide for indie hackers — what I'd actually pay for.