Title: DigitalM Inside SEO Agency
Author: insideseo
Published: <strong>October 15, 2026</strong>
Last modified: October 15, 2026

---

Search plugins

![](https://ps.w.org/digitalm-insideseo-agency/assets/banner-772x250.png?rev=3747649)

![](https://ps.w.org/digitalm-insideseo-agency/assets/icon-256x256.png?rev=3747649)

# DigitalM Inside SEO Agency

 By [insideseo](https://profiles.wordpress.org/insideseo/)

[Download](https://downloads.wordpress.org/plugin/digitalm-insideseo-agency.1.35.121.zip)

 * [Details](https://wordpress.org/plugins/digitalm-insideseo-agency/#description)
 * [Reviews](https://wordpress.org/plugins/digitalm-insideseo-agency/#reviews)
 *  [Installation](https://wordpress.org/plugins/digitalm-insideseo-agency/#installation)
 * [Development](https://wordpress.org/plugins/digitalm-insideseo-agency/#developers)

 [Support](https://wordpress.org/support/plugin/digitalm-insideseo-agency/)

## Description

**DigitalM Inside SEO Agency lets an SEO agency follow all its client websites from
its own WordPress, without logging in to each client’s dashboard.**

Each client installs the free DigitalM Inside SEO plugin and accepts your invitation.
From then on, their SEO data comes to your site every night, and you work on it 
here. The client picker sits in the top bar, and every screen shows the selected
client’s data.

#### Who it is for

 * **SEO agencies and freelancers** who look after several WordPress or WooCommerce
   websites.
 * **In-house teams** that run more than one website.

#### How the connection works

 1. You create an invitation for the client in Settings.
 2. The client installs the free DigitalM Inside SEO plugin and opens the invitation
    link. A page on their own site shows your agency’s name and exactly what you will
    see and be able to do.
 3. The client confirms, and you approve the connection. Their data starts downloading
    the same night.

The client can end the connection at any time. Every change you make on their site
goes through a signed request and is written to a log on their site.

#### The same screens, for every client

 * **Mirror** – the most important facts about the client’s site on one screen: 
   sales, traffic, errors, keywords and fix priorities.
 * **Conversions and traffic** – revenue, orders and visits by product, channel,
   device, country and city, against the previous period.
 * **Rankings** – impressions, clicks, CTR and positions for every keyword and page,
   winners and losers.
 * **SEO audit** – over 120 checks for indexing, titles and meta, links, images,
   structure, speed and structured data, each with an explanation and a fix.
 * **GEO / AEO** – whether AI assistants such as ChatGPT, Gemini and Perplexity 
   can reach and quote the site.
 * **Removed pages** – addresses the client removed, with their Google clicks and
   impressions, ready to redirect or mark as gone.
 * **System information** – the client’s SEO plugin, cache plugin, PHP and WordPress
   versions.

#### Built for the agency’s daily work

 * **All clients in one list** – the state of each connection, the plugin version
   on the client’s site and when the data was last refreshed.
 * **Nightly refresh, only what changed** – one client and one request at a time,
   with a pause between requests, so client websites are not slowed down. You can
   also refresh a client by hand.
 * **Your own website without a slot** – with one button, the agency follows its
   own website too. It does not take a client slot.
 * **Fixes with one approval** – titles, descriptions, images and texts are prepared
   on your side and written to the client’s site only when you approve them, through
   a signed request.

#### Help and support

A built-in Guide answers “where do I do X” and takes you to the right screen. If
something does not work, a form on the Guide screen sends us a short description
together with the plugin, WordPress and PHP versions, only when you press the button.
If you leave the email from your account with us and tick the consent box, the message
becomes a support ticket, and you see our reply in your account.

#### More of our plugins

A quiet page in the menu lists our other free plugins from the WordPress.org directory,
with a short description. Nothing is installed unless you press the Install button,
which opens the standard WordPress installer.

#### Interface languages

The interface is available in Bulgarian and English. A BG/EN switch sits in the 
top right corner of every screen.

#### Free and paid

The plugin is free and every screen works without a licence. Client connections 
are managed by our service at seo.digitalmseo.com. The free service plan covers 
up to 3 client websites at a time. More client websites are available as a paid 
service plan from our own site. A separate Pro add-on, also offered from our own
site, adds AI-prepared fixes and deeper analyses. This plugin works completely on
its own without it.

#### Requirements

 * WordPress 6.2 or newer
 * PHP 8.1 or newer
 * The free DigitalM Inside SEO plugin on each client website

### External Services

DigitalM Inside SEO Agency communicates with the following external services.

#### seo.digitalmseo.com (our service)

 * **What**: creates and checks client invitations, keeps track of connected clients
   and slots, and verifies that requests between your site and a client’s site are
   genuine.
 * **When**: when you create an invitation, approve or end a connection, refresh
   the list of clients, or enter a licence key.
 * **What is sent**: your site URL, plugin version, agency name, licence key if 
   you enter one, a public verification key, and the client site URL you invite.
 * **Summary numbers**: for the clients list, our service may ask connected client
   sites for a few summary numbers they have already calculated and keep them for
   up to 15 minutes.
 * **Privacy Policy**: https://seo.digitalmseo.com/en/privacy-policy/
 * **Terms of Use**: https://seo.digitalmseo.com/en/terms/

#### Your clients’ websites

 * **What**: the free DigitalM Inside SEO plugin on each connected client site.
 * **When**: only after the client has confirmed your invitation and you have approved
   it; data is downloaded at night or when you refresh by hand, and change requests
   are sent when you approve a fix.
 * **What is sent**: signed requests for the client’s SEO data (findings, Google
   Search Console and GA4 history, rankings, the change log and daily visit figures)
   and signed change requests that you approve.

#### seo.digitalmseo.com – problem report form (optional)

 * **What**: the “Something not working?” form on the Guide screen.
 * **When**: only when you press the send button.
 * **What is sent**: your message, the plugin, WordPress and PHP versions, the active
   SEO plugin, your site URL, and your email only if you tick the consent box.

#### Google PageSpeed Insights API (optional)

 * **What**: the PageSpeed Insights API.
 * **When**: only when you run a speed test.
 * **What is sent**: the public URL of the page being tested.
 * **Policy**: https://policies.google.com/privacy

#### IndexNow (optional, off by default)

 * **What**: api.indexnow.org, shared by Bing, Yandex and other search engines.
 * **When**: only after you turn it on, each time a page on your own site is published
   or updated.
 * **What is sent**: the public URL of the changed page and a key file address on
   your site.
 * **Policy**: https://www.indexnow.org/terms

#### WordPress.org plugin directory

 * **What**: the “More of our plugins” page reads the list of our plugins from the
   WordPress.org directory through the standard WordPress function.
 * **When**: when you open that page; the list is kept for 12 hours.
 * **What is sent**: the author name used for the search; nothing about your site.

### Credits

Built by Digital M SEO Ltd (digitalmseo.com).

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`, or install it directly from
    the WordPress admin.
 2. Activate the plugin through the Plugins menu in WordPress.
 3. Open Inside SEO Agency  Settings and enter your agency name.
 4. Create an invitation for your first client and send them the link.

## FAQ

### Do I need access to my clients’ dashboards?

No. The client installs the free DigitalM Inside SEO plugin and confirms your invitation.
You never need their password.

### What does the client see?

Before confirming, the client sees your agency’s name and the list of data you will
receive. After that, every change you make is written to a log on their site, and
they can end the connection at any time.

### Will it slow down my clients’ websites?

No. Data is downloaded at night, only what changed, one client and one request at
a time, with a pause between requests.

### Where is the client data stored?

On your own WordPress site, in the plugin’s tables. Our service checks invitations
and slots. For the clients list it may keep a few summary numbers for up to 15 minutes,
so client sites are not asked on every page load. It does not keep the client’s 
SEO data.

### Can I use it with the client plugin on the same site?

Yes. The agency plugin and the free DigitalM Inside SEO plugin can run on the same
site. Use “Your site” in Settings to follow your own website without taking a slot.

### How do I report a problem?

Use the form at the bottom of the Guide screen. It is sent only when you press the
button. Leave the email from your account with us to get the reply as a support 
ticket.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“DigitalM Inside SEO Agency” is open source software. The following people have 
contributed to this plugin.

Contributors

 *   [ insideseo ](https://profiles.wordpress.org/insideseo/)

[Translate “DigitalM Inside SEO Agency” into your language.](https://translate.wordpress.org/projects/wp-plugins/digitalm-insideseo-agency)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/digitalm-insideseo-agency/),
check out the [SVN repository](https://plugins.svn.wordpress.org/digitalm-insideseo-agency/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/digitalm-insideseo-agency/)
by [RSS](https://plugins.trac.wordpress.org/log/digitalm-insideseo-agency/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.35.121

 * Own AI account: one failed request (time-out, a refused prompt) no longer marks
   the account as unavailable for 10 minutes. Only “no model found” does. The last
   error is kept so it can be shown.

#### 1.35.120

 * Near-duplicates: the finding is called “Series of near-duplicate products” and
   counts series. The make-unique list shows products and series.

#### 1.35.119

 * Own AI account: requests can carry images (image analysis) and ask for web search(
   fact checks), through the AI connection in WordPress (Settings  Connectors).

#### 1.35.118

 * Ads: a budget or export saved at the agency is no longer lost. If the client 
   does not answer, the record waits and is sent again with the next check of the
   link; the next pull does not overwrite it. The uploaded export file stays linked.
   The screen says when the client did not answer.

#### 1.35.117

 * System info: how much data comes from Google per day at each client, and on how
   many days the limit was reached (needs DigitalM Inside SEO 0.294.91 at the client).

#### 1.35.116

 * Agency link: every write, queue and command request to the client is signed with
   the agency key. One-time number and 5-minute window – a copied request does not
   work twice.
 * Make unique: the list shows analyses and proposals kept at the agency. New filter
   by state.
 * Background work keeps its client: GEO steps, Asset Lab steps, the night queue
   and speed measurements run for the client they were started for, not for the 
   last chosen one.

#### 1.35.115

 * Client queue: the counts on the screen refresh right after work is done. Before
   they could stay old for up to 15 minutes.

#### 1.35.114

 * Client queue: “Run” now works in the background, like at the client. It also 
   runs series analysis (it showed 0 of 0 before) and writes each product with its
   series.
 * Client queue: client and agency are in sync. When the client presses “Run”, the
   agency takes the tasks at its next check (about 30 minutes). The night run follows
   the client’s checkbox – one checkbox, at the client.
 * Client queue: when the AI provider is out of credits or the limit is reached,
   the run stops and the tasks go back to waiting. The last run and its reason are
   shown above the queue.
 * Series analysis from the agency screen is reported to the client, so the rewrite
   can be added to the queue.

#### 1.35.113

 * Make unique list: the column now shows how many products the series has (with
   the product itself), not how many others are similar.

#### 1.35.112

 * Actions on the client site: when the client refuses an action, the agency screen
   now shows the client’s own reason (for example that the text was changed after
   the check) instead of a bare “refused”.

#### 1.35.111

 * Change log: paging with First, Back, a page number box, Next and Last. Paging
   and filters now keep working past the first page.
 * Change log: new filter “Effect in Google” – improved, worse, no difference, waiting(
   under 30 days), no Google data.
 * Change log: shows its size. Rows older than 24 months are removed for each client
   during the daily pull.

#### 1.35.110

 * Each user of the agency site now keeps their own selected client. Two people 
   no longer switch the client for each other. Background work still uses the last
   selected client.
 * Uninstall also removes the agency signing keys, the agency notes on posts, the
   ads folder and each user’s selected client.

#### 1.35.109

 * The check for an AI model no longer sends a paid request. It only asks WordPress
   whether a text model is set up. If a real request fails, the plugin remembers
   this for 10 minutes.
 * Questions on the audit screen are shown in the page with clear buttons, instead
   of the browser’s OK / Cancel window.
 * The text-check screen shows each note on separate lines: the mistake, the sentence
   it is in, the kind and the reason, then the fix.
 * The script data for the in-page questions has its own name (SEOHA_ASK_L10N), 
   so it does not clash with the free plugin.
 * The text-check screen loads the notes already found on the client site right 
   away.
 * Audit: “Only one internal link” and “Broken internal links” moved to “Slowing
   down ranking”.
 * Index check: images, documents and theme or page-builder templates (for example
   Flatsome blocks under /blocks/) are no longer shown as pages.
 * The agency’s public key is sent to the hub again (wrong class name), so the hub
   can pass it to approved clients.

#### 1.35.108

 * Speed test (PageSpeed): works without Action Scheduler, through WP-Cron.
 * Screen scripts are passed straight to wp_add_inline_script(), with every value
   escaped in that call (esc_js() or wp_json_encode()). The helpers that took a 
   ready-made string are removed.
 * The print styles and the client status table styles moved into admin/css/seoh-
   admin.css.
 * Removed the Author URI header. The Plugin URI stays.

#### 1.35.107

 * Table updates now go through dbDelta on each version change, for every client.
   No more manual ALTER TABLE, and no old-table cleanups.
 * Uninstall deletes options through delete_option(), so the WordPress cache is 
   cleared too.
 * Every prepared query now passes its values one by one, so the number of placeholders
   can be checked.
 * Queue items are saved one by one instead of one large multi-row query.
 * The plugin no longer defines WordPress core file-permission constants; file writes
   give the permissions themselves.

#### 1.35.106

 * Removed code that no longer has any user: the multi-language helper for the agency’s
   own site and an unused hook for sending changes.

#### 1.35.105

 * New read-only helpers over the client data that was already pulled (one image,
   image search, page rows, titles by type, duplicate meta), for the paid add-on.
 * Removed the old box that resent the agency’s own sales to the hub. The agency
   does not send its own data.
 * Missing English translations added.

#### 1.35.104

 * Removed the old code that read or changed the agency’s own site. Every screen
   and action now reads from and sends to the selected client. The agency’s own 
   site is followed as a client through the free plugin.
 * FAQ blocks, saved schema, image texts, image renames and the menu tree now go
   to the client site.
 * Uninstall no longer touches data that belongs to the free plugin on the same 
   site.
 * Faster cache clearing for client views (works with persistent object caches).

#### 1.35.103

 * Faster screens: reads from the plugin’s own tables go through the WordPress object
   cache. Any write to these tables clears it at once, so the screens always show
   the current data.

#### 1.35.102

 * Removed the unused background audit runner and the helpers only it used. The 
   audit runs on the client’s site.

#### 1.35.101

 * File rules: the “keep only on chosen pages” list now shows the client’s own pages
   and finds where each form is used on the client’s site. It was not shown before.
 * Removed an unused /llms.txt output and own-site page lookups (the client’s site
   serves its own llms.txt).

#### 1.35.100

 * File-rule preview links for a client carry the client’s own public nonce, so 
   they keep working with the free plugin 0.294.72 or newer.

#### 1.35.99

 * Clean-up: removed the old copies of the screen actions that now always run on
   the client’s site, the front-end test load and the slowdown tool (the agency 
   does not measure its own site), and several unused classes. About 12,700 lines
   less; screens work as before.

#### 1.35.98

 * What you set for a client is saved on the client’s site: the file rules in Speed(
   and their preview links use the client’s own key), the llms.txt selection, and
   the ads figures. Needs the free plugin 0.294.71 or newer on the client site.
 * Suggested questions and schema: the agency’s AI writes the suggestion from the
   client’s page, and it waits for approval on the client’s site.
 * “Search Console reasons” in Errors are shown again, from the client’s data.

#### 1.35.97

 * A client is always selected while the agency has clients: with none chosen yet,
   or after the chosen one is removed, the first client in the list is picked — 
   the same one the menu shows.
 * The agency no longer measures or changes its own website: the monthly speed check
   and its email, the admin load timing, the file rules and the test load on the
   front end are off. The agency’s own website is followed as a client, with the
   free plugin.
 * Addresses on the screens (content, structure, links, PageSpeed suggestions, page
   inspector) are built from the selected client’s site.
 * The “Check in Search Console” and “Rewrite breakdowns back” buttons are back;
   they run on the client.

#### 1.35.96

 * Removed the agency’s own Google connection. Search Console and Analytics figures
   always come from the selected client’s site, where Google is connected. The agency’s
   own website is followed as a client, with the free plugin.
 * Removed the unused set-up wizard and the key check address that only the Google
   connection needed.
 * A short address in the page report now opens on the selected client’s site.

#### 1.35.95

 * Fixed a fatal error when another plugin reads the time zone or builds an admin
   address while plugins are still loading.

#### 1.35.94

 * No output buffering anywhere: ob_start() is gone. Screen parts are built as strings
   and returned.
 * Every screen address that carries a choice (month, page, sort, search, tab) now
   carries a nonce for the logged-in user, checked with wp_verify_nonce() before
   any of it is read. Without a valid nonce the screen opens with its defaults.
 * Front-end requests for the speed probe and the asset rules preview carry a nonce
   checked with wp_verify_nonce(), in addition to the short-lived secret key.
 * The Google connection return is posted as a nonce-protected form to admin-post.
   php, with a capability check.
 * No change in behaviour.

#### 1.35.93

 * All file operations go through WP_Filesystem (moving, deleting folders, write
   checks, writing and reading files) or wp_delete_file(). The ads CSV is read through
   WP_Filesystem and parsed in PHP.
 * The HTTP/2 check no longer touches cURL: it reads the protocol agreed during 
   the TLS handshake (ALPN), with the WordPress HTTP API response as fallback.
 * Removed every phpcs:ignore / phpcs:disable comment from the code.
 * No change in behaviour.

#### 1.35.92

 * Review follow-up: every table and column name in SQL now goes through the %i 
   placeholder, including names returned by a method and schema queries (SHOW COLUMNS,
   ALTER, DROP, TRUNCATE, CREATE). IN lists and bulk inserts use placeholders built
   with array_fill(); filters are fixed SQL with placeholders instead of strings
   assembled in PHP.
 * Request input is sanitised where it is read with WordPress functions (sanitize_text_field,
   sanitize_textarea_field, esc_url_raw, map_deep, absint). Data from json_decode()
   is cleaned value by value.
 * The standalone consent page loads its CSS from a file through wp_register_style()/
   wp_print_styles() instead of a style tag.
 * Every output buffer is closed in a finally block in the same function, so nothing
   can skip the close.
 * No change in behaviour.

#### 1.35.91

 * Review follow-up: added a nonce to the client picker; the HTTP protocol check
   now uses the WordPress HTTP API instead of a direct call; passed all the plugin’s
   own table names through prepared queries (the %i placeholder). No change in behaviour.

#### 1.35.89

 * New: a “Status by client” table in Settings. For every client it shows four checks—
   structure, crawl, speed and console/analytics — each with a word (current/stale)
   in the right gender and the client’s own last-run date. A per-check refresh arrow
   starts the check on the client (crawl/structure as a command, both speed tests
   like the Speed tab) and the cell shows “refreshing” until the client’s timestamp
   moves, then downloads only what changed; the wait continues in a 5-minute background
   task. Name search, pagination of 25, a “Refresh all stale” button and a per-client
   download arrow. The clients list is merged into this table.
 * Fixes: freshness dates now come from the client’s handshake (so speed no longer
   shows a stale date); the print layout of the overview report no longer overlaps
   on a narrow page; removed an unused minified script; speed reads past days from
   the downloaded data and asks live only for today.

#### 1.35.73

 * Review follow-up: the wp-config helper no longer keeps a copy of wp-config.php
   on disk and uses WP_Filesystem; moved “Tested up to” to the readme only; sanitised
   a few request keys and the request URI; moved all inline admin scripts and styles
   to wp_add_inline_script / wp_add_inline_style. No change in behaviour.

#### 1.35.71

 * Code quality: cleared all Plugin Check findings — removed a few no-op translation
   wrappers, used a literal text domain in the menu, passed a LIKE pattern through
   a parameter, annotated the internal database queries in the data layers, and 
   noted that the agency REST endpoints verify a signed key inside their guard. 
   No change in behaviour.

#### 1.35.69

 * New: “Your site” – follow the agency’s own website with one button, without taking
   a client slot.
 * New: a “More of our plugins” page that lists our other free plugins from WordPress.
   org; nothing is installed without your click.
 * New: “Something not working?” form on the Guide screen, sent only on click; with
   your account email and consent it becomes a support ticket.
 * Fixed: connecting Google for the agency’s own website when the client plugin 
   is on the same site.
 * Improved: clearer texts, full English interface, and all browser pop-up dialogs
   replaced with on-page messages.

## Meta

 *  Version **1.35.121**
 *  Last updated **3 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [agency](https://wordpress.org/plugins/tags/agency/)[analytics](https://wordpress.org/plugins/tags/analytics/)
   [audit](https://wordpress.org/plugins/tags/audit/)[seo](https://wordpress.org/plugins/tags/seo/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/digitalm-insideseo-agency/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/digitalm-insideseo-agency/reviews/)

## Contributors

 *   [ insideseo ](https://profiles.wordpress.org/insideseo/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/digitalm-insideseo-agency/)