Build a Webhook Automation Agent with Zapier, Email & Telegram
Imagine this: someone signs up on your website, and within 5 seconds their details are saved in a database, you get an email, and your phone pings with a Telegram alert — fully automatic, zero code required. This guide shows you exactly how to build it.
1. What You'll Build
This is a 4-step no-code automation workflow built on Zapier. Every time someone submits a form or action on your website, the following happens in real time:
🪝 Webhook Trigger
Your website sends a POST request with user data (name + email) to a unique Zapier URL — the entry point for everything.
💾 Zapier Tables — Store the Record
The data is parsed and saved as a new row in a Zapier Table (your database). Every signup gets a unique Record ID.
📧 Email Notification
An email with the user's name, email, and Record ID is sent instantly to your inbox.
💬 Telegram Alert
A formatted message is delivered to your Telegram — instant mobile visibility wherever you are.
| Step | Action | Output | Time |
|---|---|---|---|
| 1 | Webhook receives POST request | Raw JSON body | Instant |
| 2 | Table stores the record | Record ID + user fields | ~1 sec |
| 3 | Email notification sent | Email to your inbox | ~2 sec |
| 4 | Telegram message delivered | Mobile notification | ~4 sec |
2. What You'll Need
- Zapier account — Free plan works for testing; Starter (~$20/mo) for production
- Email address — Any email you want to receive alerts at
- Telegram account — Install the Telegram app and create a bot (instructions below)
- A website or app — Anything that can send an HTTP POST request (optional for testing)
You can test this entire workflow using cURL, JavaScript, or Python from your terminal or browser console — no live website required to get started.
3. Step 1 — Create the Webhook Trigger
Log in to zapier.com and create a new Zap. In the Trigger step, search for Webhooks by Zapier and select the event Catch Raw Hook. Zapier will generate a unique webhook URL for you.
Anyone with this URL can send data to your Zap. Do not publish it publicly. Treat it like an API key.
Send a Test Payload
Zapier needs to receive at least one test request before you can continue. Use any of the methods below:
Method A — cURL (Terminal)
# Replace YOUR_WEBHOOK_URL with the URL from Zapier
curl -X POST YOUR_WEBHOOK_URL \
-H "Content-Type: application/json" \
-d '{"name": "Jane Smith", "email": "jane@example.com"}'
Method B — JavaScript (Browser or Node.js)
fetch('YOUR_WEBHOOK_URL', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'Jane Smith',
email: 'jane@example.com'
})
});
Method C — Python
import requests
requests.post(
'YOUR_WEBHOOK_URL',
json={'name': 'Jane Smith', 'email': 'jane@example.com'}
)
After sending, go back to Zapier and click Test Trigger. You should see the JSON data appear. Click Continue.
4. Step 2 — Store Data in Zapier Tables
Zapier Tables is a built-in database that stores your records permanently. First, create your table:
Go to tables.zapier.com and click Create Table.
Name it something like "User Signups" and add two columns: User Name (text) and Email (email).
Save the table. Copy the Table ID from the URL bar.
Back in your Zap, add an Action step → Zapier Tables → Create Record.
Configure Field Mapping with Inline Formulas
Because the webhook captures raw JSON, you need inline formulas to extract each field. This is the most important technical step:
{{=Object.get(JSON.parse(YOUR_STEP_ID__raw_body), "name")}}
{{=Object.get(JSON.parse(YOUR_STEP_ID__raw_body), "email")}}
In Zapier, each step has a numeric ID. Hover over your webhook trigger step — the step ID is shown in the output panel (e.g. 364374425). Replace YOUR_STEP_ID in the formula with this number. Example: {{=Object.get(JSON.parse(364374425__raw_body), "name")}}
Click Test Action. A new row should appear in your Zapier Table. Click Continue.
5. Step 3 — Send Email Notification
Add a new Action step → search Email by Zapier → Send Outbound Email.
In the To field, enter your email address where you want alerts.
Set Subject:
New Signup: [User Name]— use the dynamic field from the Tables step.Paste this into the Body field and map each value dynamically:
Hello,
A new user has signed up. Here are the details:
Name: [User Name]
Email: [Email Address]
Record ID: [Record ID from Tables step]
Time: [Current Date/Time]
This is an automated notification.
Click Test Action — a real email should arrive in your inbox within seconds. Click Continue.
6. Step 4 — Send Telegram Alert
One-Time: Create a Telegram Bot
Open Telegram, search for @BotFather, and start a chat.
Type
/newbotand follow the prompts — give your bot a name and username (must end in "bot").BotFather will give you a Bot Token — save it securely.
Search for your new bot and click Start to activate it.
Find Your Chat ID
Visit this URL in your browser, replacing YOUR_BOT_TOKEN with your actual token:
https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates
In the JSON response, find the chat object and note the id field — that's your Chat ID.
Add Telegram to Your Zap
Add Action step → Telegram Bot → Send Text Message.
Connect your account using your Bot Token when prompted.
Enter your Chat ID in the Chat ID field.
Paste the message template below and map fields dynamically:
🤖 New Signup Alert!
Name: [User Name]
Email: [Email Address]
Record ID: [Record ID]
Source: Automated via Zapier
Click Test Action — a message should appear on your phone instantly. Click Continue.
7. Publish & Test Your Automation
Click Publish in the top-right corner of the Zap editor.
Toggle the Zap to ON.
Send a fresh test payload to your webhook URL and watch all 4 steps fire in sequence.
Check Zapier's Zap History tab anytime to see every run — success or error — with full details on what data was received and which step executed.
Integrate with Your Website
Add this snippet to your form's submit handler to trigger the automation automatically:
// Add to your form submit handler
async function handleSignup(name, email) {
const WEBHOOK_URL = 'YOUR_ZAPIER_WEBHOOK_URL';
try {
await fetch(WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, email })
});
console.log('Signup tracked!');
} catch (err) {
console.error('Webhook error:', err);
}
}
// Wire to your form:
document.getElementById('signup-form')
.addEventListener('submit', (e) => {
e.preventDefault();
handleSignup(
document.getElementById('name').value,
document.getElementById('email').value
);
});
8. Customise & Extend
This 4-step workflow is a foundation. Here are practical ways to extend it:
| Enhancement | How to Do It |
|---|---|
| Add more fields (phone, city, plan) | Add to JSON payload + new columns in Zapier Table + extra formulas |
| Filter alerts (skip test emails) | Add a Zapier Filter step between Step 2 and Step 3 |
| Sync to a CRM | Add HubSpot / Salesforce / Notion as an extra action step |
| Send SMS too | Add a Twilio action step after Telegram |
| Route by user type | Use Zapier Paths (Premium) to send different messages per plan |
9. Implementation Checklist
✅ Track Your Progress
10. Troubleshooting
fetch() from a browser, ensure there are no CORS restrictions. Try cURL from your terminal first.getUpdates URL and checking the chat.id field in the response.Calculate Your In-Hand Salary Too
While you're automating your workflow, check what actually lands in your bank account each month — free, no login required.
💰 Open Salary Calculator →