{"id":325562,"date":"2026-06-14T13:59:48","date_gmt":"2026-06-14T13:59:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/source-of-trust-ai-visibility-schema-toolkit\/"},"modified":"2026-09-22T10:29:43","modified_gmt":"2026-09-22T10:29:43","slug":"eeoom-source-of-trust","status":"publish","type":"plugin","link":"https:\/\/en-ca.wordpress.org\/plugins\/eeoom-source-of-trust\/","author":23515396,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.0","stable_tag":"1.7.0","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"eeoom GEO - AI Search Optimization","header_author":"eeoom","header_description":"AI visibility, entity signals and structured data checks for WordPress.","assets_banners_color":"b85a3a","last_updated":"2026-09-22 10:29:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sourceoftrust.com","header_author_uri":"https:\/\/www.eeoom.com","rating":5,"author_block_rating":0,"active_installs":10,"downloads":459,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"eeoom","date":"2026-08-18 13:42:59","revision":3652992},"1.1.0":{"tag":"1.1.0","author":"eeoom","date":"2026-08-18 13:42:59","revision":3652992},"1.2.0":{"tag":"1.2.0","author":"eeoom","date":"2026-06-19 15:02:23","revision":3578840},"1.5.0":{"tag":"1.5.0","author":"eeoom","date":"2026-08-18 14:16:25","revision":3653045},"1.6.0":{"tag":"1.6.0","author":"eeoom","date":"2026-09-19 13:54:44","revision":3703340},"1.7.0":{"tag":"1.7.0","author":"eeoom","date":"2026-09-22 10:29:43","revision":3707060}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3576728,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3576728,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3576728,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3576728,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.5.0","1.6.0","1.7.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[220145,281580,245227,2591,1121],"plugin_category":[49,55],"plugin_contributors":[267107],"plugin_business_model":[],"class_list":["post-325562","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ai-search","plugin_tags-entity-seo","plugin_tags-generative-engine-optimization","plugin_tags-geo","plugin_tags-structured-data","plugin_category-maps-and-location","plugin_category-seo-and-marketing","plugin_contributors-eeoom","plugin_committers-eeoom"],"banners":{"banner":"https:\/\/ps.w.org\/eeoom-source-of-trust\/assets\/banner-772x250.png?rev=3576728","banner_2x":"https:\/\/ps.w.org\/eeoom-source-of-trust\/assets\/banner-1544x500.png?rev=3576728","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/eeoom-source-of-trust\/assets\/icon-128x128.png?rev=3576728","icon_2x":"https:\/\/ps.w.org\/eeoom-source-of-trust\/assets\/icon-256x256.png?rev=3576728","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>eeoom GEO is a Generative Engine Optimization plugin for WordPress, built to improve and monitor the signals that contribute to visibility and understanding in AI search.<\/p>\n\n<p>AI search visibility depends in part on how clearly generative systems can understand a website, the entities behind it, their relationships, and the signals that support relevance, authority and trust. eeoom GEO provides WordPress tools to structure, strengthen and inspect these signals.<\/p>\n\n<p>The plugin combines AI Search Monitors and GEO readiness checks with entity optimization, Primary Entity mapping and connected entity graphs.<\/p>\n\n<p>It helps make clear and machine-readable:<\/p>\n\n<ul>\n<li>who or what a website represents<\/li>\n<li>which organizations, people, locations, products and topics are relevant<\/li>\n<li>how those entities are connected<\/li>\n<li>which real-world entity is associated with an individual page<\/li>\n<li>whether important GEO signals are present<\/li>\n<li>how entity and relationship information is represented across the website<\/li>\n<\/ul>\n\n<p>eeoom GEO brings optimization, entity management and GEO monitoring together inside WordPress.<\/p>\n\n<h4>Optimize. Connect. Monitor.<\/h4>\n\n<p>eeoom GEO focuses on three core GEO workflows.<\/p>\n\n<p><em>Optimize<\/em><\/p>\n\n<p>Strengthen machine-readable signals that help AI systems understand the website, its organization, its topics and the entities behind its content.<\/p>\n\n<p><em>Connect<\/em><\/p>\n\n<p>Connect WordPress content with real-world entities and relationships through Primary Entity mapping and structured entity graphs.<\/p>\n\n<p><em>Monitor<\/em><\/p>\n\n<p>Track strategically important URLs with AI Search Monitors and run GEO readiness checks to inspect relevant technical, structured and entity signals.<\/p>\n\n<h4>Core features<\/h4>\n\n<ul>\n<li>AI Search Monitors for strategically important URLs.<\/li>\n<li>GEO readiness checks for published public pages.<\/li>\n<li>Stored check status, score, issues and recommendations.<\/li>\n<li>Entity-focused schema optimization.<\/li>\n<li>Organization entity enhancements.<\/li>\n<li>Optional EntityPool graph integration.<\/li>\n<li>Primary Entity mapping for posts, pages and public custom post types.<\/li>\n<li>Full Entity Graph integration for the homepage.<\/li>\n<li>Entity-specific Subgraphs for mapped content.<\/li>\n<li>Saved EntityPool Representations for explicitly curated page graphs.<\/li>\n<li>Standard Graph and Custom Graph modes per post, page or public custom post type.<\/li>\n<li>Integration of connected entity graphs into supported JSON-LD output.<\/li>\n<li>Persistent local EntityPool graph caching.<\/li>\n<li>Independent revision- and ETag-based validation for saved Representations.<\/li>\n<li>Request-driven graph revalidation.<\/li>\n<li>Stale-cache fallback during temporary EntityPool failures.<\/li>\n<li>Manual EntityPool entity refresh directly from WordPress.<\/li>\n<li>Capability-based access control and Plugin Admin management.<\/li>\n<li>No dependency on WP-Cron, system cron or background workers for EntityPool graph synchronization.<\/li>\n<\/ul>\n\n<h4>AI Search Monitors<\/h4>\n\n<p>AI Search Monitors keep strategically important URLs together in one place.<\/p>\n\n<p>Typical monitored URLs can include:<\/p>\n\n<ul>\n<li>the homepage<\/li>\n<li>important service pages<\/li>\n<li>category and landing pages<\/li>\n<li>key posts<\/li>\n<li>other pages that matter for AI search visibility<\/li>\n<\/ul>\n\n<p>Each monitor provides access to a check center where authorized users can run GEO checks and review the latest result.<\/p>\n\n<p>Stored results can include:<\/p>\n\n<ul>\n<li>check status<\/li>\n<li>GEO score<\/li>\n<li>detected issues<\/li>\n<li>recommendations<\/li>\n<li>last checked timestamp<\/li>\n<\/ul>\n\n<p>Checks are started manually. Pages are not silently submitted for analysis in the background.<\/p>\n\n<h4>GEO readiness checks<\/h4>\n\n<p>eeoom GEO can inspect published public URLs for GEO-relevant technical, structured data and entity signals.<\/p>\n\n<p>When an authorized user starts a check, the selected public URL is submitted to the checking service.<\/p>\n\n<p>The plugin does not submit:<\/p>\n\n<ul>\n<li>draft content<\/li>\n<li>private content<\/li>\n<li>preview URLs<\/li>\n<li>WordPress post body content<\/li>\n<li>visitor data<\/li>\n<li>passwords<\/li>\n<li>personal WordPress user data<\/li>\n<\/ul>\n\n<p>Checks may be processed asynchronously. eeoom GEO stores the resulting state and report with the corresponding WordPress content.<\/p>\n\n<h4>Schema &amp; Entity<\/h4>\n\n<p>eeoom GEO includes local tools for strengthening the machine-readable identity of the organization behind a website.<\/p>\n\n<p>Available Organization enhancements include:<\/p>\n\n<ul>\n<li>sameAs<\/li>\n<li>hasMap<\/li>\n<li>PostalAddress<\/li>\n<li>areaServed<\/li>\n<li>knowsAbout<\/li>\n<li>parentOrganization<\/li>\n<li>subOrganization<\/li>\n<\/ul>\n\n<p>These signals can describe identity, location, expertise and organizational relationships in supported structured data output.<\/p>\n\n<p>The local Schema &amp; Entity features do not require EntityPool.<\/p>\n\n<h4>EntityPool integration<\/h4>\n\n<p>EntityPool adds centrally managed entity graphs to eeoom GEO.<\/p>\n\n<p>A graph can describe organizations, people, locations, products, topics and other entities together with the relationships between them.<\/p>\n\n<p>An EntityPool graph is connected to WordPress using a graph-specific integration key.<\/p>\n\n<p>Once connected, eeoom GEO can:<\/p>\n\n<ul>\n<li>identify the connected graph and its root entity<\/li>\n<li>display graph metadata and connection status<\/li>\n<li>retrieve the entities available in the graph<\/li>\n<li>map WordPress content to a Primary Entity<\/li>\n<li>refresh the available entity list from the WordPress editor<\/li>\n<li>use the complete EntityPool graph for the homepage<\/li>\n<li>retrieve an entity-specific Subgraph for mapped content<\/li>\n<li>select a saved EntityPool Representation as a Custom Graph for individual content<\/li>\n<li>refresh the available Representation list from the WordPress editor<\/li>\n<li>cache graph representations locally<\/li>\n<li>detect semantic graph changes using revisions and ETags<\/li>\n<li>revalidate each saved Representation independently using its own semantic revision and ETag<\/li>\n<li>refresh only graph data that has changed and is currently needed<\/li>\n<li>retain cached graph data during temporary API failures<\/li>\n<li>integrate connected entities and relationships into supported structured data output<\/li>\n<\/ul>\n\n<p>WordPress stores the EntityPool UID as the page-level mapping.<\/p>\n\n<p>Entity names, types, identifiers, properties and relationships remain centrally managed in EntityPool.<\/p>\n\n<h4>Primary Entity mapping<\/h4>\n\n<p>Posts, pages and public custom post types can be mapped to a Primary Entity from the connected EntityPool graph.<\/p>\n\n<p>A Primary Entity represents the main real-world entity associated with the content.<\/p>\n\n<p>Examples can include:<\/p>\n\n<ul>\n<li>Organization<\/li>\n<li>Person<\/li>\n<li>LocalBusiness<\/li>\n<li>Place<\/li>\n<li>Product<\/li>\n<li>Service<\/li>\n<li>DefinedTerm<\/li>\n<li>other supported entity types<\/li>\n<\/ul>\n\n<p>Only the EntityPool UID is stored with the WordPress content. The entity itself remains managed in EntityPool.<\/p>\n\n<p>The homepage uses the connected graph as its Full Graph representation.<\/p>\n\n<p>Mapped internal pages use the Subgraph associated with their selected Primary Entity.<\/p>\n\n<h4>Saved EntityPool Representations<\/h4>\n\n<p>Posts, pages and public custom post types can alternatively use a saved EntityPool Representation as a Custom Graph.<\/p>\n\n<p>A saved Representation is curated and generated entirely in EntityPool. It defines its Primary Entity and the exact entities and relationships included in its finished JSON-LD projection. WordPress stores only the stable Representation ID and does not rebuild, expand or modify the selected graph.<\/p>\n\n<p>Standard Graph mode retains the existing Full Graph and Primary Entity Subgraph behavior. Custom Graph mode publishes either the selected saved Representation or no EntityPool graph; it never falls back to a broader Full Graph or Subgraph when the selected Representation is unavailable.<\/p>\n\n<p>For the homepage, a Custom Graph is accepted only when its Primary Entity matches the verified root entity of the connected EntityPool graph. This preserves the connected graph's verified website identity.<\/p>\n\n<h4>Connected entity graphs<\/h4>\n\n<p>eeoom GEO uses EntityPool as the source of truth for connected entities and relationships.<\/p>\n\n<p>WordPress does not reconstruct EntityPool graphs. It consumes the graph representations generated by EntityPool and connects them with the corresponding website and page context.<\/p>\n\n<p>This can represent relationships such as:<\/p>\n\n<ul>\n<li>an organization and its founders<\/li>\n<li>a company and its employees<\/li>\n<li>an organization and its locations<\/li>\n<li>a person and their areas of expertise<\/li>\n<li>a business and its products or services<\/li>\n<li>entities and the topics they are relevant for<\/li>\n<li>locations and their geographic relationships<\/li>\n<\/ul>\n\n<p>The exact entity properties and relationships are managed in EntityPool.<\/p>\n\n<h4>Graph caching and performance<\/h4>\n\n<p>EntityPool graph representations are cached persistently in WordPress.<\/p>\n\n<p>eeoom GEO uses a graph-wide semantic revision and HTTP ETag validation to determine whether cached graph data is still current.<\/p>\n\n<p>If the graph has not changed:<\/p>\n\n<ul>\n<li>the cached Full Graph remains valid<\/li>\n<li>existing cached Subgraphs remain valid<\/li>\n<li>graph representations are not downloaded again<\/li>\n<\/ul>\n\n<p>If the graph revision changes:<\/p>\n\n<ul>\n<li>cached representations with the previous revision become stale<\/li>\n<li>only the representation needed for the current page is refreshed<\/li>\n<li>unrelated cached Subgraphs remain stored until they are needed<\/li>\n<\/ul>\n\n<p>This avoids repeatedly downloading every Subgraph on websites with many mapped entities.<\/p>\n\n<p>Saved Custom Graph Representations use a separate graph-bound cache. Each Representation has its own 24-hour validation interval, semantic Representation revision and HTTP ETag. A change to one Representation does not invalidate other cached Representations or the independently cached Representation list.<\/p>\n\n<p>When a saved Representation is due for validation, eeoom GEO sends a conditional request. A 304 response retains the existing local payload. A 200 response replaces it with the current JSON-LD projection. Temporary failures may continue to use an existing good payload, while a confirmed 404 produces no EntityPool output and never falls back to Standard Graph mode.<\/p>\n\n<p>Graph revalidation is request-driven.<\/p>\n\n<p>EntityPool graph synchronization does not depend on:<\/p>\n\n<ul>\n<li>WP-Cron<\/li>\n<li>system cron<\/li>\n<li>external schedulers<\/li>\n<li>background workers<\/li>\n<li>webhooks<\/li>\n<li>loopback requests<\/li>\n<\/ul>\n\n<p>A remote graph validation is performed only when relevant EntityPool data is required and the validation interval has elapsed.<\/p>\n\n<p>Temporary network or service failures do not automatically remove an existing cached graph representation.<\/p>\n\n<h4>Structured data integration<\/h4>\n\n<p>eeoom GEO can integrate its entity layer into supported structured data graphs.<\/p>\n\n<p>The current schema graph integration supports Yoast SEO.<\/p>\n\n<p>When this integration is active, eeoom GEO merges connected entity data into the existing JSON-LD graph instead of producing a competing duplicate entity graph.<\/p>\n\n<p>Existing local entity identifiers are retained where appropriate while EntityPool identifiers and relationships are connected to them.<\/p>\n\n<p>For mapped content, the selected Primary Entity is connected to the page through structured entity references.<\/p>\n\n<p>Yoast SEO is supported but is not bundled with eeoom GEO.<\/p>\n\n<p>eeoom GEO is not affiliated with, endorsed by, or sponsored by Yoast.<\/p>\n\n<h4>Access control<\/h4>\n\n<p>eeoom GEO uses capability-based access control for administrative features.<\/p>\n\n<p>Selected WordPress users can be granted Plugin Admin access to eeoom GEO without requiring unrestricted access to unrelated WordPress administration areas.<\/p>\n\n<p>Sensitive administrative actions such as external service connections, refresh operations and entity mappings use WordPress capability and nonce checks.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The external services used by eeoom GEO are operated by eeoom.<\/p>\n\n<p>They provide server-side GEO analysis and centrally managed entity graph functionality that cannot be performed entirely inside the WordPress plugin.<\/p>\n\n<p>Each service is used only for the features described below.<\/p>\n\n<h4>Source of Trust API<\/h4>\n\n<p>Source of Trust is an eeoom service used for manually initiated GEO readiness, structured data and entity signal checks.<\/p>\n\n<p>A request is made when an authorized WordPress user starts a check for a published public URL.<\/p>\n\n<p>The plugin sends:<\/p>\n\n<ul>\n<li>the selected published public URL<\/li>\n<li>a WordPress HTTP user agent<\/li>\n<\/ul>\n\n<p>The plugin does not send:<\/p>\n\n<ul>\n<li>draft content<\/li>\n<li>private content<\/li>\n<li>preview URLs<\/li>\n<li>WordPress post body content<\/li>\n<li>visitor data<\/li>\n<li>passwords<\/li>\n<li>personal WordPress user data<\/li>\n<\/ul>\n\n<p>Checks may be processed asynchronously.<\/p>\n\n<p>The plugin may receive a check job ID and poll the Source of Trust API for the result of that specific check.<\/p>\n\n<p>Returned results may include:<\/p>\n\n<ul>\n<li>status<\/li>\n<li>score<\/li>\n<li>issues<\/li>\n<li>recommendations<\/li>\n<\/ul>\n\n<p>Results may be stored as WordPress post metadata for the checked content.<\/p>\n\n<p>Service:<\/p>\n\n<ul>\n<li>Source of Trust: https:\/\/sourceoftrust.com\/<\/li>\n<li>API: https:\/\/sourceoftrust.com\/api\/v1\/json-ld-check<\/li>\n<li>Terms of Service: https:\/\/sourceoftrust.com\/en\/terms<\/li>\n<li>Privacy Policy: https:\/\/sourceoftrust.com\/en\/privacy<\/li>\n<\/ul>\n\n<h4>EntityPool<\/h4>\n\n<p>EntityPool is an eeoom service for centrally managed entities, relationships and entity graphs.<\/p>\n\n<p>EntityPool is optional. The integration is activated only when an authorized WordPress user explicitly enters an EntityPool integration key and connects the WordPress site.<\/p>\n\n<p>The integration key is sent to EntityPool as a Bearer credential and stored in the WordPress database so the site can access the graph associated with that key.<\/p>\n\n<p>Depending on the requested operation, the plugin may send:<\/p>\n\n<ul>\n<li>the EntityPool integration key as a Bearer credential<\/li>\n<li>the UID of a selected EntityPool entity as part of an entity-specific API request<\/li>\n<li>standard HTTP request metadata<\/li>\n<\/ul>\n\n<p>The plugin does not send WordPress post body content, visitor data, passwords or WordPress user credentials to EntityPool.<\/p>\n\n<p>EntityPool may return:<\/p>\n\n<ul>\n<li>graph identifiers<\/li>\n<li>graph name<\/li>\n<li>graph revision<\/li>\n<li>root entity information<\/li>\n<li>entity and relationship counts<\/li>\n<li>entities available in the connected graph<\/li>\n<li>Full Graph JSON-LD representations<\/li>\n<li>entity-specific Subgraph JSON-LD representations<\/li>\n<li>available saved Representations and their stable IDs<\/li>\n<li>Representation name, Primary Entity and semantic revision metadata<\/li>\n<li>finished saved Representation JSON-LD projections<\/li>\n<\/ul>\n\n<p>The plugin contacts EntityPool when required for actions such as:<\/p>\n\n<ul>\n<li>connecting an EntityPool graph<\/li>\n<li>manually checking the connection<\/li>\n<li>refreshing the available entity list<\/li>\n<li>refreshing an expired editor entity cache<\/li>\n<li>refreshing the available Representation list<\/li>\n<li>retrieving graph data that is not yet available locally<\/li>\n<li>revalidating the global graph revision<\/li>\n<li>refreshing a Full Graph or Subgraph after a semantic graph change<\/li>\n<li>conditionally revalidating an expired saved Representation using its own ETag<\/li>\n<\/ul>\n\n<p>EntityPool graph data is cached locally in WordPress.<\/p>\n\n<p>Public frontend requests do not contact EntityPool on every page load.<\/p>\n\n<p>A relevant frontend request can trigger a lightweight graph revalidation when EntityPool graph data is needed and the global validation interval has elapsed.<\/p>\n\n<p>If the semantic graph revision has not changed, the existing Full Graph and cached Subgraphs remain valid and are not downloaded again.<\/p>\n\n<p>Saved Representations are cached and revalidated independently. Their cache validity is determined by the semantic revision and ETag of the specific Representation rather than the global graph revision.<\/p>\n\n<p>EntityPool graph synchronization does not require WP-Cron, system cron, background workers or external schedulers.<\/p>\n\n<p>The local Schema &amp; Entity functionality and GEO readiness checks continue to work without EntityPool.<\/p>\n\n<p>Service:<\/p>\n\n<ul>\n<li>EntityPool: https:\/\/entitypool.com\/<\/li>\n<li>Application: https:\/\/entitypool.com\/app\/<\/li>\n<li>Terms of Service: https:\/\/entitypool.com\/terms<\/li>\n<li>Privacy Policy: https:\/\/entitypool.com\/privacy<\/li>\n<li>Imprint: https:\/\/entitypool.com\/imprint<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate eeoom GEO through the WordPress Plugins screen.<\/li>\n<li>Open eeoom GEO in the WordPress admin.<\/li>\n<li>Add strategically important pages under AI Search Monitors.<\/li>\n<li>Run GEO checks from the corresponding check center.<\/li>\n<li>Open Schema &amp; Entity to configure local entity signals.<\/li>\n<li>Optional: Connect an EntityPool graph under Schema &amp; Entity \u2192 EntityPool.<\/li>\n<li>Optional: Map posts, pages and public custom post types to their Primary Entity.<\/li>\n<li>Optional: Select Custom Graph and choose a saved EntityPool Representation for individual content.<\/li>\n<\/ol>\n\n<p>A supported schema integration is required for connected EntityPool graph output on the frontend.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20eeoom%20geo%3F\"><h3>What is eeoom GEO?<\/h3><\/dt>\n<dd><p>eeoom GEO is a Generative Engine Optimization plugin for WordPress.<\/p>\n\n<p>It provides tools for improving and inspecting signals that contribute to AI search understanding and visibility, including AI Search Monitors, GEO readiness checks, entity optimization, Primary Entity mapping and connected entity graphs.<\/p><\/dd>\n<dt id=\"what%20does%20geo%20mean%3F\"><h3>What does GEO mean?<\/h3><\/dt>\n<dd><p>GEO stands for Generative Engine Optimization.<\/p>\n\n<p>It focuses on improving the signals that help generative search and answer systems understand websites, entities, relationships, relevance and context.<\/p><\/dd>\n<dt id=\"what%20are%20ai%20search%20monitors%3F\"><h3>What are AI Search Monitors?<\/h3><\/dt>\n<dd><p>AI Search Monitors are selected WordPress URLs that are strategically important for AI search.<\/p>\n\n<p>Each monitor provides access to a check center where authorized users can run GEO checks and review the latest score, status, issues and recommendations.<\/p><\/dd>\n<dt id=\"are%20ai%20search%20monitor%20checks%20automatic%3F\"><h3>Are AI Search Monitor checks automatic?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Checks are started manually by an authorized WordPress user.<\/p>\n\n<p>If the Source of Trust API processes a check asynchronously, eeoom GEO polls for the result of that specific check.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20my%20wordpress%20content%20to%20the%20checking%20service%3F\"><h3>Does the plugin send my WordPress content to the checking service?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Manual GEO checks send the public URL of the selected published content.<\/p>\n\n<p>Drafts, private posts, preview URLs, WordPress post body content and personal WordPress user data are not submitted.<\/p><\/dd>\n<dt id=\"do%20i%20need%20entitypool%3F\"><h3>Do I need EntityPool?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>AI Search Monitors, GEO checks and local Schema &amp; Entity functionality work without EntityPool.<\/p>\n\n<p>EntityPool adds centrally managed entity graphs, Primary Entity mapping, Full Graph and Subgraph integration and connected entity relationships.<\/p>\n\n<p>It also provides saved Representations that can be selected as explicitly curated Custom Graphs for individual WordPress pages.<\/p><\/dd>\n<dt id=\"what%20is%20a%20primary%20entity%3F\"><h3>What is a Primary Entity?<\/h3><\/dt>\n<dd><p>A Primary Entity is the main real-world entity associated with a WordPress page, post or public custom post type.<\/p>\n\n<p>For example, a page may primarily represent a person, organization, location, product, service or topic.<\/p>\n\n<p>eeoom GEO stores the EntityPool UID with the WordPress content while the entity itself remains managed in EntityPool.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20the%20homepage%20when%20entitypool%20is%20connected%3F\"><h3>What happens on the homepage when EntityPool is connected?<\/h3><\/dt>\n<dd><p>The homepage uses the complete connected EntityPool graph.<\/p>\n\n<p>The root entity can be integrated with the website's existing organization entity so that the structured graph contains one connected representation instead of duplicate definitions.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20a%20mapped%20page%3F\"><h3>What happens on a mapped page?<\/h3><\/dt>\n<dd><p>eeoom GEO retrieves the EntityPool Subgraph associated with the selected Primary Entity.<\/p>\n\n<p>The entity and its relevant relationships are connected with the structured data of the current page.<\/p><\/dd>\n<dt id=\"what%20is%20a%20custom%20graph%3F\"><h3>What is a Custom Graph?<\/h3><\/dt>\n<dd><p>A Custom Graph is a saved EntityPool Representation selected for a specific WordPress post, page or public custom post type.<\/p>\n\n<p>The Representation and its finished JSON-LD projection remain managed in EntityPool. WordPress stores only its stable ID. If the Representation is unavailable, eeoom GEO does not replace it with a broader Standard Graph.<\/p><\/dd>\n<dt id=\"does%20eeoom%20geo%20download%20entitypool%20graph%20data%20on%20every%20request%3F\"><h3>Does eeoom GEO download EntityPool graph data on every request?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Graph data is cached locally.<\/p>\n\n<p>A graph-wide semantic revision is used to determine whether cached Full Graph and Subgraph data is still current.<\/p>\n\n<p>If nothing has changed, existing cached representations remain valid.<\/p>\n\n<p>If the graph changes, only the representation currently required is refreshed.<\/p>\n\n<p>Saved Custom Graph Representations are validated independently. A change to one saved Representation does not invalidate other Representation payloads.<\/p><\/dd>\n<dt id=\"does%20entitypool%20synchronization%20require%20wp-cron%3F\"><h3>Does EntityPool synchronization require WP-Cron?<\/h3><\/dt>\n<dd><p>No.<\/p>\n\n<p>Graph synchronization is request-driven and does not depend on WP-Cron, system cron, background workers, external schedulers, webhooks or loopback requests.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20entitypool%20is%20temporarily%20unavailable%3F\"><h3>What happens if EntityPool is temporarily unavailable?<\/h3><\/dt>\n<dd><p>Existing cached graph data is retained during temporary network and service failures.<\/p>\n\n<p>The plugin does not remove a good cached representation simply because a remote request fails.<\/p><\/dd>\n<dt id=\"which%20structured%20data%20integrations%20are%20supported%3F\"><h3>Which structured data integrations are supported?<\/h3><\/dt>\n<dd><p>The current schema graph integration supports Yoast SEO.<\/p>\n\n<p>When active, eeoom GEO merges its entity layer directly into the existing JSON-LD graph.<\/p>\n\n<p>AI Search Monitors, GEO readiness checks, EntityPool administration, entity caching and Primary Entity mapping are eeoom GEO features and are not dependent on the schema integration.<\/p><\/dd>\n<dt id=\"does%20eeoom%20geo%20create%20a%20second%20json-ld%20graph%3F\"><h3>Does eeoom GEO create a second JSON-LD graph?<\/h3><\/dt>\n<dd><p>With the currently supported schema integration, no.<\/p>\n\n<p>Connected EntityPool data is merged into the existing graph so entities and relationships can be represented without creating competing duplicate definitions.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20clear%20my%20website%20cache%20after%20geo%20or%20entity%20changes%3F\"><h3>Do I need to clear my website cache after GEO or entity changes?<\/h3><\/dt>\n<dd><p>If your website uses full-page caching, CDN caching or server-side HTML caching, previously generated pages may continue to contain an older JSON-LD representation.<\/p>\n\n<p>Clear or purge the relevant page cache when immediate publication of schema changes is required.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Added Standard Graph and Custom Graph modes for posts, pages and public custom post types.<\/li>\n<li>Added selection and manual refresh of saved EntityPool Representations in the WordPress editor.<\/li>\n<li>Added persistent graph-bound caching for finished Representation JSON-LD payloads.<\/li>\n<li>Added per-Representation semantic revision and ETag validation with 304 support.<\/li>\n<li>Added independent 24-hour revalidation, request locks and retry suppression per Representation.<\/li>\n<li>Added fail-closed Custom Graph behavior without fallback to Full Graph or Subgraph.<\/li>\n<li>Added homepage validation requiring the Representation Primary Entity to match the verified graph root.<\/li>\n<li>Added WebPage mainEntity integration for Custom Graphs while preserving Standard Graph semantics.<\/li>\n<li>Improved the shared EntityPool and Yoast merge with local document-context normalization.<\/li>\n<li>Added recursive JSON-LD ID reference rewriting and deterministic WebPage, WebSite and BreadcrumbList deduplication.<\/li>\n<li>Preserved EntityPool resolver IDs as deduplicated sameAs links when real-world entities merge with local IDs.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Redesigned the eeoom GEO administration.<\/li>\n<li>Introduced AI Search Monitors for strategically important URLs.<\/li>\n<li>Improved GEO check workflows and stored result handling.<\/li>\n<li>Expanded Schema &amp; Entity tools for entity-focused GEO optimization.<\/li>\n<li>Added EntityPool graph integration.<\/li>\n<li>Added graph-specific EntityPool connection support.<\/li>\n<li>Added EntityPool graph metadata and connection validation.<\/li>\n<li>Added Primary Entity mapping for posts, pages and public custom post types.<\/li>\n<li>Added manual EntityPool entity refresh in the WordPress editor.<\/li>\n<li>Added persistent EntityPool Full Graph and Subgraph caching.<\/li>\n<li>Added revision- and ETag-based graph validation.<\/li>\n<li>Added request-driven graph revalidation without cron or background workers.<\/li>\n<li>Added stale-cache fallback for temporary EntityPool failures.<\/li>\n<li>Added direct EntityPool integration into supported JSON-LD output.<\/li>\n<li>Added Root Entity integration with the existing website organization.<\/li>\n<li>Added Primary Entity references for mapped content.<\/li>\n<li>Improved capability-based access control and integration security.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New layout.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Improved URL Checks with a cleaner REST API based workflow and server-to-server Source of Trust API communication.<\/li>\n<li>Improved persistent check status handling and stored check results per URL\/page.<\/li>\n<li>Improved the Structured Data Check report and URL Checks overview UI.<\/li>\n<li>Added Plugin Admins with direct eeoom GEO capability assignment for selected users.<\/li>\n<li>Prevented plugin administrators from accidentally removing their own access.<\/li>\n<li>Improved the Settings page structure and responsive layout.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Redesigned the Schema Enhancements settings page for a clearer GEO workflow.<\/li>\n<li>Improved the admin interface for managing Organization schema and entity signals.<\/li>\n<li>Updated the plugin display name to eeoom GEO.<\/li>\n<li>Improved plugin description and readme wording for AI search visibility.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Added Organization schema enhancements for supported schema output.<\/li>\n<li>Added sameAs, hasMap, PostalAddress, areaServed and knowsAbout fields.<\/li>\n<li>Added parentOrganization and subOrganization fields.<\/li>\n<li>Added manual Source of Trust page checks.<\/li>\n<li>Added asynchronous Source of Trust API checks with job ID polling.<\/li>\n<\/ul>","raw_excerpt":"Improve and monitor the signals that contribute to visibility and understanding in AI search.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=325562"}],"author":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/eeoom"}],"wp:attachment":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325562"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325562"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325562"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325562"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325562"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}