Webhooks are one of the easiest ways to connect different tools with Make.com.
They are also one of the easiest places for an automation workflow to break.
A webhook may receive incomplete data.
A field may have a different format than expected.
Another service may return an error.
Or the workflow may simply stop because one step didn't receive what it expected.
I've run into this several times while building digital product automation workflows.
Over time, I've started using a simple approach to make webhook-based workflows easier to debug and maintain.
Start by checking the webhook data
When something goes wrong, don't immediately change the whole workflow.
First, look at what the webhook actually received.
A typical workflow might look like this:
Payhip
↓
Webhook
↓
Make
↓
Process data
↓
Notion / Telegram / HTTP
The first question should be:
Did Make receive the data correctly?
If the webhook didn't receive the expected information, changing later modules won't solve the problem.
This sounds obvious, but it's an easy step to skip.
Check the actual fields
A webhook may receive much more information than you expect.
For example, an order event might contain:
Customer information
Product information
Order information
Payment information
Timestamps
Transaction IDs
Instead of assuming that every field will always exist, check the actual webhook output.
Look for the fields your workflow really needs.
For example:
Customer email
Product name
Order ID
Payment status
If one of these fields is missing, the next module may fail.
Don't assume the data will always be the same
One important lesson I've learned is that external data is not always predictable.
For example, you might expect:
Product name
But sometimes an API or webhook may return:
Product title
Or the value may be empty.
Your workflow should be designed with this possibility in mind.
This is especially important when connecting several different services.
The more services you connect, the more likely it is that their data structures will be slightly different.
Validate important data before continuing
For important workflows, I prefer to validate the data before performing the next action.
The basic idea is:
Webhook
↓
Receive data
↓
Check required fields
↓
Continue if valid
↓
Perform action
For example:
Webhook
↓
Check order ID
↓
Check customer email
↓
Check product
↓
Create order record
This is safer than immediately sending everything to another service.
If the data is incomplete, you can stop the workflow before creating a bad record.
Don't make every error a complete failure
Another useful idea is separating important actions from optional actions.
Imagine this workflow:
Payhip
↓
Make
↓
Create order record
↓
Send Telegram notification
↓
Send customer email
What happens if Telegram is temporarily unavailable?
The order itself shouldn't necessarily be considered a failure.
The most important operation may be recording the order.
The Telegram notification may be secondary.
Thinking about priorities like this makes automation systems much easier to maintain.
Add logging
When a workflow works perfectly, you don't think much about logging.
When something breaks three days later, logging suddenly becomes very important.
A simple log can help answer questions like:
What happened?
When did it happen?
Which order triggered it?
Which module failed?
What data was received?
Without this information, debugging often becomes guesswork.
For a small automation, even a simple Notion database or spreadsheet can be enough for basic logging.
Be careful with retries
Retries can be useful.
But retries can also create duplicate actions.
Imagine a workflow receives an order and creates a record.
The next step fails.
The workflow runs again.
Now you might accidentally create the same order twice.
This is why unique identifiers are important.
For example, an order ID can be used to determine whether the order has already been processed.
The basic idea is:
New event
↓
Check order ID
↓
Already processed?
→ Yes: stop
→ No: continue
This simple check can prevent many duplicate records.
Keep error handling simple
It's tempting to build a complicated error-handling system immediately.
I don't recommend doing that.
Start with the most common failure cases.
For example:
Missing customer email
Missing order ID
Invalid data
API timeout
Service unavailable
Duplicate event
Handle these first.
You can always add more protection later.
Avoid adding unnecessary branches
Another mistake is creating too many branches in a workflow.
A workflow can quickly become difficult to understand:
Webhook
↓
Router
↓
Condition A
↓
Router
↓
Condition B
↓
HTTP
↓
Router
↓
Telegram
↓
Router
↓
Notion
At some point, the workflow becomes harder to maintain than the original manual process.
A simpler structure is often better.
For example:
Webhook
↓
Validate
↓
Process
↓
Record
↓
Notify
The goal isn't to create the most sophisticated workflow.
The goal is to create one that keeps working.
Test with real examples
Testing with one example isn't always enough.
Try different situations.
For example:
Successful order
Different product
Missing optional field
Duplicate event
Failed API request
Unexpected data
This helps reveal problems before real customers encounter them.
I also recommend keeping test data clearly separated from real customer data whenever possible.
Design for failure
One of the biggest changes in how I think about automation is this:
Don't design only for the happy path.
A workflow that works perfectly when everything goes right isn't necessarily a reliable workflow.
Real systems have:
Network problems
API errors
Missing data
Duplicate events
Temporary service outages
Unexpected inputs
A maintainable automation should have at least some idea of what happens when things go wrong.
When should you rebuild a workflow?
Not every error means the workflow needs to be rebuilt.
If one module fails occasionally, you may only need better validation or error handling.
If the workflow has become extremely difficult to understand, however, it may be time to simplify it.
A useful question is:
Can I understand what this workflow does by looking at it for a few minutes?
If the answer is no, the workflow may have become too complicated.
My simple debugging process
When one of my Make.com workflows stops working, I usually go through these steps:
Check the webhook output
Find the first module that failed
Check the input data
Check the output data
Look for missing or unexpected fields
Check whether the external service returned an error
Check for duplicate events
Fix the smallest possible problem
Run another test
Only rebuild the workflow if the structure itself is the problem
This approach is much faster than randomly changing multiple modules at once.
The bigger lesson
Webhook automation isn't difficult because connecting two tools is complicated.
The difficult part is dealing with everything that happens when the data isn't exactly what you expected.
That's why I now think about automation in three parts:
Input
What data did I receive?
Process
What should the workflow do with it?
Output
What should happen after the process finishes?
Then I add one more question:
What happens if something goes wrong?
That question can make a big difference.
Final thoughts
Automation should remove repetitive work.
But a workflow that constantly breaks, creates duplicates, or requires manual debugging can become another source of work.
That's why I prefer simple workflows with clear responsibilities, basic validation, useful logging, and straightforward error handling.
You don't need to build a perfect automation system.
You need to build one that you can understand, test, and maintain.
**Automate repetitive work.
Don't automate complexity just because you can.**
I'm also collecting reusable digital product automation workflows and examples on GitHub.
You can find them here:
Top comments (0)