Vibe code your own IFTTT
Vibe code your own IFTTT as five personal triggers, email, and a webhook. $2.99–$14.99 a month is rent you can cancel after one Saturday of recipes.
You can vibe code your own IFTTT as five personal recipes, an email action, and a webhook. IFTTT is that product. The catalog line is “If this happens, then do that. For your life, not your company.”
You pay $2.99–$14.99 a month for it. That is $36–$180 a year. The basic replacement is 8 hours: five personal triggers, email, and webhook actions.
I would ship this if I still rented a recipe box for two feeds and one weather alert. It is marked Weekend. The verdict on the card is “If simple, then build”.
Last time I wrote about vibe coding your own Dropbox. That was a teardown. This one is a regular backlog topic: the applets you already click, with the public directory left on the skip row.
What you need to vibe code your own IFTTT
The IFTTT page splits the work into three rows.
The first row is the one you want this Saturday. Two-step applets. One trigger, one action. Poll an RSS feed, a weather change, or a calendar event. Send email, a push-style notice, or an outgoing webhook. Pause an applet without deleting it.
The second row is 3 days. Polling connectors with a cursor, run history, retries, quiet hours. Do that after five applets have already fired for real.
The third row is a month and up. Hundreds of services, an OAuth zoo, mobile apps. The table labels that row as the part you should skip.
If you tell an agent to “clone IFTTT”, it aims at the third row. Copy the prompt, then pin it to the first one.
The card lists Applet, Trigger, Action, Run. These eight hours you need all four. An applet is a named pair you own. A trigger remembers what it already saw. An action is email or a webhook URL you typed. A run is one firing, with a state: skipped, succeeded, or failed.
A trigger event needs a stable id. For a feed, prefer the guid. Fall back to the link. A republished post with the same guid is already seen, even if the date moved.
How an IFTTT alternative is put together
I am describing the catalog’s model here, not reverse-engineering IFTTT. A personal automation tool is a list of two-step applets, a cron that polls a few sources, and a sender that fires at most once per event.
Your browser talks to one Astro app. Node.js plus Astro is the catalog default. Use TanStack Start if React is your weekday language. The capability line is Astro, Workers, and D1.
The app writes the applet on the request. D1 holds the rows. A Worker on a cron tick polls each enabled trigger. Polling never happens inside the save form. Email and webhooks leave from that Worker, not from the page that created the recipe.
Every query is scoped by owner. A guessed applet id from another account returns nothing. Credentials for a weather key or a calendar feed sit encrypted. They never appear in run history.
The guardrail on the card is the useful sentence: deduplicate trigger events so restarts and repeated polls never fire the same action twice, and store third-party credentials encrypted. The first mini-prompt on the page is that cursor. Write the seen id in the same transaction as the decision to fire. A crash between poll and send must not email the same post after restart.
Screens of an IFTTT alternative
v1 needs the list, the create form, and history. If the agent starts matching IFTTT’s live directory, send it back.
Applet list
Home. Each row shows the if, the then, on or paused, and the last run. Create sits in the header. Five rows is a full v1. Search can wait.
New applet
Two picks and a name. If this, then that. RSS wants a feed URL. Weather wants a place and a threshold you typed. Calendar wants an ICS URL you already have. The action is an address you own, or a webhook URL. A dry run can wait until the 3-day row. Save returns you to the list with the applet on.
Run history
Newest first. Each row is one event: which applet, which item, skipped or sent or failed, and when. Skipped is a first-poll catch-up, or a guid you already handled. Failed keeps the payload so you can retry later. Do not invent a second run when you retry. The third mini-prompt on the page wants one run with an attempt trail.
How does IFTTT work as a daily loop
The loop is create, wait, fire, read the log. Creating the applet has to feel instant. The useful work happens on the next cron tick, often while you are elsewhere.
You save “new post on flaviocopes.com, email me”. The applet lands on. The first poll reads the current feed and marks every guid as seen. History shows those as skipped. You do not get fifty emails about old posts the moment you enable it. That first-poll rule is in the mini-prompt.
A later tick sees a new guid. The Worker writes a run, records the guid, and sends the mail. If the process dies after the guid is stored and before the send, the next tick finds a run already in progress. It does not create a second one.
A paused applet stays in D1 with its cursor. Cron ignores it. Turning it back on does not replay the quiet period. New items from that moment forward can fire.
Cap the seen set. Expire ids that sit well past the feed’s window. Overlapping cron ticks must not race the same guid, so a slow poll that meets the next tick is safe to run twice.
Who an IFTTT alternative is for
The audience on the page is one person automating a handful of personal digital chores. Feeds you already read. A weather check before you leave. A calendar reminder that should also hit a webhook you own.
The goal is two-step automations for daily life, not a company pipeline or a smart-home OS.
If you need multi-step branches, a service marketplace, or a phone app that talks to every brand, keep paying. The site puts that rebuild at a month on purpose.
What not to build in an IFTTT clone
Leave out multi-step workflows, a service marketplace, smart-home device control, and team features.
The non-goal on the page already names those. Work automations live on the Zapier card. I already wrote the Zapier teardown.
A public directory of other people’s recipes, plus OAuth for hundreds of brands, is a different company. Paste the skip row when the agent starts a browse-applets page.
Quiet hours belong on the 3-day row. They queue overnight items until morning, or expire them on purpose with a reason in history. The second mini-prompt is that window, including the midnight wrap.
If the agent starts a canvas with three actions and a filter diamond, stop it and paste the non-goal again.
IFTTT alternative or a Zapier clone
IFTTT is personal and two-step. Zapier is work and a short sequence.
Zapier is $30–$69 a month, about 3 days for a webhook, a transform, and an HTTP action. If the rent is “new row in a sheet, ping Slack”, start there.
A scheduled fetch between three internal systems is Make, $10–$29 a month, about 4 days. That card wants a visible pipeline, not a recipe list.
A feed you read by hand is Feedly, $7–$12 a month, about 8 hours. That pile arrives so you can open it. This pile arrives so something else happens.
A missed cron of your own is Cronitor, $10–$49 a month, about 6 hours. Your job pings it. This app pings the feed.
The first-project post still points at a tonight card if you have not shipped a small tool yet.
The 3-day row, after five real applets
Use the list for two weeks as the real chore list, not as a demo. Then look at the second estimate.
Polling connectors with a stored cursor. Run history you can filter. Retries with a paper trail. Quiet hours that queue.
Retries are the third mini-prompt. Network errors back off. A 4xx from your webhook is permanent and stops. A timeout that may have delivered still uses the same dedup key, so the second attempt does not send a second email.
A dry run is the fourth mini-prompt. Poll for real, render the email or the webhook payload, send nothing, and leave the seen set untouched. A tester that marks items seen eats the real run.
The catalog says 3 days for that row. Skip the month-long OAuth zoo and the phone app.
The scope post is the same three-row table if you want the habit, not just this card. The prompt post is the extra line that says do not build the directory.
Host it, fire a real recipe, cancel
This one wants Astro, D1, and Workers, because that is the stack on the card. There is a table for applets and runs, so take a backup before you delete the paid account.
Put the list on a hostname you already own, ifso.flaviocopes.com. Create one RSS applet against a feed you already read. Watch the first poll skip the archive. Publish a post, or wait for one. Confirm one email and one history row. Pause the applet. Confirm cron leaves it alone.
If you miss quiet hours or a retry button, add them from the 3-day row.
Then cancel IFTTT, or whichever recipe box you pay for two chores.
Start now
Go to Build your own IFTTT. Copy the Astro prompt, or TanStack Start if that is what you write.
Tell the agent the first estimate only: five personal triggers, email, webhook. Eight hours.
Save one real recipe this afternoon. Let it fire once tonight on a feed you already trust.