Free forever, no credit card.Get Started for Free →
← All posts
November 3, 2026 · 6 min read

They Already Left One. Why Does Your Scheduled Agent Keep Asking for a Review?

They Already Left One. Why Does Your Scheduled Agent Keep Asking for a Review? A customer buys a pair of walking shoes, wears them for two weeks, and leaves a thoughtful review: comfortable out of the box, true to size, good grip on wet pavement. A week later, your scheduled agent sends a review request for those same shoes. The following month, it sends another one. The customer does not write a second review. Instead, the customer starts to wonder whether the first review ever arrived, and wh

They Already Left One. Why Does Your Scheduled Agent Keep Asking for a Review?

A customer buys a pair of walking shoes, wears them for two weeks, and leaves a thoughtful review: comfortable out of the box, true to size, good grip on wet pavement. A week later, your scheduled agent sends a review request for those same shoes. The following month, it sends another one. The customer does not write a second review. Instead, the customer starts to wonder whether the first review ever arrived, and whether this business pays attention to anything its customers actually do.

Nothing in the review request is wrong on its own. The product name is right, the tone is friendly, and the link works. The only thing wrong is that the review it asks for already exists, and the agent sending the request never found out.

A repeat review request is not harmless. A customer who took the time to write a review and then gets asked again hears a specific message: your effort did not register. That is a strange reward for the most helpful thing a customer can do after a purchase. And it tends to repeat, because the same gap that caused the first duplicate will cause the next one too, until the customer either unsubscribes or stops reviewing altogether.

Why a completed review gets lost between runs

A scheduled review agent usually starts with a list of people to ask, not a record of what each person already did. That is where the duplicates come from.

First, the review lives in a different tool than the list. The review platform records the submitted review, while the scheduled agent reads an order list or a segment built days earlier. If no step carries the completion back to the list the agent reads, the next run has no way to know the review is done. The review tool did its job. The agent simply never asked it.

Second, the list gets rebuilt from an old snapshot. A fresh export, a re-imported audience, or a segment copied from last month can quietly drop the completion flags. The agent sends to the list it was given, and the list is stale. This is why duplicates often arrive in waves: one bad rebuild can re-ask a whole batch of customers who already reviewed.

Third, "sent" gets confused with "completed." Many workflows track whether a review request was sent, not whether a review was submitted. A customer who clicked the link and wrote a review looks the same as a customer who never opened it, because both rows say the request went out. A run that only checks the send flag will keep chasing people who already answered, while also missing the people who genuinely never replied.

Fourth, the same person appears under more than one identity. A customer reviews as a guest at checkout, while the list uses the account email, or reviews on a marketplace listing while the agent reads only the store's own review tool. When the match fails, the review belongs to a stranger as far as the agent is concerned, and the real customer gets asked again.

All four failures share one root cause. The review run trusts a partial or stale picture of the customer instead of checking the current state before it acts. The agent wakes up, reads what it was given, and asks, never checking whether anything changed since the list was made.

What a repeat review request costs

The obvious cost is a lost review. A customer asked twice rarely writes twice, and a customer asked three times may stop engaging with the brand's messages. Review volume is hard to earn and easy to burn, and nothing burns it faster than asking people to repeat work they already did for free.

There is also a quieter cost in the data. When the list is full of people who already answered, response rates stop meaning anything. A team reading those numbers may rewrite a working request or add an incentive, all to fix a list problem disguised as a messaging problem.

The check that has to happen before every send

The fix is a habit, not a feature. Before any review request goes out, the agent should recheck the customer and the order it is about to ask about, in the system that owns the review, at send time, not at list-building time. If a review already exists for that customer and that product, the request stops, and the reason is recorded so an operator can tell a suppressed request from one that failed to send.

That recheck only works if completion is stored as shared state, not as a note inside one tool. The review status has to be one fact that every part of the setup reads: the store, the review platform, the marketplace listing, and the review agent. When a review submitted in one place is visible to the next run, a change on Tuesday stops a duplicate on Thursday.

It also helps to match on the person, not just the address. A review tied to a guest checkout, a marketplace account, and a store account should resolve to one customer when the order history says so.

What to check before the next review run

Before the next review run, check four things. Does the run re-read review completion immediately before sending, or trust a list built earlier? Does it check every place a review can land, including the store, the marketplace, and any third-party review tool? Does it distinguish "request sent" from "review submitted," and match reviews across guest, account, and marketplace identities? And does it log suppressed requests with a reason? If the answer to any of those is no, the next customer who already reviewed is already on the list. The fix is not a better request template. It is a memory the agent can trust at send time.

This is the kind of failure that a shared memory layer is built to prevent. Vilix AI gives scheduled agents one memory that every connected tool reads over MCP, instead of each tool keeping its own copy of the facts. When a customer leaves a review through one tool, that completion, and the full conversation around the purchase, is available to the review agent on its next run. The agent does not have to guess whether a review exists, and it does not have to reconcile three different versions of the customer.

Vilix AI is cloud hosted, so there is nothing to install or maintain, and the same memory follows the customer across every tool. Vilix AI stores full conversation history, not just extracted facts, so the exchange where a customer reviewed, declined, or asked to stop stays retrievable in full. The next run can read what actually happened instead of guessing from a label.

Getting started is low friction: a free plan that stays free, and a 7-day Pro trial with no credit card required. Your data stays portable: export everything or delete it anytime. A customer who already left a review has already done the favor. Give your scheduled agent a memory that knows it, and the next run will ask only the people who have not answered yet.

Get Started for Free

Persistent memory across ChatGPT, Claude, and the AI tools you already use in Vilix AI.

Get Started for Free

Free forever, no credit card.

Keep reading
Does Base44 Remember Between Sessions? Two Different Memories, Two Different Answers

Does Base44 Remember Between Sessions? Two Different Memories, Two Different Answers Short answer: yes, in two separate places, and neither one is the memory most people mean when they ask the question. The AI chat that builds your app keeps its conversation, its plans, and the instructions you wrote for that app. The AI agents you build inside your app have their own memory, on by default, that carries preferences and facts across conversations with your app's users. Both are real. Both stop a

Does v0 Remember Between Sessions? Chat Context, Knowledge, and Where It Stops

Does v0 Remember Between Sessions? Chat Context, Knowledge, and Where It Stops Short answer: inside one chat, yes. Across chats, projects, and the rest of your tools, mostly no, unless you wrote the context down yourself in the places v0 calls Knowledge and custom instructions. That distinction matters because v0 feels continuous while you work in it. You return to a chat, the conversation is still there, the generated app is still there, and iteration picks up where it left off. It is easy to

Does Bolt Remember Between Sessions? Chat Threads, Knowledge, and Short-Term Memory, Explained

Does Bolt Remember Between Sessions? Chat Threads, Knowledge, and Short-Term Memory, Explained Short answer: the project remembers, because the project never goes away. Your code, your chat thread, your version history, and your backups are all still there when you come back tomorrow, so picking the work back up feels continuous. But Bolt does not build a learned memory of you or your decisions the way a memory product does. What carries between sessions is the work itself, plus whatever contex