Advertising Compliance & Validation
How theStacc checks Google Business Profile posts and review replies against your advertising-compliance rules before they publish, and what happens when something is flagged.
If your business advertises in a regulated profession (for example healthcare, law, mortgage, real estate, or contracting), theStacc can check your Local SEO content against advertising-compliance rules before it goes live. This page explains exactly what gets checked, what blocks a publish, and where the result is recorded.
This is an optional, opt-in feature. If you have not turned on a compliance profile for your project, nothing on this page applies and your posts and review replies publish exactly as they always have. See Compliance Profiles under Content SEO at /docs/content-seo/compliance-profiles to learn how to enable and configure it.
What gets checked#
When a project has a compliance profile enabled, two Local SEO surfaces are validated right before they publish:
- Google Business Profile posts (both when you publish manually and when auto-publish runs on schedule)
- Review replies posted to Google Business Profile
Both surfaces are short and length-constrained (a GBP post or a 2 to 4 sentence review reply cannot carry a full legal disclaimer), so theStacc runs a short-form version of the same compliance engine used for your blog content. This keeps the focus on the substance of what you can and cannot say, rather than forcing a license number or full disclaimer footer into a place it does not fit.
The check looks at four things:
1. Violations#
These are things your rule pack says you must never say in advertising for your profession. theStacc detects them three ways:
- Exact phrase matches against a blocklist of prohibited terms.
- Pattern matches for prohibited phrasing (for example a stated rate that must always be accompanied by an APR disclosure).
- A judgment check for the cases a simple keyword search cannot catch, such as fabricated testimonials, prohibited guarantees, unsubstantiated claims, or protected health information. This runs as a single, fast classification pass. It only decides "does this rule fire, yes or no" - it never rewrites your content. When it is genuinely unsure, it is built to err on the side of flagging for a human to look at.
2. Missing required insertions#
Some rule packs require specific disclosures (for example a firm name or a license number). On these short surfaces, required disclosures live at the profile or bio level, not stuffed into every post, so a missing disclosure is recorded but does not by itself stop a short post from publishing. The substantive prohibitions above are what gate a short post.
3. Severity#
Every check rolls up to one overall severity:
- none - nothing fired. Safe to publish.
- hold_for_review - something needs a human to look at it before it goes out.
- block - a hard violation that must not publish.
When more than one issue is found, the strictest one wins (block outranks hold-for-review outranks none).
4. Never-autopilot#
Some rule packs (for example certain attorney-advertising rules in specific states) forbid auto-publishing advertising at all. When a project's rules include one of these, the content is flagged never-autopilot. This flag holds the publish regardless of whether any other violation fired.
What blocks a publish#
The gate policy is simple and the same for GBP posts and review replies:
A publish is stopped whenever the result is block, hold_for_review, or never-autopilot.
When that happens:
- The content is not posted to Google Business Profile.
- The reason is recorded on the item so you can see why. A GBP post is marked as failed to publish, with the reason saved in its publish error. A review reply has the reason saved in its response publish error.
- If you triggered the publish from the app, you get a clear message back explaining the hold instead of a silent success.
There is no override here#
Unlike long-form blog content (where a held draft can be reviewed and approved by a person), Local SEO has no override path. A held or blocked GBP post or review reply cannot be force-published. To get it out, you edit the content to resolve the issue and publish again. The corrected version is re-checked from scratch.
Auto-publish (scheduled posts)#
When the daily auto-publish job runs, there is no person in the loop to clear a hold. So for scheduled GBP posts, block, hold-for-review, and never-autopilot all stop the post the same way - it is marked failed-to-publish with the recorded reason and skipped. You can then open it, fix it, and publish manually.
What happens if the check itself errors#
theStacc is deliberately careful here, because the worst outcome would be shipping unreviewed regulated advertising.
- The check is fail-closed. If theStacc cannot load your compliance profile, or the validation errors part-way through, the content is held for review rather than published. A check that could not run is never treated as a pass.
- One narrow fail-open case: if the shared compliance engine itself is unavailable in the environment (an infrastructure-level problem that would affect every project equally, not a signal about your specific content), the publish proceeds as it normally would. This prevents a platform-wide outage from silently blocking everyone, while still failing closed on anything that is actually about your content or your profile.
Projects without a compliance profile are always a no-op - they are never held by this gate.
The audit trail#
Every time the gate evaluates a Google Business Profile post - whether it passes, holds, or blocks - theStacc records a compliance check on the post for your records. That record includes:
- The rule-pack versions that were applied (so you can show exactly which version of which rules ran).
- The violations that fired.
- Which required disclosures were supplied automatically and which were still missing.
- The result: passed or not, the severity, the review level, and the never-autopilot flag.
- A timestamp of when the check ran.
This is your "we assisted, the rules were applied, here is what happened" evidence trail. Because review replies are stored more simply, they do not carry this full record - for a held reply, the reason is saved directly on the review's response publish error field instead.
How this fits together#
- To turn compliance on, choose your profession and jurisdictions, and enter your firm name and license numbers, see Compliance Profiles at /docs/content-seo/compliance-profiles.
- To work with review replies, see /docs/local-seo/reviews.
- To work with Google Business Profile posts, see /docs/local-seo/google-business-profile.
If a post or reply is held and you are not sure why, open it and read the recorded reason - it names the specific rule that fired. Edit the content to address it, then publish again.