Your Google review reply can be rejected. The API says why, the dashboard does not
Google's Business Profile API returns a state and a policy reason for a rejected review reply. Its dashboard shows neither, and its appeal tool is for profiles rather than replies. Here are the 43 reasons it publishes, and what the names do and do not mean.
You reply to a review. It looks fine. Weeks later you notice the reply is not there.
Google moderates review replies, and it can reject one. Its own help page says so plainly:
This makes sure that they follow Google’s content policies. If your reply isn’t approved to be posted, you’ll be asked to edit it.
That page also sets expectations on timing: “Replies usually take up to 10 minutes to review, but sometimes a review can take up to 30 days.”
So Google does document a prompt at submission time. What we could not find on any page cited below is anything after that: no status view for replies, no notification if one is rejected later, and no reason code in the interface. We have no Business Profile API access and no verified profile, so that is a search of what Google publishes rather than a tour of the signed-in dashboard.
Practitioners report replies disappearing with no prompt at all, which we have not tested and will not assert on someone else’s account of their own client base. What we can show you is the machinery Google has published, which changed twice this year.
Google added the state in April and the reason in July
Three entries from Google’s own Business Profile API changelog:
| Date | Entry, verbatim |
|---|---|
| 2026-04-01 | “Review Reply: ReviewReplyState can now be retrieved as part of reviews.” |
| 2026-07-01 | “Policy Violation: PolicyViolation can now be retrieved as part of reviews.” |
| 2026-07-24 | “review_reply_url: The reviewReplyUrl can now be retrieved as part of reviews” |
A banner now runs across the reviews reference, the review-data page, the FAQ and the policies page:
You can now view the specific policy violations for any of your review replies that have been rejected in the Reviews API.
So the data exists. It is simply not where a business owner would look.
What the API returns
A ReviewReply has this shape:
{
"comment": string,
"updateTime": string,
"reviewReplyState": enum (State),
"policyViolation": enum (PolicyViolation)
}
reviewReplyState is documented as “Output only. The state of the review reply.”
It has four values, quoted from Google’s reference:
REVIEW_REPLY_STATE_UNSPECIFIED, “Indicates that the state is unspecified.”PENDING, “Indicates that the reply is pending moderation.”REJECTED, “Indicates that the reply was rejected.”APPROVED, “Indicates that the reply was approved.”
policyViolation is “Optional. Output only. The policy violation that resulted
in rejection. Only populated if reviewReplyState is REJECTED.” So the two
fields answer different questions: the state tells you a reply was rejected, and
the violation tells you which rule it was rejected under.
A third of the reasons are not about what you wrote
There are 43 values in the PolicyViolation enum, and Google publishes a
one-sentence description for every one of them. The grouping below is ours,
not Google’s taxonomy, but the descriptions quoted under it are Google’s own
words. Grouped that way, fourteen describe the state of your account or your
listing rather than the text of your reply.
Account and location problems. Nothing to do with the words:
ACCOUNT_RESTRICTED_AND_SUSPENDED, ACCOUNT_RESTRICTED_AND_EDIT_REJECTED,
ASSOCIATED_ACCOUNT_SUSPENDED, BUSINESS_INELIGIBLE, OWNERSHIP_REVOKED,
LOCATION_SUSPENDED, LOCATION_DISABLED, LOCATION_VERIFICATION_REQUIRED,
PO_BOX, GOOGLE_PAY_SUSPENSION, EDITING_RESTRICTION,
ILLEGAL_BUSINESS_HOURS_EDIT, IDENTITY_CHANGE, GEOGRAPHIC_LOCATION_CHANGE
If the reason is one of these, “rewrite it and try again” is the wrong response. Check whether the listing is suspended or needs re-verification before touching the text. How often that is the case we do not know, and we have not seen a figure we could check.
That block also gives away something about the enum: PO_BOX,
ILLEGAL_BUSINESS_HOURS_EDIT and GEOGRAPHIC_LOCATION_CHANGE are not things a
reply can do. This looks like Google’s general profile-moderation enum, reused
for replies, which means some values may never appear on one.
Content problems. These are about what the reply actually says:
FAKE_ENGAGEMENT, ADVERTISING_AND_SOLICITATION, GIBBERISH_AND_REPETITIVE,
REPETITIVE, UNCLEAR, OFF_TOPIC, OFFENSIVE, HARASSMENT, HATE_SPEECH,
IMPERSONATION, MISINFORMATION, MISREPRESENTATION,
OBSCENITY_AND_PROFANITY, PERSONAL_INFO, PRIVACY, ADULT_THEMED,
SEXUALLY_EXPLICIT, DANGEROUS, VIOLENCE_AND_GORE, CHILD_SAFETY,
ILLEGAL, REGULATED_GOODS_AND_SERVICES, PHOTOS_AND_VIDEOS_CRITERIA
Four are worth a business owner’s attention, because what Google describes is easy to do by accident. Google’s description is quoted; the everyday version after it is ours:
PERSONAL_INFO. Google: “Personal information includes private or confidential information, such as credit card details, medical records, or government-issued identification, whether yours or someone else’s.” The everyday version is naming a customer, quoting an order number, or confirming a booking detail in a public reply.ADVERTISING_AND_SOLICITATION. Google: “Advertising and solicitation includes promotional or commercial content, or content posted in exchange for benefits.” The everyday version is a discount code or an offer made to settle a complaint. This entry also named a call-us-on line until 2026-09-19, which was our inference rather than Google’s rule: the Maps User Generated Content Policy scopes the merchant ban on phone numbers to the listing and to posts, and states that “We do allow merchants to post contact information related to their business including phone, email, or social media handles.”REPETITIVEandGIBBERISH_AND_REPETITIVE. Two separate values that both name repetition. Google defines the first as “identical or similar content added multiple times by one or more accounts”, and the second as content that “dilutes useful information others can find on Google”. Pasting the same thank-you under thirty reviews is the obvious way to produce it.
Catch-alls and admissions. Six values whose descriptions name nothing you could act on, quoted in full:
| Value | Google’s description, verbatim |
|---|---|
POLICY_VIOLATION_UNSPECIFIED |
“Represents an unspecified policy violation.” |
GENERIC_VIOLATION |
“Your content violates our policies and isn’t allowed.” |
GENERIC_QUALITY |
“Content that violates our policies on low quality content isn’t allowed.” |
GENERIC_VANDALISM |
“Content that violates our policies on abusive or low quality content isn’t allowed.” |
GENERIC_FRAUD |
“Content that violates our policies on deceptive content and behavior isn’t allowed. Deceptive content intentionally misleads or deceives others.” |
MODERATION_ERROR |
“An error occurred while processing your content.” |
GENERIC_VANDALISM does not describe vandalism, GENERIC_VIOLATION names no
category at all, and POLICY_VIOLATION_UNSPECIFIED is the enum’s default rather
than a moderation outcome. Set them against PERSONAL_INFO above, which names
documents you can look for and delete. None of the six points at a sentence.
MODERATION_ERROR is the one to read by its description rather than its name:
“An error occurred while processing your content.” That describes a failure to
process, which is not the same thing as a moderator reaching the wrong verdict.
This page read it the second way until 2026-09-19, which was our inference from
the word error and not something Google says. There is no second sentence and no
linked policy to settle it, and the sentence Google does publish does not say
your reply was compliant or that anyone will look again.
The enum header is open by design, and it is worth quoting whole because it is a statement about values that do not exist yet:
Represents standardized policy violations. New values may be added in the future. Clients should be prepared to handle unknown values.
So the set of reasons that tell you nothing is not fixed at six. Any tool reading this field, ours included, can be handed a value it has no text for, and a tool that reads these fields should print the raw identifier rather than invent an explanation for it.
Two values that are read wider than they are written
OFF_TOPIC says “Off-topic content includes general, political, or social
commentary, and personal rants.” The section behind it on the Maps User Generated
Content Policy opens on a positive test: “Only post content that is based on your
experience or questions about experiences at a specific location.” That reads
like a test no reply could pass, and it is not one: a merchant answering a review
is describing an experience at their own business, which is a specific location.
The policy names merchants explicitly where it means them, “We do not allow
merchants to:” and “We do allow merchants to:”, and the off-topic section carries
no such clause and never mentions a reply. That reading is ours. No page we read
states what a reply is supposed to be on topic about: the review, the business,
or the visit.
MISREPRESENTATION turns on purpose rather than on being wrong:
“Misrepresentation includes misleading representations or omissions for the
purpose of gaining improper benefit.” MISINFORMATION beside it turns on
consequence, “may cause significant harm to individuals, businesses, or society”,
and the policy’s three examples under it (health, civic processes, manipulated
newsworthy content) arrive after “This includes”, which marks where the section
has gone rather than where it stops. Neither is the value to expect on a
combative reply. What Google publishes for a reply that goes after the reviewer
is OFFENSIVE, “Offensive content may reasonably cause another to experience
extreme anger, insult, or disrespect.”, beside a policy line prohibiting
“Unsubstantiated allegations of unethical behavior or criminal wrongdoing”.
We looked for a way to appeal a reply, and found one for profiles only
Google’s only published instruction to an owner whose reply was refused is the edit prompt at the top of this page, and the steps under it are mechanical: “Under the reply you want to edit, select Edit.” Edit, not appeal.
Google’s appeal tool is for the profile rather than the reply. Fix suspended or disabled profiles opens: “We may suspend or disable Business Profiles that don’t follow our guidelines. If you believe your profile should be reinstated, you can submit an appeal.” The appeals tool then shows “The restricted profile”, “The reason for the moderation action” and “A link to the violated policy”. That page never mentions review replies.
So the position splits on which value came back. The account-level and listing-level values have a published route, for the profile. For a content value on the reply itself, we found no way to contest it on any of the pages cited below, which is a statement about what we searched rather than proof that no route exists.
Reading it yourself
The fields are on accounts.locations.reviews in the v4 Business Profile API:
list, get, batchGetReviews, updateReply (PUT .../reviews/{reviewId}/reply)
and deleteReply. Scope https://www.googleapis.com/auth/business.manage.
Two corrections to things we have read about this API, both checked against Google’s own pages:
“v4 is deprecated” is wrong as applied to reviews. Google’s deprecation
schedule lists the Q&A API, the Calls API, some health-provider attributes,
locations.associate, and the Performance API migration. Neither the Reviews
API nor the v4 host appears on it, and a surface that gained three fields
between April and July 2026 is not one being retired.
Access is gated, not closed. Google’s prerequisites require a Business Profile “verified and active for 60+ days”, a website listed on the profile, and an email address that is an owner or manager of it. The FAQ says requests are “reviewed within 14 days”, which is a review window rather than an approval promise.
Why we wrote this
We are building a tool specified to reply to Google reviews, so we needed to know what happens when a reply is refused. Specified rather than built: there is no Google Business Profile code in this repository yet, and no reply of ours has ever published.
We have not measured how often rejections happen. A figure circulates from a single vendor’s analysis of its own client base, and we will not repeat a number we cannot check. What is verifiable is the mechanism, and the mechanism is above.
Sources
- Google, Business Profile APIs, accounts.locations.reviews REST reference Read 19 September 2026.
- Google, Business Profile APIs, package google.mybusiness.v4 RPC reference Read 18 September 2026.
- Google, Business Profile APIs, Latest updates Read 18 September 2026.
- Google, Business Profile Help, Manage customer reviews Read 18 September 2026.
- Google, Business Profile APIs, Prerequisites Read 18 September 2026.
- Google, Business Profile APIs, deprecation schedule Read 18 September 2026.
- Google, Business Profile APIs, frequently asked questions Read 19 September 2026.
- Google, Maps User Generated Content Policy, Prohibited & restricted content Read 19 September 2026.
- Google, Business Profile Help, Fix suspended or disabled profiles Read 19 September 2026.