{"id":378227,"date":"2026-10-09T14:50:18","date_gmt":"2026-10-09T14:50:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/olymp-tools\/"},"modified":"2026-10-09T16:42:08","modified_gmt":"2026-10-09T16:42:08","slug":"olymp-tools","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/olymp-tools\/","author":23454974,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Olymp Tools","header_author":"olympagency","header_description":"Standalone marketing tools \u2014 Google Reviews shortcodes, local visitor-location shortcodes and an AI-image disclosure marker.","assets_banners_color":"","last_updated":"2026-10-09 16:42:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/olympagency.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":72,"num_ratings":0,"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":"olympagency","date":"2026-10-09 14:50:10","revision":3736909},"1.1.0":{"tag":"1.1.0","author":"olympagency","date":"2026-10-09 16:42:08","revision":3737083}},"upgrade_notice":{"1.1.0":"<p>Adds the Google Tag Manager tool with Consent Mode support for Complianz (disabled by default). Existing tools and settings are unchanged.<\/p>","1.0.0":"<p>First standalone release. Coming from SparkPlus&#039;s bundled Olymp Tools? Install this plugin and update SparkPlus \u2014 your settings are kept.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[262179,223629,4124,21827,23294],"plugin_category":[43,49,55],"plugin_contributors":[258454],"plugin_business_model":[],"class_list":["post-378227","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-disclosure","plugin_tags-consent-mode","plugin_tags-geolocation","plugin_tags-google-reviews","plugin_tags-google-tag-manager","plugin_category-customization","plugin_category-maps-and-location","plugin_category-seo-and-marketing","plugin_contributors-olympagency","plugin_committers-olympagency"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/olymp-tools.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Olymp Tools is a lightweight container for standalone marketing features. Each tool has its own submenu under the <strong>Olymp Tools<\/strong> admin menu. Use as much or as little as you need.<\/p>\n\n<p><strong>Google Reviews<\/strong> \u2014 Display your Google rating and review count anywhere via shortcodes:<\/p>\n\n<ul>\n<li><code>[olymp_google_reviews_average]<\/code> \u2192 average rating, e.g. \"4.6\"<\/li>\n<li><code>[olymp_google_reviews_count]<\/code> \u2192 total review count, e.g. \"128\"<\/li>\n<\/ul>\n\n<p>The values are fetched server-side from the Google Places API and cached; your API key never reaches the browser and the shortcodes keep serving the last known-good numbers if a refresh fails.<\/p>\n\n<p><strong>Visitor Location<\/strong> \u2014 Insert the current visitor's location into your copy for location-personalised marketing (e.g. \"Best offers near [olymp_visitor_city]\"):<\/p>\n\n<ul>\n<li><code>[olymp_visitor_city default=\"...\"]<\/code>, <code>[olymp_visitor_region ...]<\/code>, <code>[olymp_visitor_country ...]<\/code>, <code>[olymp_visitor_country_code ...]<\/code><\/li>\n<li><code>[olymp_visitor_location field=\"city,country\" separator=\", \" default=\"...\"]<\/code><\/li>\n<\/ul>\n\n<p>Lookups are 100% local against a DB-IP Lite City database stored on your server \u2014 the visitor's IP never leaves your site. Rendering is client-side, so it works correctly behind full-page caching.<\/p>\n\n<p><strong>AI-Image Marker<\/strong> \u2014 Mark images as AI-generated and disclose it to visitors with a badge overlaid on every use of the image (transparency obligations such as the EU AI Act):<\/p>\n\n<ul>\n<li>Mark images one by one in the attachment details, in bulk in the Media Library list view (with an \"AI\" column and filter), or automatically on upload.<\/li>\n<li>Configurable text or custom-image badge \u2014 position, size, colors, tooltip, link, exclusion selectors \u2014 with a live preview; optional alt-text disclosure for screen readers.<\/li>\n<\/ul>\n\n<p>The mark is stored with the image in the library \u2014 never baked into the image file \u2014 so the badge is configured once and applies everywhere. Rendering is client-side on the final DOM, so it works with any theme or page builder and behind full-page caching.<\/p>\n\n<p><strong>Google Tag Manager<\/strong> \u2014 Load your Google Tag Manager container and pass the consent visitors give in your cookie banner plugin on to Google Consent Mode v2:<\/p>\n\n<ul>\n<li>Choose the consent source: currently Complianz, or \"None\" if your banner plugin sends Consent Mode itself.<\/li>\n<li>Sends the consent default (everything denied except strictly necessary storage) at the very top of <code>&lt;head&gt;<\/code>, followed by the container.<\/li>\n<li>Applies a returning visitor's stored choice before any Google tag runs \u2014 no race against the load time of the consent banner.<\/li>\n<li>Picks up accepting, rejecting and withdrawing consent on the current page immediately.<\/li>\n<li>No consent logic in the container, no Complianz Script Center entries and no separate GTM plugin needed.<\/li>\n<\/ul>\n\n<p>The consent part only reads the banner plugin's consent cookies in the visitor's browser. Disabled by default.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Olymp Tools connects to three external services, each used by one tool only. Nothing is contacted until you set up and use the tool in question. The AI-Image Marker makes no external connections.<\/p>\n\n<h4>Google Places API (Google Reviews tool)<\/h4>\n\n<p>The Google Reviews tool needs this service to show your business's Google rating and review count via the <code>[olymp_google_reviews_average]<\/code> and <code>[olymp_google_reviews_count]<\/code> shortcodes.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> the Place ID and the Google API key you entered under <strong>Olymp Tools &gt; Google Reviews<\/strong>, along with the standard data of any HTTP request made by your server (its IP address and the WordPress user agent, which contains your site's URL). The request asks only for the <code>rating<\/code> and <code>userRatingCount<\/code> fields. No data about your visitors is sent.<\/li>\n<li><strong>When:<\/strong> only from your server, never from the visitor's browser \u2014 when you save the tool's settings, and when a page with one of the shortcodes (or the tool's settings page) is displayed and the stored values are older than one week. Otherwise the stored values are served without contacting Google.<\/li>\n<li><strong>Endpoint:<\/strong> <code>https:\/\/places.googleapis.com\/v1\/places\/{place_id}<\/code><\/li>\n<li><strong>Provider:<\/strong> Google LLC \u2014 Google Maps Platform, Places API (New)<\/li>\n<li><strong>Terms of service:<\/strong> <a href=\"https:\/\/cloud.google.com\/maps-platform\/terms\">https:\/\/cloud.google.com\/maps-platform\/terms<\/a><\/li>\n<li><strong>Privacy policy:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>DB-IP (Visitor Location tool)<\/h4>\n\n<p>The Visitor Location tool needs the free \"IP to City Lite\" database from DB-IP to resolve a visitor's city, region and country. The plugin downloads this database file to your server (<code>wp-content\/uploads\/olymp-tools\/<\/code>); all lookups then run locally against that file.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> a plain file download request by your server, with the standard data of any HTTP request (your server's IP address and the WordPress user agent, which contains your site's URL). No visitor data and no visitor IP address is ever sent to DB-IP.<\/li>\n<li><strong>When:<\/strong> the first time a page with a Visitor Location shortcode is viewed and no database is present yet, then about every 30 days to refresh it, and whenever you click <strong>Refresh database now<\/strong> under <strong>Olymp Tools &gt; Visitor Location<\/strong>.<\/li>\n<li><strong>Endpoint:<\/strong> <code>https:\/\/download.db-ip.com\/free\/dbip-city-lite-{YYYY-MM}.mmdb.gz<\/code><\/li>\n<li><strong>Provider:<\/strong> DB-IP \u2014 \"IP Geolocation by DB-IP\", database licensed under <a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\">Creative Commons Attribution 4.0<\/a> (<a href=\"https:\/\/db-ip.com\/db\/lite.php\">license details<\/a>)<\/li>\n<li><strong>Terms of service:<\/strong> <a href=\"https:\/\/db-ip.com\/tos.php\">https:\/\/db-ip.com\/tos.php<\/a><\/li>\n<li><strong>Privacy policy:<\/strong> <a href=\"https:\/\/db-ip.com\/privacy.php\">https:\/\/db-ip.com\/privacy.php<\/a><\/li>\n<\/ul>\n\n<h4>Google Tag Manager (Google Tag Manager tool)<\/h4>\n\n<p>The Google Tag Manager tool loads the Google Tag Manager container you configure, so the tags you manage there (e.g. Google Analytics, Google Ads) can run on your site.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> when a page is viewed, the visitor's browser loads the container script from Google, which transmits the standard data of any web request (the visitor's IP address, user agent and the page URL) and your container ID. What the tags inside the container send afterwards depends on how you configure them in Google Tag Manager; Google tags receive the visitor's consent state via Google Consent Mode and respect it.<\/li>\n<li><strong>When:<\/strong> on every page view, only while the tool is enabled and a container ID is entered under <strong>Olymp Tools &gt; Google Tag Manager<\/strong>. Without a container ID, no connection to Google is made.<\/li>\n<li><strong>Endpoints:<\/strong> <code>https:\/\/www.googletagmanager.com\/gtm.js<\/code> (and <code>https:\/\/www.googletagmanager.com\/ns.html<\/code> for visitors without JavaScript)<\/li>\n<li><strong>Provider:<\/strong> Google LLC \u2014 Google Tag Manager<\/li>\n<li><strong>Terms of service:<\/strong> <a href=\"https:\/\/marketingplatform.google.com\/about\/analytics\/tag-manager\/use-policy\/\">https:\/\/marketingplatform.google.com\/about\/analytics\/tag-manager\/use-policy\/<\/a> and <a href=\"https:\/\/policies.google.com\/terms\">https:\/\/policies.google.com\/terms<\/a><\/li>\n<li><strong>Privacy policy:<\/strong> <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>olymp-tools<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open the <strong>Olymp Tools<\/strong> admin menu and configure the tools you want to use.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"i%20used%20olymp%20tools%20inside%20sparkplus%20before.%20do%20i%20lose%20my%20settings%3F\"><h3>I used Olymp Tools inside SparkPlus before. Do I lose my settings?<\/h3><\/dt>\n<dd><p>No. Olymp Tools was previously bundled with SparkPlus (versions 1.1.5 \u2013 1.1.8). The standalone plugin uses exactly the same settings, so your Google Reviews credentials, Visitor Location database and AI-Image Marker settings and marks carry over. While an older SparkPlus with the bundled copy is still active, this plugin stands down and shows a notice \u2014 update SparkPlus to switch over.<\/p><\/dd>\n<dt id=\"how%20do%20the%20google%20reviews%20shortcodes%20work%3F\"><h3>How do the Google Reviews shortcodes work?<\/h3><\/dt>\n<dd><p>Enter a Google Places API key and your business's Place ID under <strong>Olymp Tools &gt; Google Reviews<\/strong>. Then place <code>[olymp_google_reviews_average]<\/code> or <code>[olymp_google_reviews_count]<\/code> anywhere in your content. The values are fetched server-side and cached, so your API key is never exposed and the numbers keep showing even if a refresh temporarily fails.<\/p><\/dd>\n<dt id=\"is%20the%20visitor%20location%20tool%20gdpr-friendly%3F\"><h3>Is the Visitor Location tool GDPR-friendly?<\/h3><\/dt>\n<dd><p>Yes. Visitor Location resolves the visitor's city\/region\/country entirely on your own server using a locally-stored DB-IP Lite City database. The visitor's IP address never leaves your site, and no third-party geolocation API is called at request time. Use shortcodes like <code>[olymp_visitor_city default=\"your area\"]<\/code> for location-personalised copy.<\/p><\/dd>\n<dt id=\"which%20cookie%20banner%20plugins%20does%20the%20google%20tag%20manager%20tool%20support%3F\"><h3>Which cookie banner plugins does the Google Tag Manager tool support?<\/h3><\/dt>\n<dd><p>Currently Complianz; more can be added. Choose the consent source on the tool's page. With \"None\", the tool sends no Consent Mode signals and only loads the container \u2014 use this if your banner plugin sends Google Consent Mode itself; the container is then placed later in <code>&lt;head&gt;<\/code> so that plugin's consent default comes first.<\/p><\/dd>\n<dt id=\"does%20the%20google%20tag%20manager%20tool%20need%20complianz%3F\"><h3>Does the Google Tag Manager tool need Complianz?<\/h3><\/dt>\n<dd><p>Only if Complianz is the selected consent source. Without Complianz the consent default (denied) is still sent first, but visitors cannot give consent: the tool reads the choice from the Complianz cookies. In Complianz, answer \"Yes, but not with one of the above services\" under Wizard \u2192 Consent \u2192 Statistics, so Complianz neither adds its own GTM snippet nor its own Consent Mode. Do not run another GTM plugin at the same time.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New tool: Google Tag Manager. Loads your Google Tag Manager container and passes the consent visitors give in the cookie banner on to Google Consent Mode v2 (consent source selectable: Complianz or none): sends the consent default at the top of <code>&lt;head&gt;<\/code>, applies a returning visitor's stored choice before any Google tag runs, and picks up accepting, rejecting and withdrawing consent on the current page. Disabled by default.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Olymp Tools extracted from SparkPlus into its own plugin. Includes Google Reviews, Visitor Location and AI-Image Marker, unchanged in behaviour; settings are shared with the previously bundled version.<\/li>\n<li>Own text domain <code>olymp-tools<\/code>.<\/li>\n<li>Safe side-by-side operation with SparkPlus 1.1.8 and older: the bundled copy is detected and used instead, with an admin notice to update SparkPlus.<\/li>\n<li>AI-Image Marker: the free-form \"Custom CSS\" setting has been removed; style <code>.olymp-aiimgmark-badge<\/code> via \"Additional CSS\" in the Customizer or Site Editor instead.<\/li>\n<li>Visitor Location: test IPs are previewed through a form on the tool's admin page; the <code>?test_ip=<\/code> override on the front end has been removed.<\/li>\n<\/ul>","raw_excerpt":"Marketing tools: Google Tag Manager with Consent Mode (Complianz), Google Reviews and visitor-location shortcodes, AI-image disclosure.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378227"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/olympagency"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378227"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378227"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378227"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378227"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378227"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}