{"id":369226,"date":"2026-09-16T04:32:49","date_gmt":"2026-09-16T04:32:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/block-insights\/"},"modified":"2026-09-16T04:32:35","modified_gmt":"2026-09-16T04:32:35","slug":"onecraft-block-insights","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/onecraft-block-insights\/","author":23506187,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"OneCraft Block Insights","header_author":"onecraftne","header_description":"Names the block your readers stop at: reach, dwell and clicks for every block.","assets_banners_color":"0e4d37","last_updated":"2026-09-16 04:32:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/onecraftne\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":55,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"onecraftne","date":"2026-09-16 04:32:35","revision":3697900}},"upgrade_notice":{"1.0.5":"<p>First wordpress.org release. The Reports screen and the editor sidebar are\nfree, with no limits. Rewriting a heading or a paragraph now counts as a\nchange, so before\/after has something to compare against.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3697897,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3697897,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3697897,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3697897,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3697897,"resolution":"1","location":"assets","locale":"","width":1280,"height":600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3697897,"resolution":"2","location":"assets","locale":"","width":1280,"height":740},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3697897,"resolution":"3","location":"assets","locale":"","width":1280,"height":530},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3697897,"resolution":"4","location":"assets","locale":"","width":1280,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3697897,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Reports \u2014 every measured page, worst drop-off first, with the block that\nlost the most readers named on each row.","2":"A single page, block by block in document order. The reach column is the\ncurve; the Change column marks the step where readers stopped.","3":"Settings. The coverage report says how many pages can be measured and\nnames the page builder found on the ones that cannot.","4":"The Manual, shipped in the plugin: what the numbers mean, when a block\ncounts as reached, and how far to trust the figures.","5":"The editor sidebar. Reach, dwell and clicks for the block you are editing,\nnext to the block itself."}},"plugin_section":[],"plugin_tags":[232,148857,307,63224,521],"plugin_category":[36],"plugin_contributors":[266175],"plugin_business_model":[],"class_list":["post-369226","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-block-editor","plugin_tags-engagement","plugin_tags-scroll-depth","plugin_tags-statistics","plugin_category-analytics","plugin_contributors-onecraftne","plugin_committers-onecraftne"],"banners":{"banner":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/banner-772x250.png?rev=3697897","banner_2x":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/banner-1544x500.png?rev=3697897","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/icon-128x128.png?rev=3697897","icon_2x":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/icon-256x256.png?rev=3697897","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/screenshot-1.png?rev=3697897","caption":"Reports \u2014 every measured page, worst drop-off first, with the block that\nlost the most readers named on each row."},{"src":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/screenshot-2.png?rev=3697897","caption":"A single page, block by block in document order. The reach column is the\ncurve; the Change column marks the step where readers stopped."},{"src":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/screenshot-3.png?rev=3697897","caption":"Settings. The coverage report says how many pages can be measured and\nnames the page builder found on the ones that cannot."},{"src":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/screenshot-4.png?rev=3697897","caption":"The Manual, shipped in the plugin: what the numbers mean, when a block\ncounts as reached, and how far to trust the figures."},{"src":"https:\/\/ps.w.org\/onecraft-block-insights\/assets\/screenshot-5.png?rev=3697897","caption":"The editor sidebar. Reach, dwell and clicks for the block you are editing,\nnext to the block itself."}],"raw_content":"<!--section=description-->\n<p>OneCraft Block Insights measures pages built with the WordPress block editor, one\nblock at a time: how far down the page each reader gets, how long each block\nholds them, and where they click. It names the block your readers stop at.<\/p>\n\n<p><strong>What it cannot measure. Read this first.<\/strong><\/p>\n\n<p>Only content built with the block editor is measured. Pages built with a\npage builder \u2014 Elementor, Divi, WPBakery, Oxygen, Bricks, Beaver Builder \u2014\nstore their layout outside of blocks, so there is nothing for this plugin to\nattach to. Those pages produce no numbers at all. After activation the\nplugin scans your content and tells you exactly how many of your pages it\ncan and cannot measure, naming the builder it found.<\/p>\n\n<p>This is also not a site-wide analytics plugin. There are no visitor totals,\nno sessions, no traffic sources, no unique visitors. It answers one\nquestion: within a page, which block do readers stop at.<\/p>\n\n<p><strong>It writes an identifier into your content.<\/strong><\/p>\n\n<p>Telling one block apart from another, across edits, needs a name that\nsurvives the edit. So the first time you edit and save a page, the plugin\nadds a short ID to each block's comment delimiter in the post content.\nNothing visible changes, and the front end is unaffected.<\/p>\n\n<p>Taking the plugin out takes them with it. Deleting the plugin restores post\ncontent to the exact bytes it had before the IDs were added, and\n    wp block-insights strip does the same without uninstalling. Any post whose\ncontent would not survive that round trip is left completely untouched and\nreported to you, never rewritten.<\/p>\n\n<h4>What it measures<\/h4>\n\n<ul>\n<li>Reach \u2014 how far down the page readers actually get, block by block<\/li>\n<li>Dwell \u2014 how long each block stays on screen<\/li>\n<li>Clicks \u2014 where readers click, attributed to the block they clicked in<\/li>\n<\/ul>\n\n<p>A block counts as reached once enough of it is genuinely on screen: half the\nblock, or half the screen for a block taller than the screen. Dwell accrues\nonly while that holds, and stops when the reader switches tabs.<\/p>\n\n<h4>About the numbers<\/h4>\n\n<p>Measurement happens in the reader's browser, so the figures are directional\nrather than audited. Page views here will always be lower than your server\nlogs: content blockers, unusual browsers, crashed tabs and phones killing a\nbackground app all cost measurements. Use these numbers to compare sections\nwithin a page, not as a system of record.<\/p>\n\n<p>Ratios survive this better than totals do. A block's reach and the page view\nit is divided by come from the same single beacon, so a lost visit removes\nboth at once and the percentage stays honest.<\/p>\n\n<p>One more caution: reached is not read. A reader who scrolls past a block in\n200 milliseconds still counts as having reached it. That is what the dwell\nfigure is for.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>Measurement is cookieless and first-party. No cookies are set, no browser\nstorage is used, no visitor identifier of any kind is created, and unique\nvisitors are not counted. No IP addresses, page URLs, referrers, user agents\nor personal data are stored.<\/p>\n\n<p>What visitors do is written to your own WordPress database and read back\nfrom it. There is no analytics service, no third-party script, no remote\nAPI, no phone-home and no telemetry. Nothing about your readers leaves your\nserver.<\/p>\n\n<p>Because no personal data is collected, no consent banner is required for\nthis plugin, and it adds nothing to personal data exports or erasure\nrequests.<\/p>\n\n<h4>Where to find it<\/h4>\n\n<ul>\n<li><strong>Block Insights \u2192 Reports<\/strong> \u2014 every measured page, worst drop-off first.\nOpen one for a block-by-block breakdown in document order, so the reach\npercentages form a curve running down the page. The step where that curve\nfalls is the block readers stop at.<\/li>\n<li><strong>Block Insights \u2192 Settings<\/strong> \u2014 which post types are measured, with the\ndaily row cost of each choice shown before you commit, plus the coverage\nreport of what can and cannot be measured.<\/li>\n<li><strong>Block Insights \u2192 Manual<\/strong> \u2014 what the numbers mean, where they come from,\nand how far to trust them.<\/li>\n<li><strong>The post editor<\/strong> \u2014 open a page, then the \u22ee menu \u2192 Block Insights for\nthat page's numbers next to the blocks themselves.<\/li>\n<\/ul>\n\n<h4>Storage<\/h4>\n\n<p>Storage does not grow with traffic. One row covers one block, on one day, on\none device type, however many readers it had. Rows grow with pages times\nblocks times days.<\/p>\n\n<p>Old data is never deleted. Once the daily table reaches its row budget, the\noldest days are folded into monthly totals, so disk usage stays predictable\nno matter how large the site is. Reports that reach back past that point\nprint the date day-level detail begins on, so a shrinking figure is never\nsilent.<\/p>\n\n<p>By default only posts and pages are measured. Other public post types can be\nenabled in Settings.<\/p>\n\n<p>Block Insights does not support WordPress Multisite.<\/p>\n\n<h4>The Pro version<\/h4>\n\n<p>The free version has no page limit, no page-view limit and no expiry.<\/p>\n\n<p>Pro adds three things: the before-and-after comparison, which splits a\npage's numbers at the day you edited it; the client report, a printable\ndocument with your own letterhead; and a CSV export.<\/p>\n\n<p>Your edits are recorded by the free version from the day you install it. If\nyou upgrade later, the comparison covers that whole history rather than\nbeginning on the day you paid.<\/p>\n\n<h4>External services<\/h4>\n\n<p>The free version talks to no external service on its own. It ships the\nFreemius SDK, which powers licence activation and updates for Pro. On first\nactivation Freemius asks whether you want to share basic site data; the\nquestion is skippable, and if you skip it nothing is sent.<\/p>\n\n<p>Data leaves your site in two cases: if you accept that opt-in, and if you\nactivate a Pro licence key. What is sent then is your site's homepage URL,\nthe plugin version and the SDK version \u2014 the minimum needed to enforce a\nper-site licence and deliver updates. The optional extras the SDK can send,\nyour list of installed plugins and themes and your WordPress\/PHP environment\nreport, are switched off by default in this plugin. No visitor data, and\nnothing from the statistics tables, is ever included.<\/p>\n\n<p>Freemius terms: https:\/\/freemius.com\/terms\/\nFreemius privacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<h3>Uninstalling<\/h3>\n\n<p>Deactivating the plugin stops measurement and changes nothing else.<\/p>\n\n<p>Deleting the plugin runs a full cleanup, and this one modifies post content,\nso it is worth knowing in advance:<\/p>\n\n<ol>\n<li>Every block ID this plugin added is removed from every post, restoring\npost content to the exact bytes it had before the plugin was installed.\nPosts whose content would not survive a parse\/serialize round trip are\nleft completely untouched and reported as skipped.<\/li>\n<li>The statistics tables are dropped and all collected data is deleted.<\/li>\n<li>Plugin options and the cached block-ID lists are removed.<\/li>\n<\/ol>\n\n<p>To remove the block IDs without uninstalling, run <code>wp block-insights strip<\/code>.<\/p>\n\n<h3>Verifying that strip restores your content exactly<\/h3>\n\n<pre><code>wp block-insights strip removes every block ID this plugin has written and\n<\/code><\/pre>\n\n<p>restores post content to its pre-assignment bytes. To verify that on your own\nsite:<\/p>\n\n<ol>\n<li><p>Dump post content before stripping:<\/p>\n\n<p>wp db export before.sql --tables=$(wp db prefix)posts<\/p><\/li>\n<li><p>Run the strip (use --dry-run first to see what would change):<\/p>\n\n<p>wp block-insights strip --yes<\/p><\/li>\n<li><p>Dump again and compare:<\/p>\n\n<p>wp db export after.sql --tables=$(wp db prefix)posts\ndiff before.sql after.sql<\/p><\/li>\n<\/ol>\n\n<p>The only differences must be the removed <code>\"biId\":\"...\"<\/code> entries in block\ncomment delimiters.<\/p>\n\n<h3>For developers<\/h3>\n\n<p>WP-CLI commands: <code>wp block-insights audit<\/code>, <code>render<\/code>, <code>compact<\/code>, <code>strip<\/code>.<\/p>\n\n<p>Filters: <code>block_insights_post_types<\/code>, <code>block_insights_reports_capability<\/code>,\n    block_insights_exclude_viewer, <code>block_insights_row_budget<\/code>,\n    block_insights_trusted_proxies.<\/p>\n\n<p>Set <code>block_insights_trusted_proxies<\/code> behind a CDN or reverse proxy, or rate\nlimiting treats every visitor as one address.<\/p>\n\n<h3>Building from source<\/h3>\n\n<p>The editor scripts in <code>build\/<\/code> are compiled from the uncompiled sources in\n    src\/, which are included in this plugin. To rebuild them:<\/p>\n\n<p>npm install\n   npm run build<\/p>\n\n<p>The build uses @wordpress\/scripts (webpack). The front-end measurement\nscript, <code>assets\/js\/bi.js<\/code>, is plain JavaScript with no build step and is\nshipped exactly as written.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Open <strong>Block Insights \u2192 Settings<\/strong> and read the coverage report. It tells\nyou how many of your pages can be measured before you invest any time.<\/li>\n<li>Open a page in the block editor, <strong>make an actual change<\/strong>, and update.<\/li>\n<\/ol>\n\n<p>Step 3 is required, and it is the step people miss. Block identifiers are\nadded in the editor as you work; existing content is never rewritten in\nbulk, because that would touch every post on the site to solve a problem you\nmay not have. A post that has never been opened and saved in the editor\nsince activation is never measured. Opening it is not enough \u2014 the editor\nhas to consider the post edited. A space added and removed again counts.<\/p>\n\n<p>Numbers then appear once someone has visited the published page. Your own\nvisits are not counted while you are logged in and able to edit that page.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20elementor%2C%20divi%2C%20wpbakery%2C%20oxygen%2C%20bricks%20or%20beaver%20builder%3F\"><h3>Does it work with Elementor, Divi, WPBakery, Oxygen, Bricks or Beaver Builder?<\/h3><\/dt>\n<dd><p>No. Those builders store their layout outside of blocks, so there are no\nblocks to measure and those pages produce nothing. The coverage report in\nSettings names each builder it finds on your site and counts the pages\naffected. If most of your site is built that way, this plugin has little to\ntell you.<\/p><\/dd>\n<dt id=\"i%20activated%20it%20and%20the%20reports%20screen%20is%20empty.\"><h3>I activated it and the Reports screen is empty.<\/h3><\/dt>\n<dd><p>Two things have to be true before a number exists. The page must have been\nopened in the block editor, actually changed, and saved since activation.\nThen someone other than an editor of that page must have visited it. Your\nown visits and previews are never counted.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20cookie%20consent%20banner%20for%20this%3F\"><h3>Do I need a cookie consent banner for this?<\/h3><\/dt>\n<dd><p>No. No cookies are set, no browser storage is used, no identifier is\ncreated, and no IP address is stored. There is nothing to consent to.<\/p><\/dd>\n<dt id=\"why%20are%20the%20numbers%20lower%20than%20google%20analytics%20or%20my%20server%20logs%3F\"><h3>Why are the numbers lower than Google Analytics or my server logs?<\/h3><\/dt>\n<dd><p>Measurement runs in the reader's browser and the beacon is sent when the\nreader leaves the page. Content blockers, crashed tabs, closed laptops and\nunusual browsers all cost measurements. Treat the figures as directional and\ncompare blocks within a page rather than reading the totals as a count of\nvisits.<\/p><\/dd>\n<dt id=\"does%20it%20count%20unique%20visitors%3F\"><h3>Does it count unique visitors?<\/h3><\/dt>\n<dd><p>No. There is no visitor identifier, so two people reading the same block on\nthe same day are two additions to the same number, and so are the same\nperson reading it twice.<\/p><\/dd>\n<dt id=\"how%20much%20will%20this%20add%20to%20my%20database%3F\"><h3>How much will this add to my database?<\/h3><\/dt>\n<dd><p>One row per block, per day, per device type. Traffic volume does not change\nit. The Settings screen estimates the daily row cost of each post type\nbefore you enable it, and once the daily table passes its row budget the\noldest days are folded into monthly totals rather than deleted.<\/p><\/dd>\n<dt id=\"what%20is%20not%20counted%2C%20by%20design%3F\"><h3>What is not counted, by design?<\/h3><\/dt>\n<dd><p>Anyone who can edit the post they are viewing, plus previews and the editor\nitself. Archives, the front page and search results, where the same block\ncan appear many times on one screen. Headers, footers and other template\nparts. Blocks nested more than two levels deep, known crawlers, feeds,\nembeds and unpublished posts. Subscribers and customers <em>are<\/em> counted \u2014 on a\nmembership or shop site they are the real audience.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support Multisite?<\/h3><\/dt>\n<dd><p>No. On a Multisite install the plugin registers nothing and says so.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens if I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting from the Plugins screen erases your measurement history and strips\nthe block identifiers back out of your post content. That cannot be undone.\nDeactivating is safe and destroys nothing. To install a new version, upload\nit over the existing installation rather than deleting first.<\/p>\n\n<p>If you want the identifiers taken out of your content while keeping the\nplugin, run <code>wp block-insights strip<\/code>. It restores each post to the exact\nbytes it had before the identifiers were added, and posts whose content\nwould not survive a parse\/serialize round trip are left untouched and\nreported as skipped.<\/p><\/dd>\n<dt id=\"is%20there%20a%20paid%20version%3F\"><h3>Is there a paid version?<\/h3><\/dt>\n<dd><p>Yes. Pro adds the before-and-after comparison, the printable client report\nand a CSV export. Everything described above is in the free version, without\nlimits or expiry.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>First release on wordpress.org.<\/li>\n<li>The Reports screen, the page breakdowns and the editor sidebar are free,\nwith no page limit, no page-view limit and no expiry.<\/li>\n<li>Edits are recorded by wording as well as by structure, so rewriting a\nheading or a paragraph is registered as a change rather than only adding,\nremoving or reordering blocks. The change log also records which blocks\nwere touched, which it never did before.<\/li>\n<li>The plugin is now translatable; previously the strings were marked up but\nno translation was ever loaded.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed: block labels in reports ran their text together, so a list read as\n\"Unlimited seatsPriority supportQuarterly review\" and a table came out as\nevery cell concatenated. Parts that were separate on the page are separated\nin the label, and a figure or table now takes its caption when it has one.<\/li>\n<li>Fixed: a container block with no text of its own was reported by its type\nname, so a call to action appeared as \"core\/buttons\". It now takes the text\nof what it contains, which for a button is the button label.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Changed: the product slug this build reports was renamed to match the\nstore. Licence activation is unaffected for new installs; an existing\nactivation may need the licence key entering once more.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added: a Manual screen under Block Insights, explaining what reach, dwell\nand clicks mean, when a block counts as reached, how far the figures can\nbe trusted, and what deleting the plugin destroys. Reachable from the\nPlugins screen too.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: the client report printed its period one day early in time zones west\nof UTC, so an August report could read \"July 31 - August 30\".<\/li>\n<li>Fixed: a visit that reached more than 64 blocks was discarded entirely, page\nview included. Long pages lost their most engaged readers. Payloads are now\ntruncated rather than rejected, and the limit is far higher.<\/li>\n<li>Fixed: blocks that nobody reached were left out of reports, so \"reached the\nend\" described the last block anyone reached instead of the end of the page.\nThey now appear at 0%, except where the block did not exist during the period.<\/li>\n<li>Reports now say so when a period reaches further back than the day-level data\nretention has kept, instead of quietly showing a smaller number.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Client Report: a printable, letterheaded document, with period presets and\na CSV export of every measured page.<\/li>\n<li>Self-view exclusion: anyone who can edit a page is not counted on it,\nincluding page previews.<\/li>\n<li>Report documents now say when they show only the worst pages of a larger set.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Measurement: reach, dwell, and clicks per block; daily aggregates.<\/li>\n<li>Site-wide Reports screen: drop-off per page and per block.<\/li>\n<li>Editor sidebar with per-block numbers and before\/after comparison.<\/li>\n<li>Row-budget retention: old daily data is compacted to monthly, not deleted.<\/li>\n<li>Settings screen for choosing which post types are measured.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Persistent block ID attribute registration and front-end injection.<\/li>\n<\/ul>","raw_excerpt":"It names the block your readers stop at: reach, dwell and clicks, block by block.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369226","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=369226"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/onecraftne"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369226"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369226"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369226"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369226"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369226"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}