Geoa – AI SEO & AEO on Autopilot

Descriere

Get found when your customers ask AI. On autopilot.

Your customers increasingly ask ChatGPT, Google’s AI Overviews, Perplexity and Claude instead of searching. Geoa makes your WordPress site something those engines can read, trust and verify — then does the work for you: it fixes your site, you approve, and the before/after proof comes with every fix. Built for the tradesman, the accountant and the clinic with no marketing department.

Three steps:

  1. Connect your site — pair the plugin with your Geoa account in about a minute.
  2. Geoa makes you AI-ready — automatically. It builds the registry-verified schema, llms.txt and structured data answer engines look for, and (with your one-click approval) publishes it to your site and keeps it in sync. No copy-pasting code.
  3. Watch it work. A per-engine AI Visibility Score, Share of Voice and a live „is it published?” status show your progress — and every published fix gets a public before/after proof page.

Geoa is built for the European market: analysis runs on an EU-hosted, GDPR-safe backend, and everything here — AI-visibility scoring, approved on-page fixes, llms.txt, E-E-A-T checks and AI-crawler tracking — works wherever your business is. On top of that, and uniquely, Geoa publishes registry-verified business schema looked up live in four official national registries: Danish CVR, Norwegian Brønnøysund, Swedish Bolagsverket/Allabolag and Finnish PRH. Outside those four you use the rest of the plugin and skip that one step. Output is generated in your own language.

What it does

Structured data for AI

  • Registry-verified Organization schema — enter your registration number; Geoa fetches verified legal name, VAT status (VIES), address, founding date and industry, and publishes valid JSON-LD. Contact data is hidden automatically when a business has marketing protection (GDPR).
  • Entity verification (sameAs) — link your Trustpilot, LinkedIn and other profiles, plus the official registry page, so engines can corroborate your business. Nordic directories included (Krak, Finn.no, Hitta.se, Ratsit, Finder.fi and more).
  • FAQ schema in your language — turns the questions and answers already in your posts into FAQPage markup for AI extraction.
  • Article schema — author, dates and publisher for single posts.
  • WooCommerce Product schema — price, availability, brand, GTIN, ratings and an EU return policy (14-day right of withdrawal) so AI shopping agents can cite your products. Variable products emit a proper price range, and when your business is verified the Offer is linked to a registry-verified seller — a trust signal generic Product schema can’t express. A per-product AI-readiness score sits in the product editor.
  • Optional llms.txt — a curated, opt-in file for AI crawlers.

Analysis

  • In-editor AEO readiness — a per-post score right in the block editor. Connected sites are scored against Geoa’s 23-signal GEO content standard (the same checklist Geoa Content uses), with a concrete hint for every missed signal; unconnected sites get a local estimate, labelled as such.
  • E-E-A-T trust signals — identity, contact, about, privacy and author signals.
  • Citation coverage — which third-party sources you have and which are missing. Connected sites get Geoa’s tier-ranked source list (Wikidata, Crunchbase, Google Business Profile and more) with create-links and time estimates, and the profile URLs you enter sync to your Geoa account as sameAs.
  • AI crawler activity — see when GPTBot, ClaudeBot, PerplexityBot and others fetch your pages.

AI visibility & automatic fixes (connect a Geoa account)

  • AI Visibility Score per engine, Share of Voice, and an AI Command Center of prioritised actions.
  • Approved fixes, published for you — approve a fix in your Geoa dashboard (an llms.txt, a structured-data block, a meta title or description) and Geoa publishes it on your site and keeps it in sync, checked hourly. An approved fix always takes precedence over the plugin’s own output, so you never get a duplicate — and you can turn it off at any time.
  • Articles from Geoa Content, delivered as drafts — articles you mark „ready” in Geoa Content (content.geoa.app) appear as draft posts in WordPress, prepared with your business knowledge, an FAQ section and SEO metadata. You review and press Publish yourself — nothing goes live automatically — and once live, Geoa measures the article’s actual effect.

Geoa never emits duplicate structured data: when Yoast or Rank Math already provide a schema type, Geoa augments their graph instead of adding a second node.

External services

