Description
Your website is a planet. The Pods map it.
PSM SEO Site Console docks a complete, private first SEO toolkit inside your WordPress dashboard. Everything runs in your browser and on your own server. Nothing you type is uploaded to us, ever.
The rooms
- Structure. The Pods chart every path as a sitemap or a 3D galaxy, surface orphan and broken pages, and give a letter grade that stays the same for the same site, so you can measure a fix.
- Presence. One business profile, checked field by field against 11 directories such as Google Business Profile, LinkedIn and Bing Places. Your data stays on your device.
- Redirector. Broken pages found by the crawl become ready 301 rules, exportable as .htaccess directives or JSON.
- Schema. Valid JSON-LD from your business profile, and the structured data any page already ships.
- Repairs. Every fault, worst first, with its cause, its fix and a brief for an AI assistant.
- Campaigns. Tagged links, so you can tell which channel actually brought someone.
- Reports. What changed between two real crawls, as a report you can print or save as a PDF.
- Search, Tracking and Keys. Dashboard tabs for searches, indexing, sitemaps, speed and country versions; your tags; and every key in one place.
The mothership features
- One clean schema graph on your site for your business, articles, products, FAQ, events and video, each type toggleable.
- A virtual XML sitemap at /sitemap.xml, with no file written to disk.
- Usage: anonymous first party usage counts with charts, kept on your own server. No third party analytics, no identifiers, and Do Not Track is honored.
- Cerebro: optional server side event forwarding to your own Google Tag Manager server container, plus a downloadable GTM recipe.
- Webhook broadcasts of crawl findings to Zapier, Make, or n8n.
- Diagnostics that decode every error code in plain language, and health checks for your sitemaps and for YouTube videos that no longer play.
Free and paid
This plugin is free and fully functional; nothing here is gated behind a purchase. Planet Social Console Pro is a separate add on from our own site that adds higher crawl caps and a skeleton crawl for very large sites.
Security and your responsibility
Planet Social Marketing is an independent developer; this plugin is not made or endorsed by WordPress or the WordPress Foundation. Keys and sign ins you connect can act as your site, so keep them private, replace any that leak, and remove connections you no longer use. Every release passes WordPress’s official Plugin Check, but the plugin is provided as is, without warranty, under the GPL. We are not responsible for your own devices, hosting, accounts or passwords, or for other plugins and services. Keep everything updated, use strong passwords and two factor sign in, and connect only services you trust.
Privacy
Crawls run in your browser, and your business profile lives in its local storage. Settings sit in a single option row and are all removed on uninstall. Optional anonymous feature counts go only to your own site. Full policy: https://planetsocialmarketing.com/privacy
External services
This plugin talks to the outside services listed below, each only for the purpose described. Your crawl results, page content, and business profile are never sent to us. Every service other than the web font is off until you choose to use it.
- Google Fonts (fonts.googleapis.com, fonts.gstatic.com).
The docked console interface loads its typefaces (Fraunces, Inter, and JetBrains Mono) from the Google Fonts CDN when you open the console screen in wp-admin. This is a request for font files only; your browser sends the standard request headers (including your IP address) to Google to fetch the fonts. No plugin data, page content, or profile information is included. If you prefer no external font request, the interface falls back to your system fonts.
This service is provided by Google LLC. Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy
- Google APIs, optional and off until you enable them.
If you connect Google on the Keys tab, your browser goes to accounts.google.com so you can approve access, and the plugin exchanges, refreshes and, when you disconnect, revokes the resulting tokens at oauth2.googleapis.com. With that connection it reads your own verified Search Console property from www.googleapis.com, including, when you press Check the sitemaps on the Search tab, the list of sitemaps Search Console holds for it and what Google last found in each, and asks searchconsole.googleapis.com how Google sees a page when you inspect one. With the same connection it reads your own Google Analytics property: analyticsadmin.googleapis.com says which properties your account has and which web address each one measures, so the plugin can find the one that belongs to this site, and analyticsdata.googleapis.com returns visit counts, bounce rate, average visit length, where visits and visitors came from, and anything bought, for whole days only. Every one of these calls only reads: the plugin never creates, changes or deletes anything in Analytics or Search Console, and no page content or visitor record leaves your site. Sites connected before Analytics was added granted Search Console only and keep working; reading Analytics needs you to press Connect Google again and approve it. If you set up Cerebro server side tagging, the events you select are forwarded to the Google Tag Manager server container that you own and control, at the address you enter. If you enter your Google Tag Manager container ID and turn on Load the Tag Manager container on the Tracking tab, the plugin loads that container from www.googletagmanager.com on your front end, the same snippet you would otherwise paste by hand. All of these stay dormant until you configure them, and you can turn them off at any time. Data flows only between your own site and your own Google account.
This service is provided by Google LLC. Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy
- Google Tag Manager API, optional and off until you switch on Tag Manager writing.
Only if you switch on Tag Manager writing on the Tracking tab and connect Google does the plugin ask Google for permission to edit your Tag Manager containers (the tagmanager.edit.containers scope). With it, the plugin asks tagmanager.googleapis.com which containers your account can edit, so you can pick one by name. When you press Read what is live, it reads the published version of the container you chose, which is the list of tags your visitors’ pages run, and keeps only each tag’s name, type, whether it is paused, and the event name and measurement ID it sends to, so the card can show what is already there. Reading changes nothing in the container. Then, only when you press Build the tags, it creates one new workspace in the container you chose and adds a trigger and an event tag for each event in the set you picked, a variable for each detail those events carry, a GA4 configuration tag unless you say GA4 already loads on the site, and, only if you tick FAQ opens, one Custom HTML tag that listens for FAQ boxes being opened. What is sent is the container address, your GA4 measurement ID and those tag, trigger and variable definitions. The FAQ listener runs in your visitors’ browsers only after you publish the workspace, and all it does there is push an event into the page’s own data layer for your container to send to your own GA4. It never publishes: the plugin does not ask for permission to publish a container, so nothing it creates reaches your visitors until you review the workspace in Tag Manager and publish it yourself. It never changes or deletes a tag or trigger that was already there. Show me what it would build lists the same objects and sends nothing. While the switch is off, the permission is not requested at all.
This service is provided by Google LLC. Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy
- Stape, optional and off until you connect it.
If you paste a Stape API key on the Keys tab, the plugin asks Stape which server containers your account has and what addresses they answer on, so you can pick one by name instead of copying a long address by hand. Only the key is sent, as a header, to api.app.stape.io or api.app.eu.stape.io depending on the region you choose. Every call is read only: the plugin never creates, changes or deletes anything in your Stape account. No page content, crawl result or visitor data is involved. The key is stored encrypted with your site keys, and Disconnect removes it.
This service is provided by Stape. Terms: https://stape.io/terms-conditions . Privacy: https://stape.io/privacy-notice
- Google PageSpeed Insights, optional and off until you connect it.
If you paste a PageSpeed Insights API key on the Keys tab, then each time you press the check button the plugin sends one page address and the key to www.googleapis.com and receives back how fast that page is. Google answers with two different things and the plugin keeps them apart: what real Chrome visitors experienced over the last 28 days, which only exists where enough people visited, and a simulation run on Google’s own hardware. Nothing is sent unless you press the button, and only the address of a page on your own site is ever sent.
This service is provided by Google LLC. Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy
- IndexNow, optional and off until you switch it on.
IndexNow tells search engines that a page on your site changed, so they read it again sooner instead of waiting for their next crawl. While it is switched on, the plugin sends a request to api.indexnow.org when a public post is published, unpublished or moved to the trash, when the Planet Social Redirector plugin creates a permanent redirect (the old address and the new one), and when you press one of the IndexNow buttons, in the console or on the Search tab (your home page, or your twenty most recently published posts). Each request carries your site’s host name, the addresses of those pages, your site’s IndexNow key and the address of its key file. The key is not a secret: the plugin publishes it at your site’s root so the engines can confirm the request came from your site. The same address is not sent again within an hour. IndexNow shares each submission with the search engines taking part, such as Microsoft Bing, Yandex, Seznam and Naver. No page content and no visitor data is sent.
IndexNow is run by its sponsors, Microsoft, Yandex and Seznam.cz. Terms: https://www.indexnow.org/terms . Privacy: the Privacy section of the same page, https://www.indexnow.org/terms
- Webhook automation, only the address you enter.
If you paste a webhook URL on the Keys tab, for example a Zapier catch hook at hooks.zapier.com or a Make or n8n webhook, the plugin POSTs a small JSON summary of crawl findings to that address when a broadcast fires. Nothing is sent until you enter a URL, and it goes only to the endpoint you chose, under that service’s own terms. Zapier terms: https://zapier.com/legal/terms-of-service . Zapier privacy: https://zapier.com/privacy
- Crawl relay, only the address you enter.
Crawling the site this plugin is installed on happens directly in your browser. Browsers block reading other sites that way, so to crawl a different site, such as a client’s, you can run a small relay of your own and enter its address under Advanced in the console. The console then sends the address of each page it wants to read to your relay, which fetches that page from the site you chose and hands it back. Nothing goes to a relay until you enter one. The setup guide uses a free Cloudflare Worker, at an address like your-worker.workers.dev, which is also the hint shown in the empty field. Cloudflare terms: https://www.cloudflare.com/website-terms/ . Cloudflare privacy: https://www.cloudflare.com/privacypolicy/
- YouTube oEmbed, only when you press Check videos.
The Videos card in the Inbox finds YouTube videos in your published posts and pages, and asks YouTube whether each one still plays. When you press Check videos, the plugin sends the address of each video it found, one request per video, to YouTube’s public oEmbed endpoint at www.youtube.com/oembed, and reads only whether the video plays, is gone, or is private. No page content, post text or visitor data is sent, and no account or key is involved. Each answer is kept for a week, so the same video is asked about again only after that. Nothing is sent until you press the button.
This service is provided by Google LLC through YouTube. Terms: https://www.youtube.com/t/terms . Privacy: https://policies.google.com/privacy
- Business directory links, in the Presence room.
The Presence room lists eleven business directories as ordinary links. The plugin never connects to them, fetches from them or sends them anything. A directory opens in a new tab only when you click it, and from then on you are on that site under its own terms.
- Google Business Profile, business.google.com. Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy
- LinkedIn Company Page, www.linkedin.com. Terms: https://www.linkedin.com/legal/user-agreement . Privacy: https://www.linkedin.com/legal/privacy-policy
- Bing Places, www.bingplaces.com. Terms: https://www.microsoft.com/en-us/servicesagreement . Privacy: https://www.microsoft.com/en-us/privacy/privacystatement
- Apple Business Connect, businessconnect.apple.com. Terms: https://www.apple.com/legal/internet-services/terms/site.html . Privacy: https://www.apple.com/legal/privacy/en-ww/
- Clutch, clutch.co. Terms: https://clutch.co/terms . Privacy: https://clutch.co/privacy
- Yelp for Business, biz.yelp.com. Terms: https://www.yelp.com/static?p=tos . Privacy: https://www.yelp.com/static?p=privacy
- Facebook Business Page, www.facebook.com. Terms: https://www.facebook.com/terms/ . Privacy: https://www.facebook.com/privacy/policy/
- Foursquare, business.foursquare.com. Terms: https://foursquare.com/legal/terms . Privacy: https://foursquare.com/legal/privacy
- YellowPages, accounts.yellowpages.com. Terms: https://www.yellowpages.com/about/legal/terms-conditions . Privacy: https://www.yellowpages.com/privacy
- Better Business Bureau, www.bbb.org. Terms: https://www.bbb.org/terms-of-use . Privacy: https://www.bbb.org/privacy-policy
- Nextdoor Business, business.nextdoor.com. Terms and privacy: Nextdoor’s Member Agreement and Privacy Policy, in the Legal section of the Nextdoor Help Center, which the foot of nextdoor.com links to.
- Other links.
These are ordinary links too. Nothing is sent until you click one.
- The Pods app on Google Play, play.google.com, and on the Amazon Appstore, www.amazon.com. Google Play terms: https://play.google.com/about/play-terms/index.html . Google privacy: https://policies.google.com/privacy . Amazon conditions of use: https://www.amazon.com/gp/help/customer/display.html?nodeId=GLSBYFE9MGKKQXXM . Amazon privacy: https://www.amazon.com/gp/help/customer/display.html?nodeId=GX7NJQ4ZB8MHFRNJ
- Google’s Rich Results Test and the Sitemaps report in your own Search Console, both at search.google.com, and your own Google Analytics and Tag Manager at analytics.google.com and tagmanager.google.com, under the Google terms and privacy policy in item 2.
- The Schema Markup Validator at validator.schema.org, part of schema.org. Terms: https://schema.org/docs/terms.html . The validator publishes no separate privacy policy.
- Our own site, planetsocialmarketing.com, for the field manual, the relay guide, plans and our policies. Terms: https://planetsocialmarketing.com/terms-of-service/ . Privacy: https://planetsocialmarketing.com/privacy/
Addresses on schema.org, www.w3.org and www.sitemaps.org that appear in the code are the names of vocabularies and formats written into your pages and your sitemap; the plugin never contacts them. Addresses on example.com and other reserved example names appear only as hints inside empty fields.
FAQ
-
Does my data leave my site?
-
No. Crawls run in your browser, the business profile stays in browser storage, and the optional usage counts post to your own site’s REST endpoint, not ours.
-
What are orphan pages and why do they matter?
-
Orphans are pages with no internal link pointing to them, the quiet failure of most site migrations. AI assistants answer questions by crawling links and sitemaps, so a page no path reaches never gets cited in an AI answer.
-
Can the Pods crawl sites other than mine?
-
Crawling the site the plugin is installed on always works. Browsers block fetching other domains, so crawling a different site requires a small relay you can run free on Cloudflare; the in app guide walks you through it in about a minute.
-
What happens to my settings if I uninstall?
-
Everything is removed: the settings, the keys, the SEO fields the plugin wrote on your posts, and its rewrite rules. No ghost data. The one exception is a second copy of this plugin that is still installed, such as the one downloaded from our site while you switch. Then nothing is removed, so the copy you keep keeps your settings.
-
Deactivate that copy, named Planet Social Console, then install and activate PSM SEO Site Console from this directory. Your settings, keys and SEO fields carry over, because the two copies are the same plugin and keep everything under the same names. Then delete the old copy: while PSM SEO Site Console is active, deleting it keeps everything the two share. Planet Social Console Pro works with either copy.
-
Is the paid tier required?
-
No. The free features work forever. For bigger sites, a separate add on installed from our own website, Planet Social Console Pro, raises the crawl caps and adds the large site skeleton crawl. Pricing and details live at planetsocialmarketing.com.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“PSM SEO Site Console” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “PSM SEO Site Console” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.52.0
- Everything built while the plugin was in directory review arrives. The dashboard has six tabs, one job each: Console, Inbox, Search, Tracking, Keys and Settings. The tag builder reads what is already live in your Tag Manager container and builds only what is missing. The Inbox checks your sitemaps against Search Console, finds YouTube videos that no longer play, and applies descriptions in bulk. Regional hreflang tags pair each page with its own version. The detail is in the entries for 2.49.0 to 2.51.1 below.
- Switching from the copy downloaded from planetsocialmarketing.com is safe. While this plugin is active, deleting that copy no longer takes the settings, keys and SEO fields the two share, and while the old copy is still active this one waits and says what to do instead of stopping with an error.
- This plugin’s own uninstall keeps everything while another copy is still installed.
2.51.1
- The plugin header now declares Requires at least: 6.0 and Requires PHP: 7.4, the same as this readme, so WordPress will not activate the plugin where it cannot run.
- Keys and the Google connection are stored encrypted with PHP’s OpenSSL extension. On a server without it, the Keys tab now says so and refuses to save, where before it stored nothing without a word.
2.51.0
- New: Read what is live, on the Build your tracking tags card. It reads the published version of your Tag Manager container, the tags your visitors’ pages run right now, and shows its Google tag, the GA4 events it already sends, any tag forwarding events by pattern, and every other live tag.
- Each set of events then shows what it would add and what is already live, so you build only what is missing. Show me what it would build and the GA4 recipe on Cerebro leave out what is already live, and the configuration tag starts ticked off when the live container already has a Google tag for your measurement ID.
- Reading changes nothing in Tag Manager and happens only when you press the button. It uses the Tag Manager access the tag builder already has.
- Messages from Tag Manager in the dashboard’s notices are escaped.
2.50.1
- Fixed: the business profile’s website, booking link and social profiles, and the default share image, could save a typo as an address, because WordPress puts http:// in front of anything. Each is now checked. A bare address such as example.com gets https:// in front, and anything that is still not an address is left out and named in the notice.
- The same check runs when a profile is imported as JSON or saved from the console, and again when the schema graph and share tags are printed, so an address an earlier version saved that is not one never reaches a page.
- The notice after fixing a video escapes the post’s title.
2.50.0
- The dashboard has six tabs instead of nine, one job each: Console, Inbox, Search, Tracking, Keys and Settings. Old links and bookmarks still land on the right tab.
- New: the Keys tab holds every key, ID and connection in one place: Google, your tracking IDs, Stape, PageSpeed, search engine ownership, the connect key, the application password and alerts. A card elsewhere that needs a key links straight to it.
- New: the Search tab gathers searches and indexing, sitemaps, schema, site speed, IndexNow and regions. IndexNow and regions were only in the docked console before.
- New: the Sitemaps card reads every sitemap the site offers the way a crawler does, and compares them with the list Search Console holds. It names typos, duplicates, redirects, and sitemaps never submitted.
- New: the Videos card in the Inbox finds YouTube videos in your posts that no longer play, and empty boxes where one used to be. Fix this post removes them, and WordPress keeps the version before in the post’s revisions. Nothing is sent to YouTube until you press Check videos.
- The Tracking tab holds Cerebro, the tag builder, your Analytics numbers and usage. Settings gains the Display and Diagnostics cards, which were tabs of their own.
- The Inbox tab shows how many fixes are waiting. A link to a card opens that card’s details. Commander Alien opens only when clicked.
- The docked console leaves its Tracking and Search engines rooms out on a site running this version, so each setting has one home.
Earlier releases, back to the first, are in changelog.txt, which comes with the plugin.
