Vibe code your own Manychat
Vibe code your own Manychat as keyword rules, a reply template, and an inbox. Essential is $14 a month for the same answer you already send.
You can vibe code your own Manychat as keyword rules, a reply template, and an inbox. Manychat is that product. The catalog line is “The same reply, sent the moment the keyword shows up.”
Essential is $14 a month, billed annually. Advanced is $139 a month on the same billing. The pricing note leaves out the free plan. The first estimate is 10 hours.
The card marks it Weekend. The verdict is “One keyword, one reply”. Ship it when the same incoming question gets the same answer every day.
Last time I wrote about vibe coding your own Postmark. That was a teardown. This one is a regular backlog topic. Official channel APIs, broadcasts, and a visual flow builder stay on the skip row.
Vibe code your own Manychat as keyword rules
The Manychat page splits the work into three rows.
The first row is 10 hours. Ordered keyword rules, reply templates, and an inbox. A rule has a keyword, a position, and a published or paused state. A template is the text that rule sends. The inbox holds messages that matched nothing, and the replies you type by hand.
The second row is 3 days. Named variables, a test send, conversation history, and one channel webhook. “Hello Ada” and a thread you can scroll can wait until one keyword already replies.
The third row is a month and up. Instagram and WhatsApp official APIs, broadcasts, and a visual flow builder. The table labels that row as the part you should skip.
If you tell an agent to “clone Manychat”, it aims at the third row. Copy the prompt, then pin it to the first one.
Store Rule, Template, Contact, Conversation, and Message. The card names all five. For these 10 hours, Rule, Template, and Message are enough. Contact and Conversation arrive with the history on the 3-day row.
A rule is a keyword, a sort order, and published or paused. A template is the body that rule sends. A message is one inbound line or one outbound line, with a state. On the later row, a contact is the person, and a conversation groups their messages.
The audience is a creator who answers the same incoming messages every day. The goal on the card is to auto-reply to keyword messages and keep everything else in one inbox.
The same v1 also stands in for Chatfuel and MobileMonkey. The card lists both under also-replaces, and it does not give them prices.
Intercom is a help button and a shared inbox, at $74–$139 a month. I wrote that teardown. A broadcast to a list is Kit at $29–$79 a month, in Build a Kit alternative. Shared email is Help Scout at $25–$75 a month, in Vibe code your own Help Scout. Those are different screens. This build is one keyword and the text it sends.
The guardrail is the rule you paste into the prompt. Fire only the first matching published rule. Rate-limit outbound sends. Store a message before any automation runs.
The card says “keyword” and does not define case or partial match. My advice is to match a whole word, ignoring case, and to write that into the prompt. Otherwise the agent invents a regex language. “price” then matches “What’s the price”, and it leaves “priceless” alone.
The card also requires a rate limit and does not give a number. The limit that matches the guardrail is one automatic reply per stored inbound message. A numeric cap per hour can wait until a real channel is attached.
How does a Manychat alternative work
I am describing the catalog’s model of a keyword reply. You publish a rule. A message arrives. The first matching published rule fills a reply. Anything else waits in the inbox.
Your browser talks to one Astro app for the rules and the inbox. Node.js plus Astro is the default. Use TanStack Start if React is your weekday language. The capability line on the card is Astro, HTMX, and D1.
The editor writes rules and templates to D1. A paused rule stays in the table and does not match. Publish is a state on the row, so you can turn a keyword off without deleting the text.
On the 10-hour cut, you record the inbound message yourself. You still read the channel where the question arrived. You paste the text into the inbox. The app stores that message first, then walks the published rules in order, and stops at the first keyword it finds.
Ada runs Saturday wheel classes. The published rules, in order, are price, then hours, then a paused refund.
She pastes “What’s the price for Saturday”. The store happens before the match. price hits. The reply is a new message on that thread, marked sent, using the Classes template. hours never runs, even though a longer message might have contained both words. refund is paused, so it would not run even if the text said refund.
Lea pastes “Can we collab next month”. No published keyword matches. The message stays unmatched. The inbox shows a reply box. You type the answer by hand. That hand reply is a message too. It does not go looking for a second rule.
The 3-day row replaces the paste with one inbound webhook. The channel posts the text. The same match runs. Variables and a send-test action live on that row too. A test send writes a normal message, so you can read the template before a stranger does. Conversation history is the same messages, grouped by contact.
If the outbound send fails, the inbound message is already stored. The inbox shows the failure on the reply. You do not lose the question because a later channel timed out.
Every editor query is scoped by owner. A guessed message id from another account returns an empty thread.
Screens of a Manychat alternative
v1 needs the rule list, one template, and the inbox. Webhook settings, variables, and a contact page can wait for the 3-day row.
Keyword rules
The rules screen is an ordered list. Each row shows the position, the keyword, the template name, and published or paused. Up and down change the order. The first published row is the one that can win.
Ada’s list has three rows. price points at Classes and is published. hours points at Studio hours and is published. refund points at Refund policy and is paused, so a message that says refund still falls through to the inbox.
Reply template
The template screen is a name and a body. Save stores that text. The 10-hour body has no variables. Named holes such as a first name, and a send-test button, are the 3-day row. Until then, the Classes body is the whole reply.
Inbox
The inbox is the third screen. Each row is a stored message, the match it got, and the reply if one was sent. Ada’s price question shows sent, with the Classes text under it. Lea’s collab note shows unmatched, with a box for a manual reply.
A failed send, once a channel exists, stays on that same row. You can read the question even when the reply did not leave.
How a keyword reply runs
You save Classes, then you publish price above hours. You paste Ada’s question. The app stores it, matches price, and writes one sent reply. You paste Lea’s note. The app stores it and leaves the reply box empty.
Pause price and paste Ada’s question again. The new message is unmatched. The old sent row stays. A paused rule does not rewrite history.
Put hours above price and paste a line that contains both words, such as “price and hours”. hours wins because it is first. The Classes template does not also send. That is the one-reply limit.
What to leave out of a Manychat clone
The skip row starts when the reply has to leave through Instagram or WhatsApp’s official API, or when the rule stops being a keyword and becomes a graph.
A visual flow builder is boxes, delays, buttons, and branches. That is a second product on top of the list. Broadcasts are a send to many people at once. That job is Kit, at the prices above. Paid messaging is billing. The non-goal on the card leaves all of those out.
The 3-day row is still yours if you want it after the weekend. One webhook, variables in the template, a test send, and history on a contact. It is the same match. The channel is no longer a paste box.
The scope post is the same three-row habit on any card. The prompt post is the extra line that says the first match wins and a second rule does not also send.
Start with the first row
Go to Build your own Manychat. Copy the Astro prompt, or TanStack Start if that is what you write.
Tell the agent the first estimate only. Keyword rules, templates, an inbox. Ten hours.
Publish price and paste one real question from this week. If the reply is the text you were typing by hand, the weekend row is done. Add the webhook when you are tired of pasting. Leave Instagram’s API on the $14 plan until that paste box is the thing you resent.