[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fwXW7GY1E-qE0Co9JxoRloSFOwrCIcsILpcUkkgTdrXg":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"yebto","YEB.to","https:\u002F\u002Fprofiles.wordpress.org\u002Fyebto\u002F",1,0,100,30,94,"2026-05-20T05:44:07.101Z",[14],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":8,"downloaded":20,"rating":8,"num_ratings":8,"last_updated":21,"tested_up_to":22,"requires_at_least":23,"requires_php":24,"tags":25,"homepage":30,"download_link":31,"security_score":9,"vuln_count":8,"unpatched_count":8,"last_vuln_date":32,"fetched_at":33},"website-analytics-by-yeb","Website Analytics by YEB","1.0.2","\u003Cp>Google Analytics alternative for WordPress: clean stats, interactions, verified bots, UTM, GeoIP, CSV export. Privacy-first.\u003C\u002Fp>\n\u003Ch3>What you get\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>At-a-glance KPIs\u003C\u002Fstrong>: pageviews, sessions, unique visitors, pages per session.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Interactions (sessions)\u003C\u002Fstrong>: session explorer with landing, referrer, per-session timeline (page history), avg. load, distinct pages, pageviews, expand\u002Fcollapse.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content insights\u003C\u002Fstrong>: top URLs, titles, post IDs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Acquisition\u003C\u002Fstrong>: referrers (root domains) and UTM (source\u002Fmedium\u002Fcampaign).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Audience\u003C\u002Fstrong>: countries, regions, cities, languages, common screen sizes.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Tech\u003C\u002Fstrong>: device type, OS, browser.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bots (with verification)\u003C\u002Fstrong>: separate verified search engine hits (Google, Bing, etc.).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Networks\u003C\u002Fstrong>: major networks\u002FISPs and their CIDR ranges.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CSV export\u003C\u002Fstrong>: exports exactly what your current filters show.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SPA-friendly & IPv6-ready\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why people choose it\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Clear and calm\u003C\u002Fstrong>: focused reports, no maze of menus.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Actionable filters\u003C\u002Fstrong>: time window, path, title, country\u002Fcity, referrer, device, OS, browser, language, UTM, bot type.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>You stay in control\u003C\u002Fstrong>: richer info (city, device brand\u002Fmodel, verified bot checks) is optional — enable only what you want.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Setup (optional extras)\u003C\u002Fh3>\n\u003Cp>Want richer details like city\u002Fregion, device brand\u002Fmodel, or verified bot checks?\u003C\u002Fp>\n\u003Col>\n\u003Cli>Sign in at \u003Cstrong>https:\u002F\u002Fyeb.to\u003C\u002Fstrong> and create an API key (free test credits).\u003C\u002Fli>\n\u003Cli>In WordPress, open \u003Cstrong>Analytics (YEB) \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong>, paste your key.\u003C\u002Fli>\n\u003Cli>Toggle the extras you want (Geo, Network\u002FASN, Device details, Bot verification).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Nothing is sent to YEB until you add a key \u003Cstrong>and\u003C\u002Fstrong> turn on a feature — you choose.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Go to \u003Cstrong>Analytics (YEB) \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Dashboard\u003C\u002Fstrong> for your reports.\u003C\u002Fli>\n\u003Cli>Use the tabs to dive into \u003Cstrong>Overview, Interactions, Content, Acquisition, Audience, Tech, Bots, Networks\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Export CSV\u003C\u002Fstrong> to download exactly what you’re viewing.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Shortcode (public mini-stats)\u003C\u002Fh3>\n\u003Cp>Show small, public counters anywhere (pages, posts, widgets, site editor).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Basic:\u003C\u002Fstrong>\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>[waby_visits_stats]                         ; whole site, last 7 days\u003Cbr \u002F>\n[waby_visits_stats period=”30d”]            ; whole site, last 30 days\u003Cbr \u002F>\n[waby_visits_stats period=”1d” bots=”only”] ; bots only, yesterday\u003Cbr \u002F>\n[waby_visits_stats page=”\u002Fpricing”]         ; just \u002Fpricing page, last 7 days\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Auto-detect current page:\u003C\u002Fstrong>\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>[waby_visits_stats current_page]\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If \u003Ccode>page=\"\"\u003C\u002Fcode> isn’t provided, \u003Ccode>current_page\u003C\u002Fcode> uses the current request path.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Show exactly what you want:\u003C\u002Fstrong>\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>[waby_visits_stats show=”visits”]  ; only total visits (pageviews)\u003Cbr \u002F>\n[waby_visits_stats show=”uniques”] ; only unique visitors\u003Cbr \u002F>\n[waby_visits_stats show=”both”]    ; both (default)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Bot filter:\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Ccode>bots=\"exclude\"\u003C\u002Fcode> (default) — show human traffic and unverified bot-like traffic treated as human\u003Cbr \u002F>\n– \u003Ccode>bots=\"only\"\u003C\u002Fcode> — bot traffic only\u003Cbr \u002F>\n– \u003Ccode>bots=\"include\"\u003C\u002Fcode> — include everything\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Labels, layout & CSS hooks (for custom styling):\u003C\u002Fstrong>\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>[waby_visits_stats\u003Cbr \u002F>\ncurrent_page\u003Cbr \u002F>\nshow=”both”\u003Cbr \u002F>\nlabel_visits=”Views”\u003Cbr \u002F>\nlabel_uniques=”Visitors”\u003Cbr \u002F>\nlayout=”inline”      ; inline | stack\u003Cbr \u002F>\nsep=” • ”\u003Cbr \u002F>\nwrap_tag=”div”       ; div | span | p\u003Cbr \u002F>\nitem_tag=”span”      ; span | div\u003Cbr \u002F>\nwrapper_class=”stats stats–mini”\u003Cbr \u002F>\nitem_class=”stats__item”\u003Cbr \u002F>\nlabel_class=”stats__label”\u003Cbr \u002F>\nvalue_class=”stats__value”\u003Cbr \u002F>\n]\u003C\u002Fp>\n\u003Cpre>\u003Ccode>``\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>All attributes:\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Ccode>period\u003C\u002Fcode>: \u003Ccode>1d\u003C\u002Fcode>, \u003Ccode>7d\u003C\u002Fcode> (default), \u003Ccode>30d\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Ccode>page\u003C\u002Fcode>: limit to a path (e.g. \u003Ccode>\u002Fpricing\u003C\u002Fcode>)\u003Cbr \u002F>\n– \u003Ccode>current_page\u003C\u002Fcode>: presence-only flag to use the current URL path\u003Cbr \u002F>\n– \u003Ccode>bots\u003C\u002Fcode>: \u003Ccode>exclude\u003C\u002Fcode> (default), \u003Ccode>only\u003C\u002Fcode>, \u003Ccode>include\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Ccode>show\u003C\u002Fcode>: \u003Ccode>visits\u003C\u002Fcode>, \u003Ccode>uniques\u003C\u002Fcode>, \u003Ccode>both\u003C\u002Fcode> (default)\u003Cbr \u002F>\n– \u003Ccode>label_visits\u003C\u002Fcode> (default \u003Ccode>Visits\u003C\u002Fcode>), \u003Ccode>label_uniques\u003C\u002Fcode> (default \u003Ccode>Unique\u003C\u002Fcode>)\u003Cbr \u002F>\n– \u003Ccode>layout\u003C\u002Fcode>: \u003Ccode>inline\u003C\u002Fcode> (default) or \u003Ccode>stack\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Ccode>sep\u003C\u002Fcode>: separator when \u003Ccode>layout=\"inline\"\u003C\u002Fcode> (default \u003Ccode>|\u003C\u002Fcode>)\u003Cbr \u002F>\n– \u003Ccode>wrap_tag\u003C\u002Fcode>: \u003Ccode>div\u003C\u002Fcode> (default), \u003Ccode>span\u003C\u002Fcode>, \u003Ccode>p\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Ccode>item_tag\u003C\u002Fcode>: \u003Ccode>span\u003C\u002Fcode> (default), \u003Ccode>div\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Ccode>wrapper_class\u003C\u002Fcode>, \u003Ccode>item_class\u003C\u002Fcode>, \u003Ccode>label_class\u003C\u002Fcode>, \u003Ccode>value_class\u003C\u002Fcode>: extra CSS classes\u003C\u002Fp>\n\u003Ch3>Styling the shortcode\u003C\u002Fh3>\n\u003Cp>Paste this CSS into \u003Cstrong>Appearance \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Customize \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Additional CSS\u003C\u002Fstrong> (or your theme stylesheet):\u003Cbr \u002F>\n    `css\u003Cbr \u002F>\n\u002F* YEB Visits – public stats *\u002F\u003Cbr \u002F>\n.yeb-visits-stats {\u003Cbr \u002F>\n  display: inline-flex;\u003Cbr \u002F>\n  gap: .75rem;\u003Cbr \u002F>\n  align-items: baseline;\u003Cbr \u002F>\n  font: 500 14px\u002F1.3 system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n.yeb-visits-stats.yeb–layout-stack {\u003Cbr \u002F>\n  display: inline-grid;\u003Cbr \u002F>\n  gap: .35rem;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n.yeb-visits-stats .yeb-metric {\u003Cbr \u002F>\n  display: inline-flex;\u003Cbr \u002F>\n  gap: .35rem;\u003Cbr \u002F>\n  align-items: baseline;\u003Cbr \u002F>\n  white-space: nowrap;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n.yeb-visits-stats .yeb-metric__label { opacity: .7; }\u003Cbr \u002F>\n.yeb-visits-stats .yeb-metric__value { font-weight: 700; }\u003Cbr \u002F>\n.yeb-visits-stats .yeb-sep { opacity: .35; }\u003Cbr \u002F>\n    “\u003C\u002Fp>\n\u003Ch3>Privacy, Cookies & Data Flow\u003C\u002Fh3>\n\u003Cp>You choose which extras to enable (location, device details, bot verification). IPs are stored in a way that groups them by network (not exact address). You can limit how often extras are called and how much data is kept.\u003C\u002Fp>\n\u003Ch3>External Service & Data Flow (Guideline 6)\u003C\u002Fh3>\n\u003Cp>This plugin can optionally call the YEB API to enrich your local analytics. Nothing is sent to YEB until you add an API key in \u003Cstrong>Analytics (YEB) \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong> and enable the related toggle.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Endpoints (HTTPS):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>GeoIP: \u003Ccode>{base}\u002Fcountry\u003C\u002Fcode>, \u003Ccode>{base}\u002Fcity\u003C\u002Fcode>, \u003Ccode>{base}\u002Fasn\u003C\u002Fcode> (default base: \u003Ccode>https:\u002F\u002Fapi.yeb.to\u002Fv1\u002Fgeoip\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>Device analyze: \u003Ccode>{endpoint}\u003C\u002Fcode> (default: \u003Ccode>https:\u002F\u002Fapi.yeb.to\u002Fv1\u002Fdevice-analyze\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>Bot verification: \u003Ccode>{base}\u003C\u002Fcode> or \u003Ccode>{base}\u002F{vendor}\u003C\u002Fcode> (default base: \u003Ccode>https:\u002F\u002Fapi.yeb.to\u002Fv1\u002Fbot\u002Fdetect\u002Fdetect\u003C\u002Fcode>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>What is sent and when:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>GeoIP Country — IP address; only if API key set and “Country” enabled (purpose: country lookup)\u003C\u002Fli>\n\u003Cli>GeoIP City\u002FRegion — IP address; only if API key set and “Region & City” enabled (purpose: city\u002Fregion)\u003C\u002Fli>\n\u003Cli>ASN\u002FNetwork — IP address; only if API key set and “ASN & Network” enabled (purpose: ASN\u002FCIDR)\u003C\u002Fli>\n\u003Cli>Device analyze — User-Agent; only if API key set and “Parse user-agent strings” enabled (purpose: browser\u002FOS\u002Fdevice parsing, bot type)\u003C\u002Fli>\n\u003Cli>Bot verification — IP + User-Agent; only if API key set and “Bot-Detect” enabled and UA looks like a bot (purpose: verify known crawlers)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All requests use HTTPS. The plugin stores analytics locally; enrichment results are cached locally.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>YEB policies:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Privacy Policy: \u003Ca href=\"https:\u002F\u002Fyeb.to\u002Fprivacy\" rel=\"nofollow ugc\">https:\u002F\u002Fyeb.to\u002Fprivacy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Terms of Service: \u003Ca href=\"https:\u002F\u002Fyeb.to\u002Fterms\" rel=\"nofollow ugc\">https:\u002F\u002Fyeb.to\u002Fterms\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Cookies\u003C\u002Fh3>\n\u003Cp>Two first-party cookies (pseudonymous GUIDs):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>yeb_sid\u003C\u002Fcode> — session id, 30 minutes; groups pageviews into sessions.\u003C\u002Fli>\n\u003Cli>\u003Ccode>yeb_vid\u003C\u002Fcode> — visitor id, 1 year; counts returning unique visitors.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Consent & Opt-Out (Guidelines 7 & 9)\u003C\u002Fh3>\n\u003Cp>By default, the beacon loads for visitors (logged-in admins excluded unless you enable \u003Cstrong>Track logged-in admins\u003C\u002Fstrong>). If your jurisdiction or policy requires consent before placing analytics cookies, gate the beacon with your consent tool.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Example (dequeue until consent):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F**\u003Cbr \u002F>\n * Stop the YEB beacon until a custom consent flag is set.\u003Cbr \u002F>\n * Replace the condition with your CMP’s check.\u003Cbr \u002F>\n *\u002F\u003Cbr \u002F>\nadd_action(‘wp_enqueue_scripts’, function () {\u003Cbr \u002F>\n    $consent_given = isset($_COOKIE[‘my_consent_flag’]) && $_COOKIE[‘my_consent_flag’] === ‘yes’;\u003Cbr \u002F>\n    if ( ! $consent_given ) {\u003Cbr \u002F>\n        wp_dequeue_script(‘waby-visits-beacon’);\u003Cbr \u002F>\n        wp_deregister_script(‘waby-visits-beacon’);\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n}, 100);\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Public REST Endpoint\u003C\u002Fh3>\n\u003Cp>The plugin exposes an intentionally public ingest endpoint used by the front-end beacon:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>POST \u002Fwp-json\u002Fwaby\u002Fv1\u002Fvisit\u003Cbr \u002F>\nAlias: POST \u002Fwp-json\u002Fyeb\u002Fv1\u002Fvisit\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>It accepts sanitized visit metadata (URL, path, referrer, UTM, screen, language, etc.) and stores it in your site’s database. It does not expose private data or modify content.\u003C\u002Fp>\n\u003Ch3>Data Retention & IP Handling\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>A salted hash of the visitor IP is stored to group traffic by network.\u003C\u002Fli>\n\u003Cli>The raw IP is not stored by default. If you enable \u003Cstrong>Store raw IP (packed)\u003C\u002Fstrong>, it is retained only for the number of days you set (default \u003Cstrong>7 days\u003C\u002Fstrong>) and is visible to admins only.\u003C\u002Fli>\n\u003Cli>During enrichment, the raw IP may be encrypted temporarily and then cleared automatically once enrichment is done or after a short fallback window.\u003C\u002Fli>\n\u003Cli>You can limit daily external calls and sampling in \u003Cstrong>Analytics (YEB) \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Uninstall\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>If you enable \u003Cstrong>Delete all data on uninstall\u003C\u002Fstrong> in settings, uninstalling the plugin will remove its custom tables and options.\u003C\u002Fli>\n\u003Cli>Leave it off if you want to keep your analytics data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters & Extensibility\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>waby_visits_stats_output\u003C\u002Fcode> — filter the final HTML of the public stats shortcode.\u003C\u002Fli>\n\u003Cli>\u003Ccode>waby_visits_cache_ttl\u003C\u002Fcode> — filter select-query cache TTL (seconds) used by the dashboard and shortcode.\u003C\u002Fli>\n\u003C\u002Ful>\n","WordPress analytics: pageviews & sessions with interactions, verified bots, GeoIP, CSV export. Privacy-first.",346,"2026-04-13T21:29:00.000Z","6.9.4","6.0","8.0",[26,27,28,29],"analytics","pageviews","statistics","website-analytics","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwebsite-analytics-by-yeb.1.0.2.zip",null,"2026-04-16T10:56:18.058Z"]