Title: SEOPulse Ìtumọ̀ Yorùbá: &#8211; SEO tools to Boost your Rankings &amp; Traffic
Author: Alexandre Jacquin
Published: <strong>Èbìbí  18, 2026</strong>
Last modified: Ọwẹ́wẹ̀  22, 2026

---

Ṣàwárí àwọn plugin

![](https://ps.w.org/seopulse/assets/banner-772x250.jpg?rev=3536170)

![](https://ps.w.org/seopulse/assets/icon-256x256.png?rev=3535735)

# SEOPulse Ìtumọ̀ Yorùbá: – SEO tools to Boost your Rankings & Traffic

 Láti ọwọ́ [Alexandre Jacquin](https://profiles.wordpress.org/citrusdevlab/)

[Ṣe ìgbàsílẹ̀](https://downloads.wordpress.org/plugin/seopulse.1.7.0.zip)

 * [Àwọn àlàyé](https://yor.wordpress.org/plugins/seopulse/#description)
 * [Àwọn àgbéyẹ̀wò](https://yor.wordpress.org/plugins/seopulse/#reviews)
 *  [Ìgbéwọlẹ̀](https://yor.wordpress.org/plugins/seopulse/#installation)
 * [Ìdàgbàsókè](https://yor.wordpress.org/plugins/seopulse/#developers)

 [Ìrànlọ́wọ́](https://wordpress.org/support/plugin/seopulse/)

## Àpèjúwe

### The modern, all-in-one SEO plugin for WordPress built with REACT

SEOPulse is a complete WordPress SEO solution that helps you optimize your content,
manage your metadata, generate sitemaps, handle redirections, and improve your local
search visibility — all from a single, modular plugin.

✔ **Real-time content analysis with SEO scoring (0–100) and actionable recommendations**

✔ **Unlimited focus keywords per post with per-keyword scoring** ✔ **Open Graph,
Twitter Card & LinkedIn live social previews directly in the editor** ✔ **Meta Template
Engine with 99+ dynamic variables for titles and descriptions** ✔ **XML sitemaps:
posts, pages, taxonomies, images, and Google News** ✔ **301/302 URL redirections
with 404 monitoring** ✔ **Local Business JSON-LD schema with interactive map** ✔**
GDPR-compliant Google Analytics 4, Google Tag Manager & cookie consent banner** 
✔ **Migrate from Yoast SEO, Rank Math & SEOPress in one click** ✔ **No ads, fully
modular — disable what you donÌtumọ̀ Yorùbá: ’t need**

### Why choose SEOPulse?

 * **All in one**: No need for separate plugins for sitemaps, redirects, schemas,
   or analytics. SEOPulse bundles everything. Disable unused modules with one click.
 * **Easy AND powerful**: The setup wizard guides you through initial configuration.
   Advanced users get access to 99+ template variables, REST API endpoints and WP-
   CLI commands.
 * **Modern architecture**: Built on React and PHP 8.O with a modular design, SEOPulse
   is fast, extensible, and developer-friendly.
 * **Migrate easily**: Import your focus keywords, meta tags, and Open Graph data
   from Yoast SEO, Rank Math, SEOPress or All In One SEO in a single click.

### Features

 * **Installation wizard** to quickly setup your site
 * **Content analysis** with up to 5 focus keywords per post and real-time SEO scoring(
   0–100)
 * **Content Analysis**: Compatible with page builder like Elementor, Live Composer,
   Kubio
 * **18+ content checks**: title structure, heading hierarchy, word count, keyword
   density, links, images, alt text
 * **Readability analysis**: Flesch Reading Ease, sentence length, passive voice,
   complex words, transition words
 * **Mobile / Desktop Google Preview** to see how your post appears in search results
 * **Facebook, Twitter & LinkedIn social previews** directly in the editor sidebar
 * **SEO titles & meta descriptions** with dynamic variables (post title, author,
   date, custom fields…)
 * **Meta Template Engine**: 16 namespaces, 99+ variables, conditional rendering,
   fallback chains
 * **Open Graph & Twitter Cards** for better social sharing on Facebook, LinkedIn,
   Twitter, WhatsApp…
 * **Custom canonical URL** and robots directives (noindex, nofollow, noarchive)
 * **XML Sitemaps**: posts, pages, custom post types, taxonomies, images
 * **Google News Sitemap** with multilingual support (WPML, Polylang, TranslatePress)
 * **robots.txt management** with auto-insertion of sitemap URL
 * **301/302 URL redirections** with exact matching, hit counter, and chain detection
 * **404 monitoring**: automatic logging with referrer, user agent, deduplication,
   and bot filtering (up to 100 entries)
 * **Redirect suggestions** for 404 URLs
 * **CSV export** for redirects and 404 logs
 * **Local Business SEO**: multi-location support JSON-LD schema with 150+ @types,
   address, opening hours, phone, email, social profiles, business identity, logo,
   ratings
 * **JSON-LD schema**: Organization, WebSite, Article, FAQ, HowTo, Product (WooCommerce)
 * **JSON-LD validator** with browser preview
 * **Google Analytics 4** (GA4) with Consent Mode v2 and GDPR compliance
 * **Google Tag Manager** (GTM) with consent-aware script injection
 * **GDPR cookie consent banner**: customizable position, theme, message, and button
   text
 * **Instant indexing**: IndexNow protocol and Google Indexing API with submission
   log
 * **Google Suggest integration** for keyword research in the editor
 * **WooCommerce support**: Product schema auto-injection, meta template variables(
   price, SKU, rating…), content analysis
 * **SEO columns** in post/page lists: sortable score, title, description, focus
   keywords with color-coded badges
 * **Admin bar SEO score** for quick reference
 * **Image ALT auto-fill** and image diagnostics
 * **HTML Head cleanup**: remove generator tag, emoji scripts, WLW manifest, shortlinks,
   RSD links
 * **Freeze Modified Date** to preserve SEO history on post edits
 * **Import/Export settings** in JSON format and one-click plugin reset
 * **Migrate from** Yoast SEO, Rank Math, SEOPress and All In One SEO
 * **WP-CLI commands**: analyze, dashboard, migrate, export, import
 * **Full REST API** for all major features
 * **Multisite compatible**
 * **Multilingual ready**: WPML, Polylang, TranslatePress

### All Features Included

SEOPulse ships with every feature unlocked — no upsells, no limits:

 * **Unlimited focus keywords** per post
 * **Unlimited redirections** with regex pattern support and capture groups
 * **CSV redirect import/export** for bulk redirect management
 * **Extended Local SEO fields**: fax, GPS coordinates, price range, aggregate rating,
   area served, founding date, number of employees, payment methods, slogan, currencies
   accepted…
 * **6 Gutenberg blocks** with auto-injected structured data: FAQ (FAQPage schema),
   HowTo (HowTo schema), Table of Contents (auto-generated), Schema (custom JSON-
   LD), Review (ratings), Product Grid (WooCommerce)

### WooCommerce SEO

SEOPulse integrates with WooCommerce out of the box:

 * Automatic Product JSON-LD schema (name, price, availability, SKU, ratings, brand,
   images)
 * WooCommerce variables in the Meta Template Engine (price, SKU, rating, stock…)
 * Product Grid Gutenberg block with search, filter, and sort
 * Freeze Modified Date to preserve SEO history on product edits
 * Enhanced product schema, breadcrumb customization, and category SEO optimization

### Developers will love SEOPulse!

 * Modular architecture with 8 toggleable modules
 * Full REST API under `/wp-json/seopulse/v1/` for every feature
 * WP-CLI commands for batch operations (analyze, migrate, export, import)
 * Hooks and filters for extensibility (`seopulse_container_built`, `seopulse_modules_definition`…)
 * Modern PHP 8.1 codebase with PSR-4 autoloading

### External Services

This plugin connects to several third-party external services as described below.
No data is sent to any external service without the site administrator explicitly
enabling the corresponding feature.

#### Google Analytics 4 (GA4)

When the GA4 tracking feature is enabled by the administrator, this plugin loads
the Google Analytics 4 script on the frontend of your website.

 * **What it does:** Collects anonymous website usage and traffic data for analytics
   purposes.
 * **When data is sent:** On every frontend page load, after the visitor has given
   consent (if the cookie consent banner is enabled).
 * **What data is sent:** Page views, user interactions, browser information, and
   other analytics data are collected client-side by GoogleÌtumọ̀ Yorùbá: ’s script
   and sent to GoogleÌtumọ̀ Yorùbá: ’s servers.
 * **Service provider:** Google LLC
 * [Google Analytics Terms of Service](https://marketingplatform.google.com/about/analytics/terms/us/)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Google Tag Manager (GTM)

When the GTM feature is enabled by the administrator, this plugin loads the Google
Tag Manager script and noscript iframe on the frontend.

 * **What it does:** Manages and deploys marketing and analytics tags on your website.
 * **When data is sent:** On every frontend page load, after the visitor has given
   consent (if the cookie consent banner is enabled).
 * **What data is sent:** Page views, browser information, and any data configured
   within your GTM container. The GTM container ID is embedded in the script URL.
 * **Service provider:** Google LLC
 * [Google Tag Manager Terms of Service](https://marketingplatform.google.com/about/analytics/tag-manager/use-policy/)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Google Consent Mode v2

When Google Consent Mode v2 is enabled alongside GA4 or GTM, this plugin injects
a consent defaults script on the frontend.

 * **What it does:** Sets all Google consent categories to “denied” by default until
   the visitor explicitly grants consent via the cookie banner.
 * **When data is sent:** No additional data is sent. This script configures the
   behavior of other Google scripts already loaded on the page.
 * **Service provider:** Google LLC
 * [Google Consent Mode documentation](https://developers.google.com/tag-platform/security/guides/consent)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Google Indexing API

When the Google Indexing feature is enabled by the administrator and a service account
JSON key file has been uploaded, this plugin submits URLs to Google for indexing.

 * **What it does:** Notifies Google when pages are published, updated, or deleted
   so they can be crawled and indexed faster.
 * **When data is sent:** Automatically when a post is published, updated, or deleted,
   or manually via the admin interface.
 * **What data is sent:** The page URL and the action type (URL_UPDATED or URL_DELETED).
   For authentication, a JWT assertion signed with the service account private key
   is sent to GoogleÌtumọ̀ Yorùbá: ’s OAuth2 token endpoint.
 * **Service provider:** Google LLC
 * [Google Indexing API Terms of Service](https://developers.google.com/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Google Autocomplete (Google Suggest)

This plugin uses the Google Autocomplete API to provide keyword suggestions in the
editor.

 * **What it does:** Retrieves keyword suggestions based on a search query to help
   with SEO keyword research.
 * **When data is sent:** When an administrator uses the Google Suggest feature 
   in the post editor. Requests are rate-limited (2 per minute) and results are 
   cached for 1 hour.
 * **What data is sent:** The search keyword and the site language code.
 * **Service provider:** Google LLC
 * [Google Terms of Service](https://policies.google.com/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Google Sitemap Ping

When an administrator manually triggers a search engine ping from the Sitemap settings
page, this plugin notifies Google about the sitemap.

 * **What it does:** Notifies Google that a sitemap has been updated.
 * **When data is sent:** Only when the administrator clicks the “Ping search engines”
   button.
 * **What data is sent:** The sitemap URL of your website.
 * **Service provider:** Google LLC
 * [Google Terms of Service](https://policies.google.com/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### Bing Sitemap Ping

When an administrator manually triggers a search engine ping from the Sitemap settings
page, this plugin notifies Bing about the sitemap.

 * **What it does:** Notifies Bing that a sitemap has been updated.
 * **When data is sent:** Only when the administrator clicks the “Ping search engines”
   button.
 * **What data is sent:** The sitemap URL of your website.
 * **Service provider:** Microsoft Corporation
 * [Bing Webmaster Tools Terms of Use](https://www.bing.com/webmasters/terms)
 * [Microsoft Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement)

#### IndexNow API

When the IndexNow feature is enabled by the administrator, this plugin submits URLs
to the IndexNow API for faster indexing by participating search engines (Bing, Yandex,
and others).

 * **What it does:** Notifies search engines when pages are published, updated, 
   or deleted.
 * **When data is sent:** Automatically when a post is published, updated, or deleted.
 * **What data is sent:** The page URL and an auto-generated API key. The request
   is sent to `https://api.indexnow.org/indexnow`.
 * **Service provider:** IndexNow.org (supported by Microsoft Bing, Naver, Seznam.
   cz, Yandex, and Yep)
 * [IndexNow Terms and Conditions](https://www.indexnow.org/terms)
 * [Microsoft Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement)

#### OpenStreetMap Nominatim Geocoding API

The Local SEO module uses the Nominatim geocoding API to convert a business address
into GPS coordinates.

 * **What it does:** Converts an address to GPS coordinates (geocoding) directly
   from the Local SEO admin settings.
 * **When data is sent:** When an administrator clicks the “Get Coordinates” button
   after filling in their business address.
 * **What data is sent:** The address search query. The administratorÌtumọ̀ Yorùbá:’
   s IP address is visible to the API server.
 * **Service provider:** OpenStreetMap Foundation
 * [Nominatim Usage Policy](https://operations.osmfoundation.org/policies/nominatim/)
 * [OpenStreetMap Privacy Policy](https://wiki.osmfoundation.org/wiki/Privacy_Policy)

#### YouTube (Privacy-Enhanced Mode)

The setup wizard embeds a tutorial video using YouTubeÌtumọ̀ Yorùbá: ’s privacy-
enhanced mode.

 * **What it does:** Displays an embedded YouTube video in the plugin setup wizard.
 * **When data is sent:** When an administrator clicks the play button on the video
   in the setup wizard. YouTubeÌtumọ̀ Yorùbá: ’s privacy-enhanced mode (youtube-
   nocookie.com) is used to minimize tracking.
 * **What data is sent:** Standard video embed request data (IP address, browser
   information). A video thumbnail image is also loaded from img.youtube.com.
 * **Service provider:** Google LLC (YouTube)
 * [YouTube Terms of Service](https://www.youtube.com/t/terms)
 * [Google Privacy Policy](https://policies.google.com/privacy)

#### XML Sitemaps Validator (xml-sitemaps.com)

The Sitemap settings page includes a link that lets administrators validate their
sitemap against the XML Sitemap standard using the xml-sitemaps.com online validator.

 * **What it does:** Validates the XML sitemap file of your website for conformity
   with the XML Sitemap protocol.
 * **When data is sent:** Only when the administrator explicitly clicks the “Validate
   sitemap” link. The link opens the external validator in a new browser tab — no
   data is sent automatically by the plugin.
 * **What data is sent:** The public URL of your websiteÌtumọ̀ Yorùbá: ’s sitemap
   is passed as a URL parameter to the validator.
 * **Service provider:** xml-sitemaps.com
 * [xml-sitemaps.com Privacy Policy](https://www.xml-sitemaps.com/privacy-policy.html)

### Source Code & Build Instructions

The full uncompiled source code is publicly available on GitHub:
 https://github.
com/wp-seopulse/seopulse-public

The compiled and minified files in `assets/build/` (e.g. `admin.js`, `editor-sidebar.
js`, `setup-wizard.js`, etc.) are generated from the human-readable source files
using `@wordpress/scripts` (webpack). No external code is fetched at build time 
beyond npm dependencies declared in `package.json`.

#### Source file locations (in the GitHub repository)

 * JavaScript / TypeScript source: `assets/src/` (React components, Gutenberg blocks,
   admin pages)
 * SCSS source for admin styles: `assets/css/seopulse-admin.scss`
 * SCSS source for module styles: `Modules/MetaSeo/assets/css/`
 * Webpack configuration: `webpack.config.js`
 * Build dependencies: `package.json`

#### Build Instructions

To build from source, clone the GitHub repository and run the following commands.
You need Node.js (v18 or higher) and npm.

 1. Clone the repository: `git clone https://github.com/wp-seopulse/seopulse-public`
 2. Navigate to the plugin directory: `cd seopulse-public`
 3. Install dependencies: `npm install`
 4. Build production assets: `npm run build`
 5. For development with live rebuilds: `npm start`

The build process uses `@wordpress/scripts` (which includes webpack) to compile 
TypeScript/JSX into JavaScript and SCSS into CSS. The output is written to `assets/
build/`.

#### PHP Dependencies

Composer is used for PHP autoloading. Vendor dependencies are included in the `vendor/`
directory. To regenerate: `composer install --no-dev`

## Àwọn àwòrán ìbòjú

[[

[[

[[

[[

[[

[[

[[

[[

[[

[[

## Ìgbéwọlẹ̀

 1. Upload ‘seopulse’ to the ‘/wp-content/plugins/’ directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Click on SEOPulse in the admin menu and follow the setup wizard

**Requirements:** WordPress 6.0+ and PHP 8.1+

#### Source Code Repository

The full source code (including all uncompiled JavaScript, TypeScript, and SCSS 
source files) is publicly available at: https://github.com/wp-seopulse/seopulse-
public

See the “Source Code & Build Instructions” section below for details on how to compile
the assets yourself.

## FAQ

### What are the requirements?

SEOPulse requires WordPress 6.0 or higher and PHP 8.1 or higher.

### Does SEOPulse support custom post types?

Yes. All public custom post types are supported in sitemaps, SEO analysis, and the
SEO metabox. Additional post types can be added via filters.

### How is the SEO score calculated?

The global score is a weighted combination of four categories:

 * Content Analysis: 35%
 * Meta Tags: 25%
 * Readability: 20%
 * Technical SEO: 20%

The thresholds are customizable through filters.

### Can I use more than one focus keyword?

Yes. SEOPulse supports unlimited focus keywords per post, each with individual scoring.

### Which types of sitemaps does SEOPulse support?

XML sitemaps for posts, pages, custom post types, taxonomies, and images. A Google
News sitemap is also available with multilingual support (WPML, Polylang, TranslatePress).

### Can I manage redirections and 404 errors?

Yes. SEOPulse includes a full redirections manager with 301/302 redirects, regex
patterns, 404 logging (up to 100 entries), hit tracking, chain detection, and CSV
import/export.

### Does SEOPulse support instant indexing?

Yes. SEOPulse supports IndexNow protocol and Google Indexing API, with automatic
URL submission on publish/update and an admin log viewer.

### Is WooCommerce supported?

Yes. SEOPulse includes WooCommerce Product schema auto-injection, a Product Grid
Gutenberg block, WooCommerce meta template variables, and Freeze Modified Date support.

### Can I migrate from another SEO plugin?

Yes. SEOPulse includes one-click migration from Yoast SEO, Rank Math, SEOPress and
All In One SEO to import focus keywords, meta tags, and Open Graph data.

### Is the plugin multisite compatible?

Yes. SEOPulse supports multisite and performs per-site cleanup on uninstall.

### Is SEOPulse GDPR compliant?

Yes. The cookie consent banner supports Google Consent Mode v2, script blocking 
until consent is granted, and admin consent logging for compliance audits.

### How do I get support?

Use the WordPress.org support forum.

### Does SEOPulse include a REST API?

Yes. All features are accessible via REST endpoints under `/wp-json/seopulse/v1/`.

## Àwọn àgbéyẹ̀wò

Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.

## Àwọn Olùkópa & Olùgbéejáde

“SEOPulse Ìtumọ̀ Yorùbá: – SEO tools to Boost your Rankings & Traffic” jẹ́ ètò ìṣàmúlò
orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.

Àwọn Olùkópa

 *   [ Alexandre Jacquin ](https://profiles.wordpress.org/citrusdevlab/)

[Túmọ̀ “SEOPulse Ìtumọ̀ Yorùbá: – SEO tools to Boost your Rankings & Traffic” sí èdè rẹ.](https://translate.wordpress.org/projects/wp-plugins/seopulse)

### Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?

[Ṣàwárí koodu](https://plugins.trac.wordpress.org/browser/seopulse/), ṣàyẹ̀wò [ibi ìpamọ́ SVN](https://plugins.svn.wordpress.org/seopulse/),
tàbí ṣe àgbékalẹ̀ sí [àkọsílẹ̀ ìdàgbàsókè](https://plugins.trac.wordpress.org/log/seopulse/)
nípasẹ̀ [RSS](https://plugins.trac.wordpress.org/log/seopulse/?limit=100&mode=stop_on_copy&format=rss).

## Àkọsílẹ̀ àwọn àyípadà

#### 1.7.0

 * NEW: Page Builders Integration (new togglable module) — the full Gutenberg SEO
   Analysis sidebar experience from SEOPulse is now available directly inside Live
   Composer, Kubio Builder and ElementorÌtumọ̀ Yorùbá: ’s Page Settings panel, without
   leaving the builder.
 * NEW: Migration — Rank Math SEO import now also migrates archive settings (author,
   date, search, 404 pages), the site Organization/Knowledge Graph and social profiles,
   and the IndexNow API key
 * NEW: Local SEO — 150+ schema.org `@type` values are now available in the Business
   Type selector (grouped by category), and a second `@type` can be added via the
   new “Additional Types” field (up to 3 in total), output as a multi-type array
   in the JSON-LD as recommended by Google
 * FIX: Content Analysis — the “Open Graph tags are not configured” and “Twitter
   Cards are not configured” recommendations always triggered, even when properly
   configured, because the checks read from individual post meta keys that were 
   never actually written; they now read the real saved Open Graph/Twitter Card 
   values.
 * FIX: Content Analysis — when multiple focus keywords were set on a post, the 
   meta title and meta description checks only ever evaluated the first keyword,
   unfairly penalizing the SEO score whenever a secondary keyword (rather than the
   first one) was the one actually present; all focus keywords are now taken into
   account.
 * FIX: Migration — Rank Math SEO import no longer inserts raw `%tag%` placeholders
   into imported titles and descriptions; they are now translated to SEOPulseÌtumọ̀
   Yorùbá: ’s own template syntax
 * FIX: Migration — Rank Math SEO import now correctly imports the primary category
   for WooCommerce products
 * FIX: Migration — Rank Math SEO import now includes the “Include images” sitemap
   setting
 * FIX: Migration — Fixed a fatal error that could prevent SEOPress from being detected
   during import
 * FIX: Tools — All in One SEO import panel was missing some of its styles
 * FIX: Setup Wizard — Some SEO plugins were not detected as importable
 * FIX: Tools Import Plugins Data — Change the default path of all files
 * FIX: Dashboard — The Setup Wizard card, once auto-hidden after completing the
   wizard, can now be re-enabled from the “Dashboard Sections” visibility panel
 * FIX: Local SEO — the selected Business Type was silently reset to `LocalBusiness`
   on every save because the validator read `type` while the form sends `@type`
 * FIX: Local SEO — types offered in the form (Physician, MedicalBusiness, Dentist,
   Pharmacy, Optician…) were rejected by the validatorÌtumọ̀ Yorùbá: ’s outdated
   hard-coded list; it now uses the single source of truth in `LocalSeoDefaults`
 * FIX: Local SEO — REST routes (`GET/POST /settings`, `POST /test-jsonld`) now 
   require `manage_options` instead of `edit_posts`, matching the settings page
 * FIX: Instant Indexing — enabling IndexNow for the first time could silently leave
   it marked as disabled after saving: the automatic API key generation step reloaded
   settings from the database before the “enabled” flag had been persisted, overwriting
   it back to its previous value; the toggle now persists correctly.
 * FIX: Instant Indexing — Google Indexing API submissions were skipped whenever
   another provider (IndexNow) had already succeeded recently for the same URL, 
   even when Google Indexing itself had never actually been attempted; the anti-
   duplicate cooldown is now tracked separately per provider instead of globally.
 * FIX: Instant Indexing — IndexNowÌtumọ̀ Yorùbá: ’s “Test Connection” always reported
   success as soon as an API key existed, without ever checking that the key verification
   file was actually reachable on the site; it now performs a real request to the
   key file and reports the genuine result.
 * FIX: Instant Indexing — URLs for non-public post types could be submitted to 
   IndexNow and the Google Indexing API on publish/update/delete; only publicly 
   viewable post types now trigger automatic submissions.
 * FIX: Instant Indexing — Activity Log “Refresh” button triggered two separate,
   redundant requests and could display inconsistent results; refreshing now performs
   a single request, and pagination controls now display correctly on first load
   instead of only after a manual refresh.
 * PERFORMANCE: Setup Wizard — General performance improvements
 * PERFORMANCE: Migration — Import from SEOPress, Yoast SEO, Rank Math SEO and All
   in One SEO now processes posts in resumable batches with a live progress indicator
   instead of a single request, preventing PHP execution timeouts on large sites
 * PERFORMANCE: Instant Indexing — publishing or updating a post no longer waits
   on the IndexNow / Google Indexing API calls; submissions are now processed in
   the background via WP-Cron instead of blocking the post save request, preventing
   slow publishes and timeouts on bulk imports/publications.

#### 1.6.0

 * NEW: WooCommerce Product SEO — dedicated “SEOPulse SEO” meta box on the product
   edit screen
 * NEW: WooCommerce — add variables in the variables picker
 * NEW: Local SEO — Opening Hours fields now use a clock-icon time picker (hour/
   minute steppers, with automatic AM/PM support in 12-hour mode) instead of manual
   text entry, for more precise and consistent time selection
 * PERFORMANCE: General — Graphical improvements and styles loading optimization
 * FIX: Meta Template Engine — `%%env.url%%` resolved to the internal REST request
   URL instead of the actual page/product URL when resolved for an admin-side live
   preview; now resolves to the postÌtumọ̀ Yorùbá: ’s real permalink whenever a 
   post context is available
 * FIX: Meta Template Engine — `canonical` and `og_url` defaults could be empty 
   for a product that had never been saved yet (`auto-draft` status), because `get_permalink()`
   returns `false` for that status; now falls back to the same sample-permalink 
   technique already used by the classic metabox view
 * FIX: WooCommerce product edit screen no longer shows the generic “SEO Analysis”
   panel twice — itÌtumọ̀ Yorùbá: ’s now covered exclusively by the product meta
   boxÌtumọ̀ Yorùbá: ’s Score tab
 * FIX: Fatal error on WooCommerce HPOS order edit pages caused by `register_meta_boxes()`
   expecting a `WP_Post` instance where WooCommerce passes an `Order` object.
 * FIX: Sitemap — enabling “Disable native WordPress sitemap” registered SEOPulseÌtumọ̀
   Yorùbá: ’s custom rewrite rules but never disabled WordPress coreÌtumọ̀ Yorùbá:’
   s own sitemap module, so /sitemap.xml requests were still intercepted and redirected
   to /wp-sitemap.xml; the core sitemap module is now properly disabled via wp_sitemaps_enabled
   and rewrite rules are flushed automatically when the setting changes.
 * FIX: Redirects — Nginx export could generate malformed location blocks when a
   source or target URL contained special characters (quotes, backslashes, line 
   breaks), producing an invalid config file that would fail nginx -t; values are
   now properly escaped and quoted.
 * FIX: Redirects — Nginx export no longer produces an unsupported return status
   code when a redirectÌtumọ̀ Yorùbá: ’s type falls outside the codes accepted by
   Nginx (301, 302, 303, 307, 308); invalid codes now fall back to 301.
 * FIX: Redirects — Nginx export ordering between exact and pattern-based redirects
   is now explicit and deterministic instead of relying on implicit sort order.

#### 1.5.0

 * NEW: Admin Page Header — Notification panel items now have a “Dismiss” button;
   dismissed notifications are stored per user and filtered out of the `GET /notifications`
   REST response, plus a new `POST /notifications/dismiss` route to record the dismissal
 * PERFORMANCE: Admin steelsheet now loads only when the module is enabled
 * FIX: Admin Page Header — Notification IDs for disabled modules are now sanitized
   consistently between generation and dismissal, preventing dismissed notifications
   from reappearing when a module key contains uppercase or special characters
 * FIX: Dashboard — Toggling a moduleÌtumọ̀ Yorùbá: ’s enabled state no longer requires
   a full page reload to update the notification panel and its badge counter; the
   header bundle now re-fetches notifications after a module toggle via a cross-
   bundle refresh event
 * FIX: Editor Sidebar — Meta Title/Description character counter and SEO score/
   Meta Checks warnings now use the resolved value of dynamic variables (`%%post.
   title%%`, `%%post.excerpt%%`, including combinations with static text) instead
   of the literal template string length
 * FIX: Admin Columns — Posts list “SEO” column now displays the resolved post title/
   description instead of the raw `%%post.title%%` / `%%post.excerpt%%` template
   syntax
 * FIX: Admin Columns — Score badge colors on the posts list `edit.php` screen were
   not applied because the design-token stylesheet defining `--sp-success-subtle`/`--
   sp-warning-text`/`--sp-error-*` custom properties was not enqueued outside SEOPulse
   admin pages
 * FIX: Module Page — Disabled state now renders correctly when the module is disabled
 * FIX: Module Page — Module toggles now correctly redirect to the dedicated module
   admin page

#### 1.4.0

 * NEW: Sitemap Robots.txt — “Load current robots.txt” button in the Robots.txt 
   View tab fetches and populates the textarea with the current robots.txt content(
   physical file if present, otherwise SEOPulse-generated)
 * PERFORMANCE: General — Graphical improvements
 * PERFORMANCE: React codebase
 * FIX: Sitemap Settings — “View Sitemap” link in Tools & Diagnostics tab now correctly
   switches between `wp-sitemap.xml` (native) and `sitemap.xml` (custom) based on
   the “Disable native WordPress sitemap” checkbox state
 * FIX: Sitemap Robots.txt — `generate_robots_txt()` now uses `custom_robots` as
   the full verbatim content when set, preventing duplicate base headers after a
   load-edit-save cycle
 * FIX: Meta Engine — `%%author.name%%` and all `author.*` variables now resolve
   correctly when context is built from a `post_id` alone (e.g. headless API, editor
   sidebar preview); author is now auto-derived from the postÌtumọ̀ Yorùbá: ’s `
   post_author` field in `ContextBag::fromArray()`
 * FIX: Meta Engine — Admin template live preview no longer resolves all contextual
   variables to empty; `resolve_template` endpoint now builds a sample context from
   the most recently modified published post when no explicit context is provided
 * FIX: Editor sidebar — Modal now correctly loads the CSS
 * FIX: Editor Sidebar — Snippet preview (Search tab) now displays the actual resolved
   post title and description instead of raw `%%post.title%%` / `%%post.excerpt%%`
   template strings
 * FIX: Editor Sidebar — Social preview (Social tab) now displays the actual resolved
   OG/Twitter title and description instead of raw template strings; `resolved` 
   values from the REST API are now used with a field-level fallback chain matching
   the PHP defaults

#### 1.3.0

 * NEW: Analytics & Cookie Consent — Add settings page to configure the Google Analytics
   4 and Google Tag Manager tracking scripts.
 * NEW: Add an Header React component to all React SPAs.
 * PERFORMANCE: CSS files to reduce the output size.
 * PERFORMANCE: Rework all React SPAs.
 * FIX: Local SEO — `numberOfEmployees` field reverted to 0 on page reload; API 
   response returns a `QuantitativeValue` object which is now properly normalized
   to a plain string on load.
 * FIX: Local SEO — `areaServed` region and country fields reverted to empty on 
   page reload; PHP now stores `region` as `AdministrativeArea` and `country` as`
   Country` (distinct Schema.org types), allowing the frontend to reliably distinguish
   them on load.

#### 1.2.1

 * FIX: Dashboard blank — React SPA mount errors are now surfaced via an ErrorBoundary
   instead of silently leaving `#seopulse-dashboard-root` empty
 * FIX: Dashboard blank — silent bail conditions in the entry point now log explicit`
   console.error` messages (`#seopulse-dashboard-root` not found, `window.seopulseDashboard`
   undefined, `createRoot` unavailable)
 * FIX: Dashboard blank — added runtime guard for `createRoot` availability
 * FIX: `DashboardHeader` — unsafe non-null assertion `window.seopulseDashboard!`
   replaced with optional chaining to prevent `TypeError` crashing the full render
   tree

#### 1.2.0

 * NEW: Dashboard fully migrated from PHP to React
 * NEW: SEO Overview dashboard widget fully migrated from PHP to React with live
   data fetch via REST API
 * NEW: Monitor404 — `sendTest()` method in `Monitor404EmailReporter` to send a 
   test email bypassing the enabled/schedule guards
 * NEW: Monitor404 — test email now captures `wp_mail_failed` hook and surfaces 
   the PHPMailer/SMTP error message in the REST response
 * NEW: “See all” expand/collapse toggle on the Recent Analyses dashboard widget
 * PERFORMANCE: General CSS cleanup
 * FIX: Monitor404 Settings — after saving, the React state and `window.seopulse404Monitor.
   settings` were not updated, requiring a full page reload to reflect changes
 * FIX: Editor sidebar — ScoreGauge SVG circles now enforced via CSS to prevent 
   Gutenberg resets from making them opaque
 * FIX: Editor sidebar — ScoreGauge render the score text above the SVG
 * FIX: Editor sidebar — ScoreGauge color variant selectors now use higher specificity
   to resist WordPress/Gutenberg overrides
 * FIX: Score level vocabulary mismatch — PHP now returns `needs_improvement` to
   align with TypeScript components
 * FIX: Open Graph and Twitter Card global settings were saved correctly but never
   applied to frontend meta tags
 * FIX: Third-party admin notices (e.g. Elementor, WooCommerce) no longer appear
   on SEOPulse plugin pages
 * FIX: French translations not displayed on Meta SEO, Local SEO, Redirections, 
   Sitemap and Log Viewer pages — `wp_set_script_translations()` was missing for
   the corresponding script handles

#### 1.1.0

 * NEW: “See all” expand/collapse toggle on the Quick Wins dashboard widget
 * NEW: “See all” expand/collapse toggle on the Images to Fix dashboard widget
 * NEW: Command palette (Ctrl+K) in admin bar
 * NEW: SEO score in admin bar
 * NEW: Modules Panel block is now draggable to left or right columns in the dashboard
   grid
 * PERFORMANCE: SEO Health Status dashboard widget: score sparkline is now animated
 * PERFORMANCE: SEO Health Status dashboard widget: KPI badge now shows the live
   score
 * PERFORMANCE: Recent Analyses dashboard Widget
 * FIX: Fatal error on Setup Wizard

#### 1.0.1

Tested up to WordPress 7.0

#### 1.0.0

Initial release.

## Àkójọpọ̀ Meta

 *  Ẹ̀yà **1.7.0**
 *  Ìgbàgbọ́hùn tó kẹ́yìn **ọjọ́ 2 sẹ́yìn**
 *  Àwọn ìgbéwọlẹ̀ tó ṣiṣẹ́ **Tó kéré sí 10**
 *  Ẹ̀yà WordPress ** 6.0 tàbí ju bẹ́ẹ̀ lọ **
 *  Dánwò dé **7.1.2**
 *  Ẹ̀yà PHP ** 8.1 tàbí ju bẹ́ẹ̀ lọ **
 *  Èdè
 * [English (US)](https://wordpress.org/plugins/seopulse/)
 * Àwọn àmì
 * [google search console](https://yor.wordpress.org/plugins/tags/google-search-console/)
   [local seo](https://yor.wordpress.org/plugins/tags/local-seo/)[schema](https://yor.wordpress.org/plugins/tags/schema/)
   [seo](https://yor.wordpress.org/plugins/tags/seo/)[xml sitemap](https://yor.wordpress.org/plugins/tags/xml-sitemap/)
 *  [Ìwòye Tó Péye](https://yor.wordpress.org/plugins/seopulse/advanced/)

## Àwọn ìbò

Kò sí ìwádìí tí a tíì fi ránṣẹ́.

[Your review](https://wordpress.org/support/plugin/seopulse/reviews/#new-post)

[Wo gbogbo àwọn àgbéyẹ̀wò](https://wordpress.org/support/plugin/seopulse/reviews/)

## Àwọn Olùkópa

 *   [ Alexandre Jacquin ](https://profiles.wordpress.org/citrusdevlab/)

## Ìrànlọ́wọ́

Nǹkan wà tí o fẹ́ sọ? Ṣé o nílò ìrànlọ́wọ́?

 [Wo àpéjọ ìrànlọ́wọ́](https://wordpress.org/support/plugin/seopulse/)

## Ṣe ìtọrẹ

Ṣé o fẹ́ ṣe àtìlẹ́yìn fún ìlọsíwájú plugin yìí?

 [ Ṣe ìtọrẹ sí plugin yìí ](https://www.seopulse.citrus-design.fr)