Description
ECHO SEO is a focused SEO toolkit for engineering, construction and home services businesses — the trades and professional services that live and die by local search.
- Business Info & Schema — enter your business once and it powers schema.org JSON-LD on every page, typed to your industry. FAQPage schema and Team Members are read from your own pages.
- Keyword Map — find pages missing an SEO title, description or focus keyword, then map each target keyword to one page so your pages never compete. Nothing is written until you click Apply.
- Bulk SEO Editor — titles, descriptions, noindex and focus keywords for every content type on one screen.
- Analytics & Tracking — Google Tag Manager or GA4, the Facebook (Meta) Pixel and the LinkedIn Insight Tag, each loading only once you enter its ID. The pixels wait for marketing consent (WP Consent API).
- Redirects & 404 Monitoring — a redirect manager with hit counts, and 404 tracking that filters out scanner noise.
- XML Sitemap & IndexNow — one sitemap that replaces WordPress’s own, plus optional, off-by-default IndexNow.
- Page Speed, AI Visibility, SEO Tasks, Yoast import, WooCommerce — PageSpeed checks with history, an
llms.txtdigest with per-crawler robots rules, a prioritized checklist, a Yoast SEO import, and Product schema.
There is no AI in this plugin and none of your content is sent to an AI service. The only outside connections are the ones you switch on, listed under “External services” below. Each feature is described in detail in the FAQ.
Want more?
ECHO SEO Premium (sold separately, not on WordPress.org) adds Google Business Profile management, bulk alt-tag editing, internal-link suggestions and AI-written titles, descriptions and structured data. Everything in this plugin stays fully functional without it. Learn more at echo-seo.com.
External services
This plugin can connect to the third-party services listed below. Every one of them is off until you switch it on: nothing is contacted when the plugin is activated, and nothing is contacted by a setting you have not chosen. The plugin makes no requests to Digital Stride’s servers and runs no analytics of ours. The one exception is the optional setup registration at the end of this list, which is an email sent only if you tick a consent box.
Each entry below says how the service is switched on, when the connection is made and by whom (your server or your visitors’ browsers), what is sent, and how to switch it off again.
IndexNow — api.indexnow.org
Used to tell participating search engines (Bing, Yandex, Naver, Seznam.cz) that a URL on your site is new or has changed.
- Switched on by: ticking “Notify search engines via IndexNow when content is published or updated”, either under Business Info Settings Instant Indexing or on the setup wizard’s Site Options step. It is off by default. Until it is ticked, no request is made and no IndexNow key is generated.
- When it connects: your server sends one request each time a publicly viewable post, page or other public content item is published or updated. Password-protected content, drafts, revisions and autosaves are never sent. Each item is sent at most once an hour.
- What is sent: that item’s public URL, your site’s IndexNow key, and the address of the key file. Ticking the box also publishes the key file at
https://your-site/{key}.txtso the search engines can confirm you own the domain. No personal data and no site statistics are sent. - Switch it off: untick the box. Requests stop at once, and the key file stops being served.
- Microsoft operates api.indexnow.org. See the IndexNow documentation and the Microsoft Privacy Statement.
Google PageSpeed Insights API — www.googleapis.com
Used to measure a page’s performance.
- Switched on by: clicking “Run Check” on the Page Speed screen. There is nothing to enable, and nothing runs in the background.
- When it connects: your server sends one request to Google for each check you run.
- What is sent: the URL of the page being tested, the device type (mobile or desktop), and your own PageSpeed API key if you have entered one. Google returns performance metrics.
- See the Google Terms of Service and Google Privacy Policy.
OpenStreetMap Nominatim — nominatim.openstreetmap.org
Used to turn a typed street address into map coordinates.
- Switched on by: clicking “Find Coordinates” under Business Info Locations.
- When it connects: your own browser, not your server and not your visitors, sends one request each time you click the button.
- What is sent: the address you typed. Coordinates are returned and filled into the form. They are saved only when you save the settings.
- See the Nominatim Usage Policy and the OpenStreetMap Foundation Privacy Policy.
Google Tag Manager — www.googletagmanager.com
Lets you manage your own marketing tags from a Tag Manager container.
- Switched on by: choosing Google Tag Manager and connecting a container ID (GTM-XXXXXXX) in one of two places:
- Business Info Settings Analytics & Tracking: enter the ID, then click “Connect GTM”. Saving the page without clicking Connect does not switch it on.
- The setup wizard’s Google Tracking step: enter the ID, then click Continue. Continue connects the tag, as the step says; Skip, or a blank ID, connects nothing.
- When it connects: from then on, your visitors’ browsers load
gtm.jsfrom Google on every public page of your site. This tag is not held back for cookie consent by this plugin. If your visitors must be asked first, set up Consent Mode in your Google tag settings. - What is sent: Google receives the standard request data from each visitor’s browser (IP address, browser details, the page address). The container then runs whatever tags you have configured in it.
- Switch it off: clear the ID and save. A connection belongs to the ID it was made with, so a changed ID has to be connected again.
- See the Google Terms of Service and Google Privacy Policy.
Google Analytics 4 (gtag.js) — www.googletagmanager.com
Measures visits to your site in your Google Analytics property.
- Switched on by: choosing Google Analytics 4 instead of Tag Manager and connecting a Measurement ID (G-XXXXXXXXXX) in the same two places:
- Business Info Settings Analytics & Tracking, with “Connect GA4”.
- The setup wizard’s Google Tracking step, with Continue.
- Only one of Google Tag Manager and Google Analytics 4 is ever loaded.
- When it connects: from then on, your visitors’ browsers load
gtag.jsfrom Google on every public page and send a page view to your property. This tag is not held back for cookie consent by this plugin. If your visitors must be asked first, set up Consent Mode in your Google tag settings. - What is sent: the page view, plus the standard request data from each visitor’s browser (IP address, browser details, the page address).
- Switch it off: clear the ID and save.
- See the Google Terms of Service and Google Privacy Policy.
Facebook (Meta) Pixel — connect.facebook.net
Lets you measure and retarget advertising traffic.
- Switched on by: entering a Facebook Pixel ID under Business Info Settings Analytics & Tracking and saving. The setup wizard does not set this up.
- When it connects: depends on the “Cookie consent” setting on the same screen (see “How the cookie consent setting works” below). Under the default setting, your visitors’ browsers load Meta’s Pixel script only once consent for marketing cookies has been given for that visitor. Under “Load them for every visitor”, it loads on every public page as soon as the page opens.
- What is sent: once it has loaded, the Pixel sends a page-view event, plus any events your site sends with
fbq(), to Meta. - Switch it off: clear the ID and save.
- See the Meta Terms of Service and Meta Privacy Policy.
LinkedIn Insight Tag — snap.licdn.com
Used for B2B advertising measurement.
- Switched on by: entering a LinkedIn Partner ID under Business Info Settings Analytics & Tracking and saving. The setup wizard does not set this up.
- When it connects: exactly as for the Facebook Pixel above.
- What is sent: once it has loaded, the Insight Tag sends page-view and conversion events to LinkedIn.
- Switch it off: clear the ID and save.
- See the LinkedIn Terms of Service and LinkedIn Privacy Policy.
How the cookie consent setting works (Facebook Pixel and LinkedIn Insight Tag only)
The default setting is “Load the Facebook and LinkedIn pixels only once the visitor’s consent for marketing cookies has been given”. Under it:
- Before consent, neither script is requested from Meta or LinkedIn, and neither sets a cookie. Calls your site makes to
fbq()orlintrk()are queued in the page, then sent if consent is given or discarded if it is not. - The plugin itself never asks the visitor anything. It relies on your cookie banner, which tells it about consent in either of two ways:
- Through the WP Consent API, which Complianz, CookieYes, Cookiebot, Borlabs and most WordPress cookie banners support. The scripts load when
wp_has_consent( 'marketing' )is true as the page loads, or when the banner reports that the visitor has allowed marketing cookies. - By calling
window.echsConsentGranted(), or dispatching anechs_consent_grantedevent ondocument. This is for banners that do not use the WP Consent API.
- Through the WP Consent API, which Complianz, CookieYes, Cookiebot, Borlabs and most WordPress cookie banners support. The scripts load when
- Whether
wp_has_consent( 'marketing' )is true before the visitor has made a choice is decided by your cookie banner, not by this plugin. Where the banner applies opt-in rules (for example, for visitors in the EU), it is false until the visitor accepts. Where the banner applies opt-out rules (as many banners do for visitors in much of the US), it is true until the visitor declines, so the scripts load on the first page view. - If the visitor withdraws consent, the scripts are not loaded on later page views. A script already loaded on the page that is open stays loaded until the visitor leaves that page.
- If no WP Consent API banner is active and nothing calls
window.echsConsentGranted(), the scripts never load. The settings screen warns you when this is the case.
The other setting, “Load them for every visitor”, loads both scripts on every public page without waiting. Choose it only if no visitor to your site needs to be asked first.
Google Tag Manager and Google Analytics 4 are not covered by this setting: once connected, they load on every public page (see above).
Optional setup registration — email to Digital Stride
The last step of the setup wizard lets you share your details with Digital Stride, the plugin’s developer, so we can support you and send product updates.
- It is optional and off by default. Nothing is stored or sent unless you tick a consent checkbox, you can skip the step entirely, and the plugin works the same either way.
- It is not an API call or a tracking beacon. It is a single plain-text email, sent from your own site with WordPress’s
wp_mail()at the moment you finish the wizard, and never again. - Each checkbox decides what that email contains:
- The marketing box sends only the name, email and company you typed on that step, plus your site’s URL and title.
- The second box also sends the business profile you entered earlier in the wizard: business name and type, phone, address, service areas, opening hours and social profile URLs.
- Tick neither and no email is sent and nothing is stored.
- ECHO SEO is made by Digital Stride, a d/b/a of Experience 1st, LLC, which is the company these details are sent to. See the Privacy Policy for what we do with these details, how long we keep them and how to withdraw consent, and the Terms of Service.
If you enable Google Tag Manager, Google Analytics 4, the Facebook Pixel or the LinkedIn Insight Tag, you are responsible for disclosing that tracking in your own site’s privacy policy, and for obtaining any visitor consent your jurisdiction requires.
Screenshots