This plugin is a client for the Geoa service (https://geoa.app), operated by AddonNordic ApS. It sends requests to the Geoa API at https://api.geoa.app to verify your business against official national registries and to run AI-visibility analysis, and (only after you connect a Geoa account) to the Geoa connect service at https://connect.geoa.app to report AI-crawler activity on your site. It uses no other external service.

What data is sent, and when:

  • Registry verification — when you enter your country and registration number in Geoa Settings (or open that screen with them saved), that registration number is sent so the service can verify your business and return your official company data (legal name, VAT status, address, industry, founding date).
  • Structured-data and analysis features — when you use them, the URL and the public content of the page(s) you choose to analyse are sent.
  • AI-visibility scoring — only after you connect a Geoa account: your per-site pairing key (obtained from the Geoa dashboard) is sent as an authentication header so the service knows which account to read. The free tier never triggers a paid backend call.
  • Approved fixes — only after you connect a Geoa account and enable „Apply approved fixes”: once an hour the plugin fetches the fixes you approved in your Geoa dashboard (llms.txt, structured data, meta) and reports back which are live. Only your pairing key is sent; you can turn this off at any time.
  • Article import — only after you connect a Geoa account: once an hour the plugin fetches articles you marked „ready” in Geoa Content and creates them as draft posts for your review. When an article comes with a share image (a PNG card with the article’s title and your business name, served from https://geoa.app), the plugin downloads it once into your media library and sets it as the draft’s featured image, unless the draft already has one. It reports back which drafts were created and, when you publish one, its permalink — so Geoa can measure the article’s effect. Only your pairing key, post IDs and permalinks are sent; drafts are never published automatically, and you can turn this off at any time.
  • Plan and usage — only after you connect a Geoa account, and only inside wp-admin: when you open Geoa Settings the plugin reads your own plan, limits and monitored-question count so it can show them. Only your pairing key is sent; the result is cached, and no request is made from your site’s public pages.
  • Monitored questions — only after you connect a Geoa account, and only inside wp-admin: when you open Geoa Settings the plugin reads your monitored questions from your Geoa account so it can show them. Only your pairing key is sent; the questions themselves are edited in your Geoa dashboard, not in the plugin.
  • Chosen name — only after you connect a Geoa account, and only when you set the name your business should be known as (setup or Geoa Settings): that name and its spelling variants are sent so the schema on your site and the AI measurement in your dashboard describe the same entity.
  • Profile URLs — only after you connect a Geoa account, and only when you save a profile URL (Trustpilot, LinkedIn, …) in Geoa Settings: that URL is sent so it can appear as sameAs in every schema Geoa publishes for you.
  • In-editor scoring — only after you connect a Geoa account, and only when you open a post in the block editor: the post’s title and content are sent so Geoa can score the draft against its GEO content standard. The result is cached until the content changes; nothing is stored server-side.
  • Content opportunities and citation sources — only after you connect a Geoa account, and only inside wp-admin: when you open the Geoa dashboard the plugin reads your opportunity list and source checklist. Only your pairing key is sent; results are cached.
  • Alt-text suggestions — only after you connect a Geoa account, and only when you click „Write suggestions” on the Alt text screen: the public URLs, filenames and parent-post titles of up to 10 images missing alt text are sent to https://api.geoa.app, where the alt texts are written from the images. The count of images missing alt text is included in the hourly status ping. Nothing is written back until you approve it on the review screen.
  • Article links — only after you connect a Geoa account: on the hourly sync the plugin sends the outbound and internal link URLs (with anchor text and the article’s title/URL) from a rotating batch of your published posts to https://api.geoa.app, so Geoa can check for broken links server-side. No visitor data is involved.
  • Content & site overview — only after you connect a Geoa account: the hourly status ping includes a compact list of your published posts (post ID, title, public URL, an admin edit link and the last-modified date — never the post content) and your site’s environment facts (theme and plugin names/versions incl. whether each plugin is active, whether search engines are discouraged, the permalink structure, whether core sitemaps are enabled, a small whitelist of Yoast/Rank Math settings — their sitemap toggle and organization/knowledge-graph name — and taxonomy counts). This lets your Geoa employee suggest refreshing outdated posts and warn about SEO conflicts with other plugins. No visitor data, no user accounts and no post content are sent.
  • AI bot choice — only after you connect a Geoa account, and only when you flip the „Block AI training bots” toggle: the plugin sends that single yes/no choice to https://api.geoa.app, which returns the robots.txt rules to apply. No other data is sent.
  • 404 traffic — only after you connect a Geoa account: the plugin counts real front-end 404 hits (the path only — query strings are stripped; no IP address, no user-agent, no visitor data) and sends the per-path counters to https://api.geoa.app on the hourly sync, so Geoa can suggest redirects for lost traffic. Bot-probe paths (wp-login, .env, …) are filtered out locally and never sent.
  • AI-crawler activity — only after you connect a Geoa account: when a known AI crawler (e.g. GPTBot, ClaudeBot, PerplexityBot) fetches one of your pages, the plugin sends that crawler’s user-agent, the page path (query string stripped), a timestamp and the status code to https://connect.geoa.app — batched and asynchronously (at most one background request every 5 minutes), so it never slows your site. This powers the „AI crawlers on your site” card in your Geoa dashboard. No visitor data and no IP addresses are ever sent — only requests already identifying themselves as known AI crawlers. Disconnect your Geoa account and nothing is sent.

  • Geoa badge (optional, off by default) — if you switch the badge on and place it on your site, your visitors’ browsers load the badge image from https://geoa.app. The image is an anonymous, unguessable address; the fetch is not logged per visitor, sets no cookie and assigns no identifier. Switch the badge off and no such request is made.

This plugin does NOT track your site’s visitors. It sets no cookies, adds no front-end tracking scripts, assigns no visitor identifiers, and never sends visitor or personal data to any external service. The AI crawler log records only the user-agent of known AI crawlers (e.g. GPTBot, ClaudeBot) that request your pages; it is stored locally in your own database, and is only transmitted (to https://connect.geoa.app, as described above) after you have connected a Geoa account — never IP addresses, never human visitors.

Service: https://geoa.app
Terms of Service: https://geoa.app/terms
Privacy Policy: https://geoa.app/privacy

Capturi ecran

Blocuri

Acest modul oferă 1 bloc.

  • Geoa badge

Instalare

  1. Upload the geoa-ai-visibility folder to /wp-content/plugins/, or install it from the Plugins screen.
  2. Activate the plugin.
  3. Go to Geoa Settings, choose your country and enter your registration number, then publish your registry-verified schema.
  4. (Optional) Connect a Geoa account with a pairing code from your Geoa dashboard to see live AI-visibility scores.

Întrebări frecvente

Does Geoa work alongside Yoast SEO or Rank Math?

Yes — by design. Geoa never prints a second schema graph or a duplicate meta tag next to theirs: the registry-verified Organization data (company ID, legal name, VAT ID, profiles) is merged INTO Yoast’s or Rank Math’s own schema graph via their official filters, approved meta descriptions are rendered through their presenters, and Article/FAQ/canonical output defers to them. You keep your SEO plugin; Geoa adds the AI-visibility layer on top. All in One SEO and SEOPress are detected too, so Geoa defers its overlapping output to them as well.

Do I need a Geoa account?

No. Registry-verified schema, FAQ/Article/Product schema, the in-editor readiness check, E-E-A-T and the AI crawler log all work without an account. A Geoa account adds live per-engine AI-visibility scoring, Share of Voice, the AI Command Center and automatically published approved fixes.

Can Geoa publish fixes automatically?

Yes, when you connect a Geoa account and enable „Apply approved fixes”. Anything you approve in your Geoa dashboard — an llms.txt, a structured-data block, a meta title or description — is then published on your site and kept in sync, checked once an hour. Approved fixes always take precedence over the plugin’s own output, so you never get a duplicate, and you can turn the whole thing off at any time. Nothing is published without your approval.

Does it conflict with Yoast or Rank Math?

No. When an SEO plugin already emits a schema type, Geoa merges its data into that plugin’s graph instead of adding a duplicate node.

Which countries are supported for registry verification?

Denmark (CVR), Norway (Brønnøysund), Sweden (Bolagsverket/Allabolag) and Finland (PRH).

Is my data processed in the EU?

Yes. The Geoa backend is EU-hosted, and contact data covered by marketing protection is never published.

Does it work with WooCommerce?

Yes. On product pages it publishes enriched Product schema — price, availability, brand, GTIN, ratings, an EU return policy and, when your business is verified, a registry-verified seller. Variable products emit a correct price range (AggregateOffer). If Yoast or Rank Math already emits Product schema, Geoa merges these fields into their graph instead of adding a duplicate. A per-product AI-readiness score appears in the product editor.

Can AI agents use Geoa directly?

Yes. Geoa ships an MCP server at https://geoa.app/mcp — connect it as a custom connector in Claude (or any MCP-capable agent). Without a key the agent can run the free GEO score and mechanical claim verification; with your personal connector key (Integrations in the Geoa dashboard) it can also read your AI-visibility report and fix queue, draft source-verified articles into Content Studio, and run Radar prospecting. The connector is read-only on your site: fixes are only ever applied through the approval flows in the dashboard and this plugin.

Recenzii

Nu există nicio verificare pentru acest modul.

Contributori și dezvoltatori

„Geoa – AI SEO & AEO on Autopilot” este un software open-source. La acest modul au contribuit următoarele persoane.

Contributori

Istoric modificări

0.9.31

  • Updating the plugin now finishes the work an update is meant to do. Every release carries an internal version stamp the plugin reads to tell that it has just been updated; in 0.9.30 that stamp was left reading 0.9.29, so on a site coming from 0.9.29 the plugin concluded nothing had changed and skipped the pass it makes after an update. Three things followed. Your score kept showing the figure the previous release’s rules produced, for up to half an hour after an update meant to change it. Your browser kept rendering the new version’s screens with the previous version’s stylesheet and script, so anything we changed on screen did not reach you. And a site that had installed the plugin but never finished connecting stayed on the pairing screen, because the pass that reconnects it is exactly the one that was skipped. All three work again, and this release picks up every site that was on 0.9.30.
  • The measurements your site reports to Geoa now carry the version that is actually installed. Every 0.9.30 site identified itself as 0.9.29, which is what our own diagnostics were reading.

0.9.30

  • The AI Command Center card now speaks the same language as the rest of this screen. Its list came from the same place your Geoa dashboard reads, so a Danish account saw Danish action titles under an English heading — and the line beneath each one was the first line of a Markdown document, which was usually just a heading marker. The card now receives the finding itself, written in this admin’s language.
  • Monitored questions that still show a blank from our own template are no longer listed under Settings. New ones are no longer produced, but questions measured before that fix are still stored on your account, and this list is where you would have met them.
  • Counts and the words after them now agree, wherever a number can be one. „1 AI-motorer”, „1 billede(r)”, „1 navn(e)” — a parenthesis is not a plural, it is a way of not choosing. Danish, Norwegian, Swedish and English all now read correctly at one and at many, in the weekly and monthly emails, the fix backlog and the published measurement claims.

0.9.29

  • Geoa now measures the name your own site goes by, instead of your web address. When your account had never been asked for a name, Geoa fell back to the domain — so a site trading as WonMetrics was measured as „wonmetrics.com”, and that is what went into your schema as the name AI should know you by. WordPress knows something your Geoa account cannot see: the name you typed into your own site. The plugin now offers that name once, marked as a suggestion — Geoa still asks you to confirm it, and it will never overwrite a name you have chosen yourself.

0.9.28

  • The AI Command Center no longer tells you to run a scan there is no button for. That card printed „run a Geoa scan to generate your action list” while the plugin had no scan control anywhere — an instruction you could not follow. There is now a real one: Analyse my site now, on the card itself.
  • The same card printed that one line for four different situations. It now tells them apart: Geoa could not be reached (a connection problem, and explicitly not an all-clear), your account was not found, an analysis is running right now (with what it is doing, and the card follows it to the end on its own), your scans for the period are used up, or your site was analysed and genuinely has nothing worth listing — with the date it was checked.
  • A site Geoa already knew now gets analysed when you install the plugin. Reinstalling, or connecting a site that had been scanned from geoa.app before, reconnected you to the same account without starting a new analysis — so the action list stayed empty with nothing on screen able to change it.
  • The score now says which AI engines it was measured on. The circle read „Overall across AI answer engines”, the line under it said one engine, and a card further down the same page named a second one. All three were reading the same measurements through different time windows: the recurring scan only asks ChatGPT, so within two days every other engine dropped out of the score while still being named in your writing suggestions. Every card now shares one definition of „the current measurement” — each engine counts from its own most recent scan — and the heading names them: Measured on ChatGPT, or Measured on ChatGPT and Gemini, instead of implying a breadth the measurement did not have. Each bar also says when that engine last answered, so engines scanned on different days do not look like one simultaneous check.
  • Your contact details no longer disappear when Geoa publishes your schema. Geoa’s business node is built from the national register, and the registers carry no public email — so on a site whose theme stood aside for Geoa (as it should), the site ended up with less contact information than before Geoa arrived. Two things change: you can now enter a public email and phone number under Geoa Settings, published alongside the registry data; and a theme or plugin that yields to Geoa’s node can hand over the fields it was carrying, through the new geoa_organization_node filter. Taking over must never leave the page knowing less.
  • knowsAbout is now what you are an expert in, not your industry code. Geoa published the registry’s industry text — in the register’s own language, in an otherwise English schema — as the subjects your business understands. For a company-verification tool that read „Computer programming”. There is a new Expert in field for the subjects customers actually come to you for; left blank, nothing is published, because a wrong subject is worse than none.
  • The citation list no longer asks you to create the website you are reading it on. „Your own website” is the highest-value source on the list — about half the AI citations we measure land on the business’s own site — but it arrived as an unmet task with a „create” link, inside a plugin running on that very site. It is now shown as met, pointing at your site, with a line about what Geoa does to it.
  • Activating the plugin now leads somewhere. There was no notice, no redirect and no link on the plugins page, so the two-minute setup was there only for people who thought to look in the sidebar. The plugins row now has Get started and Settings, and a one-time notice points at setup after activation.
  • If your country’s registry is not one of the four Geoa looks up, you are no longer stuck on step 1. The first screen now says which four registries are covered and what works without one, and offers Continue without registry verification so you can use the rest of the plugin. Step 1 stays waiting under Settings for when your registry is added.
  • The dashboard now speaks one language at a time. Cards had English headings with Danish text inside them — “AI Visibility Score” over “AI-synlighed: 40% på tværs af 1 AI-motorer”, “Citation sources” over Danish explanations, “What to write next” over Danish reasoning. The rule is now simple and applied everywhere: the interface is English, and the only thing kept in your own language is the material itself — the questions people actually ask an AI — shown in quotation marks, word for word, because that is the form you need it in to answer it.
  • Suggested questions no longer show the blanks in our own template. “Which local businesses in Denmark offer service?” was a template we had failed to fill in with your industry — and “service” was the placeholder, not a word about you. Where your line of work is known, it is used; where it is not, that question is left out rather than shown with a gap in it. Questions already measured with the gap in them are no longer suggested as articles to write.
  • A suggested question is no longer cut off mid-word. Long questions were trimmed at a fixed length, so “… name specific company names.” arrived as “… name specific company name” — which read as the product not knowing how to spell rather than as a line that ran out of room. Trimming now happens between words and is marked.

0.9.27

  • The name shown here is now the name Geoa actually measures. When your Geoa account had not been asked for a name yet, this screen quietly showed your registered company name instead — under a sentence promising that the plugin and your dashboard can never disagree about what is measured. They could, and on a site trading under a product brand they did: the register answers what your company is called, which is by construction the other name.
  • Left to fall back, Geoa now publishes your site’s own name before your registered one. Your registered name is still always published as legalName, where it is true.
  • When nobody has chosen the measured name yet, the screen says so plainly instead of presenting a guess as a settled fact — and tells you where to choose it.

0.9.26

  • Citation sources now matches your kind of business. A tradesman, a clinic or a webshop was shown the same developer-facing checklist as a software company — Product Hunt, „Show HN”, GitHub, software and startup directories — under the heading „for your business”. The list now follows your registered industry. One entry even asked you to list Geoa on a comparison site instead of your own business; that text was written about us, not about you, and it is gone.
  • When Geoa does not know your industry yet, the card says so instead of calling the list tailored. You get the general list — the profiles that matter for any business — with a line on how to narrow it. This wording reached you in 0.9.25 without a changelog entry of its own; the matching behind it went live on the Geoa side on 30 August 2026.
  • The name AI should know you as is no longer filled in for you. Setup used to pre-fill it with your registered name — the very name the field says is kept separately as legalName — so simply continuing measured you on a name your customers never search for, for a whole period, without anything saying so. You now pick from named candidates (what your site calls itself, your registered name without the company form, your registered name as the register has it) or type your own, and Geoa will not publish until you have picked one.
  • Your registered name is now always published as legalName, including when it is identical to the name you chose. The field promised this; before, it only happened when the two names differed.
  • A website that is a product run by a differently named company can now say so. If the name you choose is not your registered name, Geoa asks one question — is this another name for the company, or a product it operates — and publishes accordingly: your name as the organization’s own, or the registered company as the organization with your name as its brand. Geoa measures the name you chose in both cases.

0.9.25

  • Fixed: „Look up in registry” in Step 1 could do nothing at all — no result, no error, no sign it had been pressed. If the country and registration number reached the fields in a way the screen did not register (browser autofill, a password manager, some browser extensions), the button was switched off while the form looked filled in. Step 2 waits for Step 1, so the whole first run stopped there. The lookup now reads what is actually in the fields, and the button is never switched off silently.
  • Nothing on this screen ends in silence any more: an empty field gets a specific message, a lookup in progress shows a spinner and says what it is doing, and a failure tells you what went wrong instead of nothing at all.
  • Your half-finished first run is now saved. Type a country and a number, get interrupted, come back — the fields are still filled in. Unfinished entries are kept separately and never reach your published schema.
  • „This is my business — publish schema” now explains that Step 1 has to run first, instead of sitting there inactive.

0.9.24

  • Your first finding now follows your site’s own language. A site running in English was shown the finding in Danish, because the text followed the country your business is registered in rather than the language you run WordPress in. Danish, Norwegian, Swedish and English are written out; any other locale gets English.

0.9.23

  • Your first finding is now written for you to read: one named gap, with the schema type that actually fits your kind of business — and Geoa publishes the fix from your verified details once you approve it. Previously this card could show raw technical output and a code template to hand to a developer, which is not how Geoa works.
  • The dashboard now reads the real connection state. A freshly installed site connects itself (it proves it controls the domain), but the first-run screen still asked you to „connect your site under Settings” while Settings already said connected — a step you were asked to repeat after it was done.
  • Renaming the name Geoa measures no longer hits the plan ceiling. Changing your one name is not the same as tracking a second brand, so it is now a rename, not an add. Previously a rename could be refused while the site went on publishing the new name in its schema — Geoa measured one entity, your pages declared another, and nothing said so. If a name still fails to sync, the plugin now says which name Geoa is actually measuring.
  • An AI-visibility score is a measurement of a name, so after a rename the previous score is withheld instead of being shown under the new name. The new measurement arrives with the next scan.
  • The score card now says what it measured, on which name, and that its queries are Geoa’s own standard set — separate from the monitored questions you add under Settings, which is why that counter can read 0 while the score reports queries. The score explanation is also written in English now, instead of passing through the Geoa dashboard’s Danish wording.
  • Clearer wording on plugin deletion: your Geoa account is identified by your domain and is not deleted with the plugin, so a reinstall reconnects to the same account automatically with a new key.

0.9.22

  • Persist: when you cancel, everything Geoa manages is written permanently into your own site — llms.txt as a real file, approved titles/descriptions into your SEO plugin’s own fields — and the plugin stops syncing. Your site keeps what it has. Nothing is ever held hostage.

0.9.21

  • New public helper for theme developers: geoa_approved_meta_description() returns the Geoa-approved meta description for the current URL (” when none), so themes that print their own description tag can yield to it — one page, one description tag.

0.9.20

  • Rank Math coexistence verified live (1.0.277.1) and hardened: a fresh Rank Math install renders no schema or description output before its setup wizard has run, which silently swallowed Geoa’s filter-based delivery. Both the registry-verified Organization and approved meta descriptions now have a late failsafe: delivered through Rank Math’s (or Yoast’s) own filters when they render, emitted directly by Geoa when they don’t — never duplicated, never lost.

0.9.19

  • Yoast SEO / Rank Math coexistence hardened (verified live against Yoast 28.3): Geoa’s registry-verified Organization now always lands in the SEO plugin’s own schema graph — enriching their Organization node when it exists, and adding one when it doesn’t (previously, a fresh Yoast install could make the Organization node disappear entirely). Approved dashboard fixes take precedence.
  • Approved meta descriptions are now routed through the active SEO plugin’s own description filter (Yoast, Rank Math, All in One SEO, SEOPress) instead of printing a second meta description tag next to theirs — one page, one description.
  • All in One SEO and SEOPress are now detected as SEO plugins, so Article schema, canonical/Open Graph basics and description handling defer to them correctly.

0.9.18

  • The site-environment facts in the hourly status ping now also cover: installed-but-inactive plugins (cleanup advice), whether WordPress core’s own sitemap is enabled, a small whitelist of Yoast/Rank Math settings (sitemap toggle and organization/knowledge-graph name — needed to explain sitemap ownership and schema overlap), and taxonomy hygiene counts (categories, empty categories, tags, published posts left in the default category). Counts and names only — never option blobs, term contents or personal data.

0.9.17

  • The hourly status ping now includes a compact inventory of the site’s own published posts (id, title, URL, edit link, last modified) so your Geoa employee can suggest refreshing outdated posts and answer questions about your published content.
  • The ping also reports the site environment as raw facts: active theme and plugins (name/version), the „discourage search engines” flag and the permalink structure — so the employee can warn about SEO conflicts and misconfigurations.
  • No new data classes leave the site beyond the above; see the Privacy section for the full list of what is shared with the Geoa service.

0.9.16

  • Post-fix render verification with automatic rollback: after a content patch is applied, Geoa fetches the page as a visitor sees it and verifies the result (exactly one H1 after inserting one, heading count never increases after demoting, inserted text actually visible on the rendered page). On positive evidence of harm — for example a theme that also outputs an H1, or a page builder that ignores post content — the change is rolled back automatically and reported to your dashboard with the reason. Fetch failures never trigger a rollback: only proven harm does.

0.9.15

  • New content-patch operation: FAQ section — 2-4 customer questions with direct answers, generated strictly from the page’s own content and approved by you first, appended as a visible section (H2 + question headings). The plugin’s existing FAQ module then picks the questions up into FAQPage schema automatically: content first, schema follows. Same guarantees as before: nothing changes without your approval, every change is a normal WordPress revision (one-click undo), each patch applies exactly once, and unknown operations are ignored.

0.9.14

  • Two new content-patch operations on the remediation rail: an answer block (a customer-question H2 with a direct answer, generated strictly from the page’s own content and approved by you first — appended as its own section) and a refreshed intro (the first paragraph replaced with an answer-first opening for pages that have gone stale). Same guarantees as 0.9.13: nothing changes without your approval, every change is a normal WordPress revision (one-click undo), each patch applies exactly once, and unknown operations are ignored.

0.9.13

  • Content patches (the remediation rail): approved content fixes from the Geoa dashboard are now applied to the post itself — first two operations: insert a missing H1 (generated from the page’s own content, approved by you first) and demote extra H1 headings to H2 (the first one is kept). Every change is stored as a normal WordPress revision, so undo is one click in wp-admin. Nothing is ever changed without your explicit approval, each patch is applied exactly once, and unknown future operations are ignored.

0.9.12

  • Head basics: on sites without a dedicated SEO plugin, Geoa now emits rel=canonical (only when WordPress core does not), Open Graph/Twitter tags (og:title reflects an approved Geoa meta fix automatically) and BreadcrumbList JSON-LD built from the page’s own ancestry. The whole module stands down when Yoast, Rank Math or SEOPress is active — double tags are worse than missing ones.

0.9.11

  • Fix: approved schema fixes holding several JSON-LD script blocks (Organization + SoftwareApplication) rendered nothing — each script body is now decoded on its own, and every valid node is emitted.
  • Fix: the plugin only takes schema ownership from its own local, registry-verified output when the approved fix actually decodes — an unparseable feed no longer removes the site’s Organization markup.

0.9.10

  • Fix: the „Sync now” button for approved fixes submitted the whole settings form to options.php instead of running the sync (invalid nested form). It is now a nonce-protected link and works.

0.9.9

  • Schema aggregation: when Yoast or Rank Math owns your page’s schema graph, approved Organization schema from your Geoa dashboard is no longer emitted as a second node — Geoa’s registry-verified fields are already merged into the SEO plugin’s own Organization node, so your page keeps exactly one. Approved non-Organization nodes (FAQ, …) still apply. The Geoa scan now also flags duplicate Organization nodes from other sources as a fix.
  • Docs: the Geoa MCP connector (use Geoa from Claude and other AI agents) is documented in the FAQ below and on geoa.app/free-geo-tools.

0.9.8

  • Fix: the hourly status ping now actually includes the „images missing alt text” count, so the Geoa dashboard can raise the alt-text card. The 0.9.7 release announced this but the field never made it into the ping.

0.9.7

  • Bulk alt text: a new „Alt text” screen under the Geoa menu finds images without alt text and lets Geoa write suggestions FROM the actual images, in your account language (paid plans). Every suggestion is shown for review — editable, ticked per image — and nothing is saved until you click Apply. Applied counts appear in your Geoa dashboard timeline.
  • Broken links in your articles: the plugin now reports each article’s links to Geoa on the hourly sync (rotating through your posts and pages). Geoa checks the targets server-side — only real 404/410 answers count as broken — and raises „broken link in article X” fixes in your dashboard. Links you remove disappear from the inventory on the next sync.

0.9.6

  • AI bot control, both directions: a new toggle under „Approved fixes” lets you block AI TRAINING bots (GPTBot, ClaudeBot, Google-Extended, CCBot, Bytespider, …) in WordPress’ robots.txt. The bots that fetch and cite your pages in AI answers are different crawlers and always stay allowed — blocking training bots does not cost you AI visibility. The rule list is built and versioned by Geoa (never hardcoded in the plugin), and switching the toggle off removes the rules again within minutes. Off by default; if your site has a physical robots.txt file the settings screen says so honestly instead of pretending.

0.9.5

  • Approved redirects: fixes of the new type „redirect” from your Geoa dashboard are applied as 301s on the exact dead path you approved. Targets are validated against your own site before redirecting, only front-end GET/HEAD requests are touched, and rejecting the fix in the dashboard removes the rule again within the hour — nothing is written to your site.
  • 404 log: real front-end 404 hits are counted locally (path only — no IP, no user-agent, query strings stripped, bot probes filtered) and reported to Geoa on the hourly sync, so the fix engine can propose „404 nearest page” redirects for you to approve.

0.9.4

  • Approved internal links: fixes of the new type „internal link” from your Geoa dashboard are now applied on the page they belong to — the plugin links the approved anchor text to the target page (or adds a small „read also” line if the text does not occur). Nothing is written to your posts: it is a render-time filter, and rejecting the fix in the dashboard removes the link again within the hour. Links are only ever inserted after you approve them.
  • Status reporting fixed: the hourly status ping now reports the actual fix IDs from the feed, so the Geoa dashboard correctly shows your applied fixes as „live”. Before this, WordPress-applied fixes never got their live badge.
  • AI-crawler activity in your dashboard: connected sites now report detected AI-crawler visits (GPTBot, ClaudeBot, PerplexityBot, …) to the Geoa connect service — batched, asynchronous and fail-open, so it can never slow your site. Powers the new „AI crawlers on your site” card. No IP addresses, no visitor data; see „External services”.

0.9.3

  • Article import: the share image (og:image card) Geoa renders for each article is set as the draft’s featured image, so shared links get a real preview card. Only when the draft has no featured image yet; your own image always wins.

0.9.2

  • Connect your Geoa account: sites that connected automatically now show a one-click card (welcome screen + settings) linking the site to YOUR Geoa account — so your subscription and settings follow you, not the site’s admin email. The card disappears by itself once the account is linked.
  • The plugin now publishes the name your Geoa account actually measures: once connected, schema.org name/alternateName and a new „Known as” line in llms.txt follow the tracked name from your dashboard (refreshed hourly) — the published name and the measured name can no longer drift apart.
  • Faster, more precise business-type detection: the automatic connection now sends your locally saved registration number along, so Geoa derives your business type from the official registry instead of guessing from the domain.
  • Profile URLs follow the same one-owner rule as your name and questions: read-only here while connected, edited in Geoa — so a link you delete in the dashboard is actually deleted everywhere.

0.9.1

  • The „Edit in Geoa” links now land directly on your dashboard’s Settings page — the screen where monitored questions and your brand name + spellings are actually edited — instead of the dashboard front page.

0.9.0

  • One owner per setting. What Geoa MEASURES (your monitored questions, and the name + spellings AI should know you by) is now owned by your Geoa dashboard once the site is connected: the plugin shows those values read-only, with your usage against the plan limit and an „Edit in Geoa” link. Editing them in two places at once is how the plugin and the dashboard could disagree about what was being measured — that can no longer happen.
  • Not connected yet? Everything still works standalone: the name and spellings stay editable in the plugin, and the moment the site connects they are pushed to your Geoa account once, so nothing you set up beforehand is lost.
  • What your SITE emits stays yours to control right here, exactly as before: FAQ/Article/Product schema, llms.txt, the badge, return window, registry verification and schema publishing.
  • Fixed: connecting to a (different) Geoa account could briefly show the previous account’s monitored questions from cache.

0.8.2

  • Disconnect now sticks. Before, pressing Disconnect was silently overruled: the settings page attempted an automatic reconnection in the very same page load, so the site re-paired itself one second later. A deliberate disconnect now pauses every automatic-connection path until you reconnect yourself — with a pairing code, or the new one-click „Reconnect automatically” button.

0.8.1

  • Zero-field connection now also works for existing installs: updating the plugin (not just activating it) triggers the automatic connection attempt on unpaired sites, and opening any Geoa screen retries it directly — no dependency on WP-Cron.
  • The domain-proof route is never page-cached anymore (no-store headers): LiteSpeed-style page caches could serve a stale token to the verifying backend and reject a correct connection attempt.

0.8.0

  • Zero-field connection: the plugin now connects itself to Geoa on activation. It proves control of your site with a short-lived token served from your own REST API — no account signup, no pairing code, nothing to type. The pairing-code flow remains as a manual fallback.
  • Your first finding, in seconds: right after connecting, the welcome screen shows one real, named finding about your site (live structured-data probe plus your official business-registry identity) — honestly reported, never invented.

0.7.1

  • Deleting the plugin no longer erases your setup. Your business identity, chosen name, profile URLs and feature settings now survive a delete + reinstall — until now they were wiped, which silently un-published your verified schema and dropped the site back into onboarding. Connection keys and caches are still always removed; if you want a truly clean removal, tick the new „Remove all Geoa data when the plugin is deleted” option under Geoa Settings first.

0.7.0

  • One rulebook instead of three. Connected sites now get their scores and task lists straight from Geoa, instead of the plugin computing its own local versions that could disagree with your dashboard.
  • In-editor scoring now uses Geoa’s GEO content standard — the same 23-signal checklist Geoa Content scores its own articles with — with a concrete hint under every signal you miss. The panel says whose verdict you are looking at; unconnected sites keep the local estimate, labelled as such.
  • Citation sources are now Geoa’s tier-ranked list (Wikidata, Crunchbase, Google Business Profile, Bing Webmaster Tools and 15+ more), each with a why, a create-link and a time estimate. Wikidata replaces Wikipedia in the built-in list — a small business can actually get a Wikidata item, and it is what anchors …