Plugin Directory

Changeset 3754930


Ignore:
Timestamp:
10/19/2026 02:15:01 PM (33 hours ago)
Author:
zainkhandev001
Message:

Update to version 1.2.4 from GitHub

Location:
rankraft-ai-analytics
Files:
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • rankraft-ai-analytics/tags/1.2.4/includes/class-cache-bypass.php

    r3754869 r3754930  
    3737
    3838    /** Self-test user-agent (also in the bot registry, so the test hit shows up in the dashboard as RankRaft-Test). */
    39     public const TEST_UA = 'RankRaft-Test/1.0 (cache-check; +https://rankraft.ai/docs/integrations/wordpress)';
     39    public const TEST_UA = 'RankRaft-Test/1.0 (cache-check; +https://docs.rankraft.ai/agent-analytics/wordpress/introduction)';
    4040
    4141    /**
  • rankraft-ai-analytics/tags/1.2.4/includes/class-capture.php

    r3754869 r3754930  
    431431            'status' => 200,
    432432            'ip' => self::client_ip() ?? '127.0.0.1',
    433             'user_agent' => 'RankRaft-Test/1.0 (+https://rankraft.ai/docs/integrations/wordpress)',
     433            'user_agent' => 'RankRaft-Test/1.0 (+https://docs.rankraft.ai/agent-analytics/wordpress/introduction)',
    434434        ];
    435435    }
  • rankraft-ai-analytics/tags/1.2.4/rankraft-ai-analytics.php

    r3754869 r3754930  
    22/**
    33 * Plugin Name: RankRaft AI Analytics
    4  * Plugin URI: https://rankraft.ai/docs/integrations/wordpress
     4 * Plugin URI: https://docs.rankraft.ai/agent-analytics/wordpress/introduction
    55 * Description: Sends lightweight server-side request logs to RankRaft so you can see how AI crawlers and AI answer engines interact with your site.
    6  * Version: 1.2.3
     6 * Version: 1.2.4
    77 * Author: RankRaft
    88 * Author URI: https://rankraft.ai
    … …  
    1818}
    1919
    20 define('RANKRAFT_AA_VERSION', '1.2.3');
     20define('RANKRAFT_AA_VERSION', '1.2.4');
    2121define('RANKRAFT_AA_DB_VERSION', '2');
    2222define('RANKRAFT_AA_PLUGIN_DIR', plugin_dir_path(__FILE__));
  • rankraft-ai-analytics/tags/1.2.4/readme.txt

    r3754869 r3754930  
    11=== RankRaft AI Analytics ===
    22Contributors: zainkhandev001
    3 Tags: ai, analytics, crawlers, ai-seo, seo
     3Tags: ai seo, chatgpt, ai crawlers, analytics, geo
    44Requires at least: 6.0
    55Tested up to: 7.1
    6 Stable tag: 1.2.3
     6Stable tag: 1.2.4
    77Requires PHP: 8.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 See how AI crawlers (GPTBot, ClaudeBot, PerplexityBot…) and AI answer engines interact with your WordPress site.
     11See which AI bots read your site and how many visitors ChatGPT, Perplexity, Gemini and other AI assistants send you.
    1212
    1313== Description ==
    1414
    15 RankRaft AI Analytics records every public front-end request server-side and sends it to your RankRaft dashboard, where it is classified into AI crawlers, search bots and visitors referred by AI assistants. Ordinary visitors are only counted, never stored individually.
     15People now ask ChatGPT, Gemini, Perplexity and Google's AI Overviews what to buy, which service to use and who to trust. Those answers are built from websites, and the AI companies send bots to read them.
    1616
    17 = How it works =
     17**RankRaft AI Analytics shows you that hidden side of your traffic**: which AI bots visit your site, which pages they read, whether they are who they claim to be, and how many real people click through to you from an AI answer. Normal analytics tools miss almost all of this, because AI bots don't run JavaScript.
    1818
    19 1. At the end of each public request the plugin writes one small row (path, status, IP, user agent, referrer) to a local queue table. This happens after the page is sent, so visitors never wait.
    20 2. Once a minute a background job sends the queue to RankRaft in batches.
    21 3. If RankRaft cannot be reached, rows are kept and retried with exponential backoff. After repeated failures sending pauses for 30 minutes and resumes automatically.
    22 4. Old unsent rows are cleaned up daily.
     19= What you'll see in your RankRaft dashboard =
    2320
    24 = Privacy =
     21* **Which AI bots visit:** GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot, Bingbot and more, grouped by company and by purpose (training, search, live answers).
     22* **What they read:** your most-read pages and page types — products, blog posts, docs, pricing — so you can see what AI actually learns about you.
     23* **Real or fake:** every bot is checked against the IP ranges its company publishes, so a scraper pretending to be GPTBot is flagged rather than counted.
     24* **Visitors from AI answers:** people who arrive from ChatGPT, Perplexity, Gemini, Claude or Copilot, and the pages they land on.
     25* **Your AI share of traffic:** AI activity next to your ordinary traffic, day by day.
     26* **Problems to fix:** pages AI bots can't reach, and sites that block AI crawlers by accident in robots.txt or a firewall.
    2527
    26 * Admin pages, login, REST API, AJAX, cron and XML-RPC requests are never logged. This is not a setting.
    27 * Query parameters whose names contain `password`, `token`, `key`, `secret`, `card`, `email`… are replaced with `[REDACTED]` before leaving your server. The list is fixed and cannot be switched off.
    28 * No cookies, no JavaScript, nothing is injected into your pages.
    29 * Your site key is stored encrypted (libsodium + WordPress salts) or can be defined in `wp-config.php` and never stored in the database.
    30 * Visitor IPs are used by RankRaft to verify crawlers against published IP ranges and are stored only as salted hashes.
     28RankRaft also tracks how AI assistants talk about your brand — whether ChatGPT, Gemini and Google's AI answers mention you, how you compare with competitors, and which sites they cite — with recommendations on what to do next. This plugin is the piece that connects your WordPress site to it.
     29
     30= Why a plugin and not a tracking script? =
     31
     32AI bots don't run JavaScript, so tracking scripts never see them. This plugin notes each visit on your server instead — the only place bot visits can be seen — and it works even when your pages are served from a cache.
     33
     34= Simple to set up =
     35
     361. Install and activate the plugin.
     372. Paste the site key from your RankRaft dashboard.
     383. Click **Test connection**. That's it — data appears in your dashboard within a minute.
     39
     40= Private by design =
     41
     42* Nothing is sent until you add a site key and switch it on, and you can switch it off at any time.
     43* Admin pages, logins, checkouts, carts and account pages are never recorded — this cannot be turned off.
     44* Passwords, tokens, email addresses and similar values in links are blanked out before anything leaves your site.
     45* No cookies, no JavaScript and nothing added to your pages. Your visitors see no difference.
     46* Visitor IP addresses are used only to check that bots are genuine and are stored as one-way hashes.
     47
     48= Fast =
     49
     50Visits are noted after the page has been sent, so visitors never wait. The data goes to RankRaft in small batches in the background about once a minute. If RankRaft can't be reached, nothing is lost: the plugin keeps the data and sends it later.
     51
     52= You'll need a RankRaft account =
     53
     54The plugin sends data to RankRaft, where your reports live. [Start a free 7-day trial](https://app.rankraft.ai/signup) — no credit card needed.
     55
     56= Documentation =
     57
     58Setup, caching, privacy and troubleshooting guides: [RankRaft WordPress plugin docs](https://docs.rankraft.ai/agent-analytics/wordpress/introduction).
    3159
    3260== External services ==
    3361
    34 This plugin sends data to **RankRaft** (https://rankraft.ai), the analytics service it is built for. Nothing is sent until you enter a site key in *Settings → RankRaft AI* and test the connection — a successful test confirms the key and switches request logging on, and the **Enable request logging** tick box on the same screen turns it off again at any time. Freshly activated and unconfigured the plugin is inert: it makes no network request and changes nothing on your server.
     62This plugin sends data to **RankRaft** (https://rankraft.ai), the analytics service it is built for. Nothing is sent until you enter a site key in *Settings → RankRaft AI* and test the connection. A successful test confirms the key and switches request logging on; the **Enable request logging** tick box on the same screen turns it off again at any time. Freshly activated and not yet set up, the plugin does nothing: it makes no network requests and changes nothing on your server.
    3563
    36 * **What is sent:** for each public front-end request — timestamp, hostname, path, HTTP method, response status, response size, the visitor's IP address, User-Agent and the referring page's address (without its query string), and the query string with sensitive parameters redacted. No cookies, form data, page content or logged-in user data.
    37 * **When:** batched and sent about once a minute from your server to `https://ingest.rankraft.ai`. The address is fixed and cannot be changed. The *Test connection* and *Send test event* buttons and the *Check cache bypass* self-test also contact the service.
    38 * **Why:** RankRaft classifies the requests into AI crawlers, search engines and visitors referred by AI assistants, verifies crawler identities against the providers' published IP ranges, and shows the results in your dashboard. IP addresses are used for that verification and stored only as salted hashes.
     64* **What is sent:** for each public page request — the time, hostname, path, HTTP method, response status and size, the visitor's IP address and browser identification (User-Agent), the address of the referring page without its query string, and the page's query string with sensitive values blanked out. No cookies, form data, page content or information about logged-in users.
     65* **When:** in batches, about once a minute, from your server to `https://ingest.rankraft.ai`. The *Test connection*, *Send test event* and *Check cache bypass* buttons also contact the service.
     66* **Why:** RankRaft sorts the requests into AI bots, search engines and visitors referred by AI assistants, checks bots against the IP ranges their companies publish, and shows the results in your dashboard. IP addresses are used for that check and stored only as salted hashes.
    3967* **Terms of service:** https://rankraft.ai/terms
    4068* **Privacy policy:** https://rankraft.ai/privacy
    … …  
    4270== Installation ==
    4371
    44 1. Upload the `rankraft-ai-analytics` folder to `/wp-content/plugins/` and activate it, or install the zip from the RankRaft dashboard.
    45 2. Go to **Settings → RankRaft AI** and paste the site key from your RankRaft dashboard (Site → Setup).
    46 3. Click **Test connection**. You should see "Connected to <your site>"; the key is saved and request logging switches on by itself. Untick **Enable request logging** whenever you want it to stop.
    47 4. Optionally click **Send test event**; it appears in the Logs tab of your dashboard within a minute.
     721. In WordPress, go to **Plugins → Add New**, search for **RankRaft AI**, then click **Install Now** and **Activate**.
     732. Go to **Settings → RankRaft AI** and paste the site key from your RankRaft dashboard (your site → Integrations).
     743. Click **Test connection**. You should see "Connected to" your site's name; the key is saved and logging switches on.
     754. Optional: click **Send test event**. It appears in your dashboard within a minute.
    4876
    49 For production sites we recommend keeping the key out of the database:
     77Developers can keep the key out of the database by adding it to `wp-config.php` instead:
    5078
    5179`define('RANKRAFT_SITE_KEY', 'rr_live_…');`
    5280
     81Step-by-step guide with screenshots: [docs.rankraft.ai](https://docs.rankraft.ai/agent-analytics/wordpress/introduction).
     82
    5383== Frequently Asked Questions ==
    5484
    55 = Will this slow down my site? =
     85= Do I need a RankRaft account? =
    5686
    57 No. Logging runs after the response is sent and costs a single database insert. Sending happens in the background via WP-cron.
     87Yes. The plugin collects the data; your reports are in the RankRaft dashboard. You can [try RankRaft free for 7 days](https://app.rankraft.ai/signup), no credit card needed.
    5888
    59 = My site uses a CDN or a full-page cache. Will crawlers be logged? =
     89= Why can't Google Analytics show me AI bots? =
    6090
    61 Yes for WordPress page caches. The plugin writes a small rule to .htaccess so AI and search crawlers skip FlyingPress, WP Rocket, LiteSpeed Cache, WP Super Cache and LiteSpeed's server cache and reach PHP; visitors still get cached pages. Use "Check cache bypass" on the Status tab to confirm. Caches that sit in front of your server (Cloudflare, a CDN, some managed hosts on Nginx) cannot be bypassed from WordPress — for those, add the RankRaft Cloudflare integration, which sees every request.
     91Google Analytics and similar tools count visits by running JavaScript in a browser. AI bots read your pages without running JavaScript, so those tools never see them. This plugin notes visits on your server, where every request arrives.
    6292
    63 = WP-cron is disabled on my host. =
     93= Will it slow down my site? =
    6494
    65 Point a system cron at `wp-cron.php` every minute. The Status tab shows the exact command.
     95No. Each visit is noted after the page has already been sent to the visitor, and data is sent in the background about once a minute.
     96
     97= Does it work with caching plugins? =
     98
     99Yes. With WP Rocket, FlyingPress, LiteSpeed Cache or WP Super Cache, the plugin makes sure AI bots still reach WordPress so their visits are counted, while your visitors keep getting fast cached pages. Use **Check cache bypass** on the Status tab to confirm it's working. If a service in front of your site (such as Cloudflare or your host's own cache) answers before WordPress does, connect the RankRaft Cloudflare integration instead — it sees every visit.
     100
     101= What data is collected? Is it GDPR-friendly? =
     102
     103Only technical details of each public page request: the page address, time, response status, browser identification, the referring page and the visitor's IP address. Logged-in areas, checkouts and account pages are never recorded, sensitive values in links are blanked out, and IP addresses are stored only as one-way hashes. No cookies are set. The plugin also adds suggested wording to WordPress's privacy policy guide (*Settings → Privacy*). See the External services section for the full list.
     104
     105= Can I stop some pages being recorded? =
     106
     107Yes. On the Privacy tab, list any extra paths you never want recorded, for example a members area. Admin, login, checkout, cart and account pages are always excluded.
    66108
    67109= What happens if RankRaft is down? =
    68110
    69 Logs queue locally (up to 100,000 rows) and are sent when the service is back. Nothing is lost for up to 7 days.
     111Nothing is lost. The plugin keeps the data on your site and sends it when RankRaft is back, for up to seven days.
    70112
    71 = What happens if my RankRaft subscription lapses? =
     113= What happens if my RankRaft subscription ends? =
    72114
    73 RankRaft tells the plugin, which pauses logging (nothing is queued or sent) and shows a notice in wp-admin with a link to update billing. Once billing is fixed, RankRaft notifies the plugin through a signed request to `/wp-json/rankraft-aa/v1/resume` and logging resumes by itself; anything still queued is sent. "Test connection" on the Status tab re-checks immediately.
     115The plugin pauses — nothing is recorded or sent — and shows a notice in your WordPress admin. When billing is sorted out it resumes by itself.
     116
     117= WP-Cron is disabled on my host. =
     118
     119Point a server cron job at `wp-cron.php` every minute. The Status tab shows the exact command.
    74120
    75121= Does it work on multisite? =
    76122
    77 Each site in the network is configured separately with its own site key.
     123Yes. Each site in the network is set up separately with its own site key.
    78124
    79125== Screenshots ==
    … …  
    811271. Settings → RankRaft AI: the whole General tab — site key, logging toggle and the crawler cache-bypass option.
    821282. Privacy tab: exactly what is sent, the redaction list that cannot be switched off, and optional extra paths to exclude.
     1293. Status tab: delivery health, queue depth, last send and the next scheduled run.
    83130
    84131== Changelog ==
    85132
     133= 1.2.4 =
     134* The plugin's links now point to its documentation at docs.rankraft.ai.
     135* A clearer description in the plugin directory.
     136
    86137= 1.2.3 =
    87 * Security: the visitor's address is now taken from a proxy header only when the request came from a proxy the plugin can name — Cloudflare's published ranges, a proxy on the host or local network, or one added through the new `rankraft_aa_trusted_proxies` filter (an array of IPs or CIDR blocks). Before, any visitor could set `CF-Connecting-IP` or `X-Forwarded-For` themselves and be recorded, and verified, as a crawler from that address. Sites behind another CDN or load balancer should add its addresses through the filter.
    88 * Privacy: the referring page is sent without its query string or fragment, so a link clicked from a page carrying a token (a password-reset link, an order confirmation) no longer ships that token.
    89 * Fixed: a resume push from RankRaft can no longer be replayed inside its five-minute window.
    90 * Fixed: a `429 Too Many Requests` from the ingest API keeps the batch for retry instead of deleting it.
    91 * Fixed: the cache-bypass rule now leaves real directories alone, and on an https site it waits for the site's own http→https redirect rather than catching the request first.
    92 * Fixed: unticking "manage .htaccess" or disabling logging removes the cache-bypass block instead of leaving it in place.
    93 * Fixed: the queue cap is checked against a fresh count when the cached size has lapsed; cron is no longer spawned from a visitor's request under `ALTERNATE_WP_CRON`.
    94 * Changed: with no `AUTH_KEY`/`SECURE_AUTH_KEY` in wp-config.php the site key is stored as typed rather than under a key derived from the install time, which was no protection.
     138* Security: bot visits can no longer be faked by a visitor sending a made-up proxy header. The visitor's address is read from a proxy header only when the request came through a proxy the plugin trusts — Cloudflare, your host or local network, or addresses you add with the `rankraft_aa_trusted_proxies` filter. Sites behind another CDN or load balancer should add its addresses there.
     139* Privacy: the referring page is now sent without its query string, so private links (such as password-reset or order-confirmation pages) are never passed on.
     140* Fixed: data is kept and retried, not dropped, when RankRaft asks the plugin to slow down.
     141* Fixed: the cache-bypass rule no longer affects real folders on your server, and works with the site's own http→https redirect.
     142* Fixed: turning off logging now removes the cache-bypass rule from .htaccess.
     143* Other small reliability and security fixes.
    95144
    96145= 1.2.2 =
    97 * Fixed: a backslash in the query string or request path was being removed from requests that came through the cache-bypass rule. 1.2.1 added `wp_unslash()` to those two `$_SERVER` reads, but they run on `plugins_loaded`, before WordPress slashes `$_SERVER` in `wp_magic_quotes()` — so there was nothing to unslash and real backslashes were stripped instead.
     146* Fixed: backslashes in page addresses were being removed from some recorded requests.
    98147
    99148= 1.2.1 =
  • rankraft-ai-analytics/trunk/includes/class-cache-bypass.php

    r3754869 r3754930  
    3737
    3838    /** Self-test user-agent (also in the bot registry, so the test hit shows up in the dashboard as RankRaft-Test). */
    39     public const TEST_UA = 'RankRaft-Test/1.0 (cache-check; +https://rankraft.ai/docs/integrations/wordpress)';
     39    public const TEST_UA = 'RankRaft-Test/1.0 (cache-check; +https://docs.rankraft.ai/agent-analytics/wordpress/introduction)';
    4040
    4141    /**
  • rankraft-ai-analytics/trunk/includes/class-capture.php

    r3754869 r3754930  
    431431            'status' => 200,
    432432            'ip' => self::client_ip() ?? '127.0.0.1',
    433             'user_agent' => 'RankRaft-Test/1.0 (+https://rankraft.ai/docs/integrations/wordpress)',
     433            'user_agent' => 'RankRaft-Test/1.0 (+https://docs.rankraft.ai/agent-analytics/wordpress/introduction)',
    434434        ];
    435435    }
  • rankraft-ai-analytics/trunk/rankraft-ai-analytics.php

    r3754869 r3754930  
    22/**
    33 * Plugin Name: RankRaft AI Analytics
    4  * Plugin URI: https://rankraft.ai/docs/integrations/wordpress
     4 * Plugin URI: https://docs.rankraft.ai/agent-analytics/wordpress/introduction
    55 * Description: Sends lightweight server-side request logs to RankRaft so you can see how AI crawlers and AI answer engines interact with your site.
    6  * Version: 1.2.3
     6 * Version: 1.2.4
    77 * Author: RankRaft
    88 * Author URI: https://rankraft.ai
    … …  
    1818}
    1919
    20 define('RANKRAFT_AA_VERSION', '1.2.3');
     20define('RANKRAFT_AA_VERSION', '1.2.4');
    2121define('RANKRAFT_AA_DB_VERSION', '2');
    2222define('RANKRAFT_AA_PLUGIN_DIR', plugin_dir_path(__FILE__));
  • rankraft-ai-analytics/trunk/readme.txt

    r3754869 r3754930  
    11=== RankRaft AI Analytics ===
    22Contributors: zainkhandev001
    3 Tags: ai, analytics, crawlers, ai-seo, seo
     3Tags: ai seo, chatgpt, ai crawlers, analytics, geo
    44Requires at least: 6.0
    55Tested up to: 7.1
    6 Stable tag: 1.2.3
     6Stable tag: 1.2.4
    77Requires PHP: 8.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 See how AI crawlers (GPTBot, ClaudeBot, PerplexityBot…) and AI answer engines interact with your WordPress site.
     11See which AI bots read your site and how many visitors ChatGPT, Perplexity, Gemini and other AI assistants send you.
    1212
    1313== Description ==
    1414
    15 RankRaft AI Analytics records every public front-end request server-side and sends it to your RankRaft dashboard, where it is classified into AI crawlers, search bots and visitors referred by AI assistants. Ordinary visitors are only counted, never stored individually.
     15People now ask ChatGPT, Gemini, Perplexity and Google's AI Overviews what to buy, which service to use and who to trust. Those answers are built from websites, and the AI companies send bots to read them.
    1616
    17 = How it works =
     17**RankRaft AI Analytics shows you that hidden side of your traffic**: which AI bots visit your site, which pages they read, whether they are who they claim to be, and how many real people click through to you from an AI answer. Normal analytics tools miss almost all of this, because AI bots don't run JavaScript.
    1818
    19 1. At the end of each public request the plugin writes one small row (path, status, IP, user agent, referrer) to a local queue table. This happens after the page is sent, so visitors never wait.
    20 2. Once a minute a background job sends the queue to RankRaft in batches.
    21 3. If RankRaft cannot be reached, rows are kept and retried with exponential backoff. After repeated failures sending pauses for 30 minutes and resumes automatically.
    22 4. Old unsent rows are cleaned up daily.
     19= What you'll see in your RankRaft dashboard =
    2320
    24 = Privacy =
     21* **Which AI bots visit:** GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot, Bingbot and more, grouped by company and by purpose (training, search, live answers).
     22* **What they read:** your most-read pages and page types — products, blog posts, docs, pricing — so you can see what AI actually learns about you.
     23* **Real or fake:** every bot is checked against the IP ranges its company publishes, so a scraper pretending to be GPTBot is flagged rather than counted.
     24* **Visitors from AI answers:** people who arrive from ChatGPT, Perplexity, Gemini, Claude or Copilot, and the pages they land on.
     25* **Your AI share of traffic:** AI activity next to your ordinary traffic, day by day.
     26* **Problems to fix:** pages AI bots can't reach, and sites that block AI crawlers by accident in robots.txt or a firewall.
    2527
    26 * Admin pages, login, REST API, AJAX, cron and XML-RPC requests are never logged. This is not a setting.
    27 * Query parameters whose names contain `password`, `token`, `key`, `secret`, `card`, `email`… are replaced with `[REDACTED]` before leaving your server. The list is fixed and cannot be switched off.
    28 * No cookies, no JavaScript, nothing is injected into your pages.
    29 * Your site key is stored encrypted (libsodium + WordPress salts) or can be defined in `wp-config.php` and never stored in the database.
    30 * Visitor IPs are used by RankRaft to verify crawlers against published IP ranges and are stored only as salted hashes.
     28RankRaft also tracks how AI assistants talk about your brand — whether ChatGPT, Gemini and Google's AI answers mention you, how you compare with competitors, and which sites they cite — with recommendations on what to do next. This plugin is the piece that connects your WordPress site to it.
     29
     30= Why a plugin and not a tracking script? =
     31
     32AI bots don't run JavaScript, so tracking scripts never see them. This plugin notes each visit on your server instead — the only place bot visits can be seen — and it works even when your pages are served from a cache.
     33
     34= Simple to set up =
     35
     361. Install and activate the plugin.
     372. Paste the site key from your RankRaft dashboard.
     383. Click **Test connection**. That's it — data appears in your dashboard within a minute.
     39
     40= Private by design =
     41
     42* Nothing is sent until you add a site key and switch it on, and you can switch it off at any time.
     43* Admin pages, logins, checkouts, carts and account pages are never recorded — this cannot be turned off.
     44* Passwords, tokens, email addresses and similar values in links are blanked out before anything leaves your site.
     45* No cookies, no JavaScript and nothing added to your pages. Your visitors see no difference.
     46* Visitor IP addresses are used only to check that bots are genuine and are stored as one-way hashes.
     47
     48= Fast =
     49
     50Visits are noted after the page has been sent, so visitors never wait. The data goes to RankRaft in small batches in the background about once a minute. If RankRaft can't be reached, nothing is lost: the plugin keeps the data and sends it later.
     51
     52= You'll need a RankRaft account =
     53
     54The plugin sends data to RankRaft, where your reports live. [Start a free 7-day trial](https://app.rankraft.ai/signup) — no credit card needed.
     55
     56= Documentation =
     57
     58Setup, caching, privacy and troubleshooting guides: [RankRaft WordPress plugin docs](https://docs.rankraft.ai/agent-analytics/wordpress/introduction).
    3159
    3260== External services ==
    3361
    34 This plugin sends data to **RankRaft** (https://rankraft.ai), the analytics service it is built for. Nothing is sent until you enter a site key in *Settings → RankRaft AI* and test the connection — a successful test confirms the key and switches request logging on, and the **Enable request logging** tick box on the same screen turns it off again at any time. Freshly activated and unconfigured the plugin is inert: it makes no network request and changes nothing on your server.
     62This plugin sends data to **RankRaft** (https://rankraft.ai), the analytics service it is built for. Nothing is sent until you enter a site key in *Settings → RankRaft AI* and test the connection. A successful test confirms the key and switches request logging on; the **Enable request logging** tick box on the same screen turns it off again at any time. Freshly activated and not yet set up, the plugin does nothing: it makes no network requests and changes nothing on your server.
    3563
    36 * **What is sent:** for each public front-end request — timestamp, hostname, path, HTTP method, response status, response size, the visitor's IP address, User-Agent and the referring page's address (without its query string), and the query string with sensitive parameters redacted. No cookies, form data, page content or logged-in user data.
    37 * **When:** batched and sent about once a minute from your server to `https://ingest.rankraft.ai`. The address is fixed and cannot be changed. The *Test connection* and *Send test event* buttons and the *Check cache bypass* self-test also contact the service.
    38 * **Why:** RankRaft classifies the requests into AI crawlers, search engines and visitors referred by AI assistants, verifies crawler identities against the providers' published IP ranges, and shows the results in your dashboard. IP addresses are used for that verification and stored only as salted hashes.
     64* **What is sent:** for each public page request — the time, hostname, path, HTTP method, response status and size, the visitor's IP address and browser identification (User-Agent), the address of the referring page without its query string, and the page's query string with sensitive values blanked out. No cookies, form data, page content or information about logged-in users.
     65* **When:** in batches, about once a minute, from your server to `https://ingest.rankraft.ai`. The *Test connection*, *Send test event* and *Check cache bypass* buttons also contact the service.
     66* **Why:** RankRaft sorts the requests into AI bots, search engines and visitors referred by AI assistants, checks bots against the IP ranges their companies publish, and shows the results in your dashboard. IP addresses are used for that check and stored only as salted hashes.
    3967* **Terms of service:** https://rankraft.ai/terms
    4068* **Privacy policy:** https://rankraft.ai/privacy
    … …  
    4270== Installation ==
    4371
    44 1. Upload the `rankraft-ai-analytics` folder to `/wp-content/plugins/` and activate it, or install the zip from the RankRaft dashboard.
    45 2. Go to **Settings → RankRaft AI** and paste the site key from your RankRaft dashboard (Site → Setup).
    46 3. Click **Test connection**. You should see "Connected to <your site>"; the key is saved and request logging switches on by itself. Untick **Enable request logging** whenever you want it to stop.
    47 4. Optionally click **Send test event**; it appears in the Logs tab of your dashboard within a minute.
     721. In WordPress, go to **Plugins → Add New**, search for **RankRaft AI**, then click **Install Now** and **Activate**.
     732. Go to **Settings → RankRaft AI** and paste the site key from your RankRaft dashboard (your site → Integrations).
     743. Click **Test connection**. You should see "Connected to" your site's name; the key is saved and logging switches on.
     754. Optional: click **Send test event**. It appears in your dashboard within a minute.
    4876
    49 For production sites we recommend keeping the key out of the database:
     77Developers can keep the key out of the database by adding it to `wp-config.php` instead:
    5078
    5179`define('RANKRAFT_SITE_KEY', 'rr_live_…');`
    5280
     81Step-by-step guide with screenshots: [docs.rankraft.ai](https://docs.rankraft.ai/agent-analytics/wordpress/introduction).
     82
    5383== Frequently Asked Questions ==
    5484
    55 = Will this slow down my site? =
     85= Do I need a RankRaft account? =
    5686
    57 No. Logging runs after the response is sent and costs a single database insert. Sending happens in the background via WP-cron.
     87Yes. The plugin collects the data; your reports are in the RankRaft dashboard. You can [try RankRaft free for 7 days](https://app.rankraft.ai/signup), no credit card needed.
    5888
    59 = My site uses a CDN or a full-page cache. Will crawlers be logged? =
     89= Why can't Google Analytics show me AI bots? =
    6090
    61 Yes for WordPress page caches. The plugin writes a small rule to .htaccess so AI and search crawlers skip FlyingPress, WP Rocket, LiteSpeed Cache, WP Super Cache and LiteSpeed's server cache and reach PHP; visitors still get cached pages. Use "Check cache bypass" on the Status tab to confirm. Caches that sit in front of your server (Cloudflare, a CDN, some managed hosts on Nginx) cannot be bypassed from WordPress — for those, add the RankRaft Cloudflare integration, which sees every request.
     91Google Analytics and similar tools count visits by running JavaScript in a browser. AI bots read your pages without running JavaScript, so those tools never see them. This plugin notes visits on your server, where every request arrives.
    6292
    63 = WP-cron is disabled on my host. =
     93= Will it slow down my site? =
    6494
    65 Point a system cron at `wp-cron.php` every minute. The Status tab shows the exact command.
     95No. Each visit is noted after the page has already been sent to the visitor, and data is sent in the background about once a minute.
     96
     97= Does it work with caching plugins? =
     98
     99Yes. With WP Rocket, FlyingPress, LiteSpeed Cache or WP Super Cache, the plugin makes sure AI bots still reach WordPress so their visits are counted, while your visitors keep getting fast cached pages. Use **Check cache bypass** on the Status tab to confirm it's working. If a service in front of your site (such as Cloudflare or your host's own cache) answers before WordPress does, connect the RankRaft Cloudflare integration instead — it sees every visit.
     100
     101= What data is collected? Is it GDPR-friendly? =
     102
     103Only technical details of each public page request: the page address, time, response status, browser identification, the referring page and the visitor's IP address. Logged-in areas, checkouts and account pages are never recorded, sensitive values in links are blanked out, and IP addresses are stored only as one-way hashes. No cookies are set. The plugin also adds suggested wording to WordPress's privacy policy guide (*Settings → Privacy*). See the External services section for the full list.
     104
     105= Can I stop some pages being recorded? =
     106
     107Yes. On the Privacy tab, list any extra paths you never want recorded, for example a members area. Admin, login, checkout, cart and account pages are always excluded.
    66108
    67109= What happens if RankRaft is down? =
    68110
    69 Logs queue locally (up to 100,000 rows) and are sent when the service is back. Nothing is lost for up to 7 days.
     111Nothing is lost. The plugin keeps the data on your site and sends it when RankRaft is back, for up to seven days.
    70112
    71 = What happens if my RankRaft subscription lapses? =
     113= What happens if my RankRaft subscription ends? =
    72114
    73 RankRaft tells the plugin, which pauses logging (nothing is queued or sent) and shows a notice in wp-admin with a link to update billing. Once billing is fixed, RankRaft notifies the plugin through a signed request to `/wp-json/rankraft-aa/v1/resume` and logging resumes by itself; anything still queued is sent. "Test connection" on the Status tab re-checks immediately.
     115The plugin pauses — nothing is recorded or sent — and shows a notice in your WordPress admin. When billing is sorted out it resumes by itself.
     116
     117= WP-Cron is disabled on my host. =
     118
     119Point a server cron job at `wp-cron.php` every minute. The Status tab shows the exact command.
    74120
    75121= Does it work on multisite? =
    76122
    77 Each site in the network is configured separately with its own site key.
     123Yes. Each site in the network is set up separately with its own site key.
    78124
    79125== Screenshots ==
    … …  
    811271. Settings → RankRaft AI: the whole General tab — site key, logging toggle and the crawler cache-bypass option.
    821282. Privacy tab: exactly what is sent, the redaction list that cannot be switched off, and optional extra paths to exclude.
     1293. Status tab: delivery health, queue depth, last send and the next scheduled run.
    83130
    84131== Changelog ==
    85132
     133= 1.2.4 =
     134* The plugin's links now point to its documentation at docs.rankraft.ai.
     135* A clearer description in the plugin directory.
     136
    86137= 1.2.3 =
    87 * Security: the visitor's address is now taken from a proxy header only when the request came from a proxy the plugin can name — Cloudflare's published ranges, a proxy on the host or local network, or one added through the new `rankraft_aa_trusted_proxies` filter (an array of IPs or CIDR blocks). Before, any visitor could set `CF-Connecting-IP` or `X-Forwarded-For` themselves and be recorded, and verified, as a crawler from that address. Sites behind another CDN or load balancer should add its addresses through the filter.
    88 * Privacy: the referring page is sent without its query string or fragment, so a link clicked from a page carrying a token (a password-reset link, an order confirmation) no longer ships that token.
    89 * Fixed: a resume push from RankRaft can no longer be replayed inside its five-minute window.
    90 * Fixed: a `429 Too Many Requests` from the ingest API keeps the batch for retry instead of deleting it.
    91 * Fixed: the cache-bypass rule now leaves real directories alone, and on an https site it waits for the site's own http→https redirect rather than catching the request first.
    92 * Fixed: unticking "manage .htaccess" or disabling logging removes the cache-bypass block instead of leaving it in place.
    93 * Fixed: the queue cap is checked against a fresh count when the cached size has lapsed; cron is no longer spawned from a visitor's request under `ALTERNATE_WP_CRON`.
    94 * Changed: with no `AUTH_KEY`/`SECURE_AUTH_KEY` in wp-config.php the site key is stored as typed rather than under a key derived from the install time, which was no protection.
     138* Security: bot visits can no longer be faked by a visitor sending a made-up proxy header. The visitor's address is read from a proxy header only when the request came through a proxy the plugin trusts — Cloudflare, your host or local network, or addresses you add with the `rankraft_aa_trusted_proxies` filter. Sites behind another CDN or load balancer should add its addresses there.
     139* Privacy: the referring page is now sent without its query string, so private links (such as password-reset or order-confirmation pages) are never passed on.
     140* Fixed: data is kept and retried, not dropped, when RankRaft asks the plugin to slow down.
     141* Fixed: the cache-bypass rule no longer affects real folders on your server, and works with the site's own http→https redirect.
     142* Fixed: turning off logging now removes the cache-bypass rule from .htaccess.
     143* Other small reliability and security fixes.
    95144
    96145= 1.2.2 =
    97 * Fixed: a backslash in the query string or request path was being removed from requests that came through the cache-bypass rule. 1.2.1 added `wp_unslash()` to those two `$_SERVER` reads, but they run on `plugins_loaded`, before WordPress slashes `$_SERVER` in `wp_magic_quotes()` — so there was nothing to unslash and real backslashes were stripped instead.
     146* Fixed: backslashes in page addresses were being removed from some recorded requests.
    98147
    99148= 1.2.1 =
Note: See TracChangeset for help on using the changeset viewer.