Installation
- Upload the plugin folder to
/wp-content/plugins/, or install directly through the WordPress admin under Plugins Add New. - Activate the plugin through the “Plugins” menu in WordPress. A short setup wizard walks you through your core business details — you can skip it and fill everything in later.
- Go to ECHO SEO Business Info and complete your business identity, address, and hours — this powers the schema.org data shown to search engines.
- Visit the other sections in the left-hand menu (Bulk SEO, Redirects, 404 Monitoring, Page Speed, SEO Tasks, Import SEO) as needed.
FAQ
-
Does this conflict with Yoast SEO or other SEO plugins?
-
No. If Yoast SEO, Rank Math, All in One SEO, SEOPress or The SEO Framework is active, ECHO SEO leaves the page title, meta tags, canonical, robots tag and schema to it rather than printing a second copy, and tells you so with an admin notice. Sitemaps, redirects, 404 monitoring, Bulk SEO and SEO Tasks keep working. To switch over, use the built-in Import SEO tool to bring your titles and descriptions across, then deactivate the other plugin.
-
The free version covers full LocalBusiness schema, per-page SEO, bulk-editing for every public content type (Pages, Posts, Products, and more), redirects, 404 monitoring, XML sitemaps with IndexNow, Page Speed checks, AI visibility (llms.txt), analytics tag installation, and SEO tasks. ECHO SEO Premium (a separate, paid add-on that is not hosted on WordPress.org) adds full Google Business Profile management (posting, reviews, Q&A) and a few extra tools.
-
Does this plugin send my data anywhere?
-
Only as described in “External services” above, and only after you have opted in to the feature concerned. The plugin does not track you or your visitors and collects no usage statistics. It makes no requests to Digital Stride’s servers at all; the only thing that ever reaches us is the optional registration email on the last step of the setup wizard, which is sent — once — from your own site only if you tick a consent box there. Your business data (name, address, hours, etc.) is stored in your own WordPress database and is not sent to any third party by this plugin, except when you explicitly use the “Find Coordinates” address lookup. If you enable IndexNow, the addresses (URLs) of content you publish are shared with search engines; if you run a Page Speed check, that page’s URL is sent to Google — that’s what those features are for. Google Tag Manager, Google Analytics 4, the Facebook Pixel, and the LinkedIn Insight Tag only load if you enter their IDs.
-
What does the 404 monitor store about my visitors?
-
For each 404 hit it stores the requested URL, the referrer, and the browser’s user-agent string in your own WordPress database. It does not record IP addresses or any other personal information, and nothing from the 404 log is sent off your site (the optional daily digest goes to the email address you choose).
-
Do I need an API key for Page Speed checks?
-
No — checks work out of the box using Google’s free shared quota. That shared quota can run out at busy times, so the Page Speed screen also lets you paste in your own free PageSpeed Insights API key for a dedicated quota.
-
What is llms.txt and will it change my site?
-
llms.txt is an emerging convention (llmstxt.org) for giving AI assistants a clean, machine-readable summary of your site. The plugin can serve one at
/llms.txt(off by default) and lets you allow or block each well-known AI crawler in your robots.txt. Neither touches your pages’ rendering. -
What happens to my data if I delete the plugin?
-
Nothing is removed by default. Deactivating never deletes anything, and deleting the plugin from the Plugins screen also leaves your settings, per-page SEO fields, redirects, 404 log, and Page Speed history in the database — so reinstalling picks up exactly where you left off. If you would rather remove it all, tick “Delete all ECHO SEO data when the plugin is deleted” under Business Info Settings Plugin Data before deleting. That runs a full cleanup: the plugin’s options, its per-page meta, its three database tables, its cached data, and its scheduled event. It cannot be undone, and it never touches anything belonging to ECHO SEO Premium.
-
How many keywords and pages can the Keyword Map handle?
-
Up to 250 target keywords. The scan saves its progress every ten pages, so it has no fixed page limit. The finished map is stored in one piece, and with the full 250 keywords it stays within a standard MySQL server’s limits up to about 1,500 pages; on larger sites, use fewer keywords. If the map is ever too large for your server to store, the screen says so instead of losing it. As a guide, aim for no more keywords than you have pages worth ranking: 20–40 for a 30-page site, 100–250 for a 300-page site. A scan’s saved progress is kept for six hours; if it is lost, the scan stops with a message and you start it again.
-
Will this slow down my site?
-
No. Schema output is lightweight, and no tracking script is loaded on your site’s front end unless you’ve configured it (by entering a tracking ID). Reading a page’s FAQs, team members and text is done in the background with WP-Cron after the page is saved, never while a visitor’s page is being built, and the front end only reads the cached result.
-
What does each feature do, in detail?
-
Business Info & Schema
- Set your business identity, service area, hours, and social profiles once, and have them power schema.org structured data (JSON-LD) across your whole site — one linked graph per page, with your business, website, page and breadcrumb all pointing at each other.
- Add per-page custom schema and SEO title/meta description overrides from a tab right on the post/page editor screen. FAQPage schema switches on by itself on pages with a real FAQ section (ACF FAQ fields, a FAQ block, or two or more questions in a FAQ section) and is read from every FAQ section on the page, so it never goes stale. Other questions found on a page are offered in the editor instead.
- Fill in your Team Members from your own site: one click reads your About and Team pages for the people shown on them — name, job title, credentials, LinkedIn profile, headshot — and lists them for review; approve, and they are added to your business profile.
- Automatic business schema on every page, typed to your specific industry (contractor, HVAC, plumber, electrician, professional services, and dozens more).
Keyword Map
- An inventory of what your site is missing: pages without an SEO title, meta description, or focus keyword, and images without alt text.
- Set a primary goal, your target keywords, and your services under Goals & Keywords, then build a keyword-to-page map: every page is scored against every keyword from what is already on it (how often the term appears, whether it is in the H1, the URL, and the opening paragraphs), and each keyword is assigned to one page so two of your pages never compete for the same term.
- The map flags competing pages and keywords no page covers yet. Nothing is written until you review the table and click Apply — and it only ever writes focus keywords, never your content.
- All of this is computed on your own site. There is an option to fetch each page over HTTP as a visitor sees it, so page-builder output is scored too; it is off by default, and it only requests your own URLs.
- There is no AI in this plugin. The Keyword Map is computed from what is on your pages, and none of your content is sent to an AI service. AI-written titles, descriptions, structured data and alt text (“One-Click SEO”) and AI keyword suggestions are features of ECHO SEO Premium only, a separate paid add-on that is not hosted on WordPress.org.
Bulk SEO Editor
- Edit SEO titles, meta descriptions, noindex flags, and focus keywords for every public content type on your site — Pages, Posts, and any others (Products, portfolios, and so on) — from one screen, with live readability and keyword-density feedback.
Analytics & Tracking
- Install Google Tag Manager or Google Analytics 4, plus the Facebook (Meta) Pixel and the LinkedIn Insight Tag, from the plugin settings — no code editing or extra plugins required. Each one loads only once you enter its ID, and the Google tags only once you also click Connect (see “External services” below). By default the Facebook Pixel and LinkedIn Insight Tag load only once your cookie banner reports the visitor’s consent to marketing cookies through the WP Consent API. Google Tag Manager and GA4 are not consent-gated by the plugin; use Google’s Consent Mode for those. The plugin warns you while no Google tracking is connected.
Redirects & 404 Monitoring
- Built-in redirect manager (301/302/307) with hit counts.
- Automatic 404 tracking that separates real visitor traffic from bot/scanner noise, with an optional daily email digest and one-click “create a redirect” from any logged 404.
XML Sitemap & IndexNow
- Automatic XML sitemap at
/sitemap.xml(a sitemap index with one sitemap per public post type and taxonomy), kept up to date as you publish and listed in robots.txt. It replaces WordPress’s own/wp-sitemap.xml, which redirects to it, and includes anything your theme or other plugins add through WordPress’s sitemap API. Posts, pages and term archives you mark noindex are left out. While Settings Reading “Discourage search engines” is ticked, no sitemap is served, as with WordPress’s own. - Optional instant indexing: if you switch it on, publishing or updating content submits its URL via the IndexNow protocol so participating search engines (Bing, Yandex, Naver, Seznam.cz) hear about it right away. This is off by default — see “External services” below for exactly what gets sent.
Page Speed
- Run Google PageSpeed Insights checks (mobile and desktop) for any page on your site without leaving WordPress, with score history so you can see trends over time. Works out of the box, or add your own free API key for a dedicated quota.
AI Visibility
- Serve a machine-readable
llms.txtdigest of your site (the emerging llmstxt.org convention) and set each well-known AI crawler — answer engines and model-training crawlers alike — to Allow or Block in your robots.txt. Whether AI crawlers may read your site stays your decision.
SEO Tasks & Import
- A prioritized checklist of SEO improvements specific to your site.
- One-click import of titles, meta descriptions, and OG/Twitter data from Yoast SEO, so switching over doesn’t mean starting from scratch.
WooCommerce support
- Automatic Product schema pulled from your WooCommerce catalog data.
Reviews
Contributors & Developers
“ECHO SEO” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “ECHO SEO” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.0
- Fixed: the readability sentence checks (sentences over 20 words, passive voice, transition words, repeated openers, reading ease) ran headings, buttons and tab labels into the sentence after them, since nothing on a rendered page ends a heading with a full stop. A line break now ends a sentence, a short line with no closing punctuation is a label rather than a sentence, and a full stop inside an abbreviation or initial (“e.g.”, “Dr.”) no longer ends one. The same rule applies to the reading-ease score in Bulk SEO.
- New: “What the scanner read” under the readability checks. A collapsed panel shows the text the checks measured, where it came from (the editor, the rendered page, the post body, page-builder data or ACF fields), paragraph by paragraph, with every sentence over 20 words marked, every paragraph over 150 words edged in red, and the headings and labels left out of the sentence counts dimmed. The sentence and paragraph lines also show their counts (“3 of 12”).
- Fixed: Content Analysis reported “100% of paragraphs exceed 150 words” on every page built from ACF layouts or a page builder, however short its paragraphs. The scan flattened the rendered page to one line, so the readability check saw one page-long paragraph. The scan now keeps a paragraph break at every block of the page — a heading, a paragraph, a list item, a layout’s text — and the check measures those. A page whose last scan predates this change shows no paragraph line until it is scanned again, rather than a wrong one.
- Changed: FAQPage switches on by itself only for a real FAQ section: ACF FAQ fields, a FAQ block or Question microdata, or at least two questions in a FAQ section. A “Why choose us?” toggle elsewhere on a page no longer marks the page up as a FAQ; the editor offers the questions it found so you can tick FAQPage yourself.
- Improved: a page’s FAQs, team members and text are read in the background (WP-Cron) after it is saved, instead of inside the first visitor’s request. Front-end pages no longer run the page body through the content filter in the page head, so shortcodes, page builders and view counters run once.
- Fixed: ACF Link, Select (“Both”), Group and image-ID fields in team, FAQ and step repeaters were read as the text “Array” (with a PHP warning); the LinkedIn URL, label or image URL is now read from them.
- Fixed: on large sites with many target keywords, the keyword map scan could lose its saved progress and start over endlessly. Progress is now saved in small pieces, holding only the keywords each page actually uses, and a scan whose progress is lost stops with a message. A map too large for the server to store says so.
- Fixed: no sitemap is served, and /wp-sitemap.xml is not redirected, while “Discourage search engines from indexing this site” is ticked. WordPress’s own sitemap is off there too. Unticking it brings the sitemap back.
- Fixed: category, tag and other term archives marked noindex are no longer listed in the sitemap.
- Changed: the One-Click SEO screen is now called Keyword Map, which is what it does in this plugin. It contains no AI features and no longer carries an Alpha label. AI generation is part of ECHO SEO Premium only.
- Fixed: a page’s OG Image URL and Twitter (X) Image URL were ignored while “Use SEO Title & Description” was ticked, so Facebook fell back to the featured image or the default — or, when the image came without a size, to whatever large picture it found on the page. The image fields now sit outside that switch and always count, and every media-library social image is printed with its width, height and alt text so Facebook can draw the card on the first share.
- New: the setup wizard now asks about Google tracking and site options. A Google Tracking step takes a Google Tag Manager container ID or a GA4 Measurement ID and connects it on Continue (the same as the Connect button on the Settings tab), and a Site Options step offers Instant Indexing (IndexNow), AI Visibility, and the disable-comments and disable-pingbacks switches, each off until ticked and each explained in place. Both steps can be skipped and everything can be changed later under Business Info Settings.
- Improved: the Site map view of the keyword map now follows your URLs. A page at /resources/guides/aec-guides/article/ sits under AEC Guides, under Guides, under Resources, whether or not a page lives at each of those addresses — a category or an archive becomes a folder named after it. Sections under the home page start open and everything deeper starts closed, with a badge showing how many pages a closed section holds; click the badge to open it. Open all, Close all and Default buttons on the bar, and your choice is remembered.
- New: Find people on your site. A button under Business Info Business Identity Team Members reads your About and Team pages (About Us, Our Team, Meet the Team, Leadership, Staff and the like) for the people shown on them — team-member cards from any theme or builder, schema.org Person microdata, or a name heading followed by a job title — and lists each one with their job title, credentials, LinkedIn profile and headshot for review. Approve, and they are added to Team Members and saved. People already listed are never doubled. An option reads each page as a visitor sees it, for page builders that only render on the front end.
- Improved: About and Team pages are recognised by their slug or title (not just a slug containing “about”) and typed AboutPage, about your business.
- New:
echs_is_about_pagefilter for sites whose about pages the plugin does not recognise. - Fixed: FAQPage schema reads every FAQ section on a page. A page with two FAQ sections (for example two ACF FAQ layouts) used to get only the first.
- Fixed: a deep scan no longer turns section headings such as “Why Digital Stride?” into FAQ entries. Theme accordions, FAQ blocks, microdata and ARIA disclosure buttons are recognised; question headings count only inside a FAQ section; and a deep scan can no longer override a more reliable read of the ACF FAQ fields.
- Fixed: toggles in the site header, navigation and footer (a menu button, for example) are no longer read as FAQ questions.
- New: FAQPage schema switches on by itself on pages with a FAQ section. Untick it on the page to keep it off.
- New: one sitemap. WordPress’s own /wp-sitemap.xml is switched off and redirects to /sitemap.xml, robots.txt names the sitemap, taxonomy archives are included, and pages registered with WordPress’s sitemap API by a theme or plugin are listed. Developers can extend it with the echs_sitemap_* filters.
- New: allow or block each AI crawler, including each model-training crawler, in robots.txt. Google-Extended is now listed as a training crawler.
- New: the Facebook Pixel and LinkedIn Insight Tag load only once marketing consent has been given for the visitor, as reported by a WP Consent API cookie banner (or by window.echsConsentGranted() for other banners). Whether consent counts as given before the visitor chooses is decided by the banner’s opt-in or opt-out rules for that visitor’s region. Sites that need no consent can switch this off under Analytics & Tracking.
1.1.0
- New: One-Click SEO screen — an inventory of pages missing an SEO title, meta description or focus keyword, and images missing alt text.
- New: Goals & Keywords tab on Business Info (and a matching setup wizard step) for your primary goal, target keywords, services, geographic focus, brand voice and industry.
- New: keyword map that assigns each target keyword to the page that best fits it, flags pages competing for the same keyword and keywords no page covers yet, and writes focus keywords only when you click Apply. Focus keywords you set by hand are kept.
- New: the keyword map has three views of the same plan — by keyword, by page (add, reorder or remove the keywords each page carries), and a site map that draws your pages as a tree with their keywords, where you can drag a keyword from one page to another.
- New: add a keyword from the keyword map itself; it joins your target list and is scored across the site without a full rebuild.
- Improved: after Apply, the keyword map shows what you approved rather than its first guess, and a rebuild keeps every focus keyword you set.
- New: Bulk SEO Issues column listing each page’s on-page problems (keyword placement and density, title and description length, heading structure, readability).
- New: when Yoast SEO is active, the setup wizard starts with an import step that brings over post SEO data and Yoast’s business profile, then pre-fills the remaining steps.
- Improved: the page scan falls back to the post content when the site blocks requests to itself, and no longer triggers a PHP 8.2 deprecation notice.
- Improved: Social Profiles in the setup wizard are matched to the right network by URL.
- Improved: saving Business Info returns to the tab you were on; keyword and service lists start with three rows.
- Improved: ZIP code fields fit a ZIP+4.
- Improved: every admin string, including the importer screen and help tooltips, is now translatable.
- Tested with WordPress 7.1.2.
1.0.1
- FAQPage schema is now read from the page’s own FAQ sections (headings, definition lists, details/summary, ACF repeaters and page-builder output) every time the page is viewed, so editing an FAQ updates the schema by itself. The entries typed into the meta box are only used when nothing can be read from the page.
- One robots tag and one canonical per page: noindex/nofollow now go through WordPress’s own wp_robots filter, so “Discourage search engines” is never contradicted, and a canonical override replaces the URL in core’s canonical link instead of adding a second one.
- All structured data is printed as a single linked graph: the business, website, page, breadcrumb, article and any page-level types share @ids and point at each other.
- The business is one node, typed by your Business Type setting. Nothing is assumed about your industry any more: a site that has not chosen a type is described as a generic Organization, and the SEO Tasks list asks you to choose one. The setup wizard and the Yoast import now set the same option the schema reads.
- Removed the aggregate star rating fields. A rating a business marks up about itself is “self-serving” review markup under Google’s guidelines and is never shown as stars.
- Word counts, keyword checks, readability, the search preview’s fallback description and the llms.txt digest now read the page as a visitor sees it — the last rendered scan, page-builder data (Elementor, Bricks, Beaver Builder, Oxygen, Breakdance) or shortcode text — instead of an empty post body.
- Open Graph tags carry og:type article on posts (with published and modified times), og:site_name, og:locale, image sizes and a description fallback from the excerpt or page text; front and archive pages get social tags too.
- When Yoast SEO, Rank Math, All in One SEO, SEOPress or The SEO Framework is active, ECHO SEO stops printing its own tags and schema so nothing is doubled up.
1.0.0
- Initial release. Google Business Profile management is available in the separately-sold ECHO SEO Premium add-on.
