{"id":378814,"date":"2026-10-01T04:18:18","date_gmt":"2026-10-01T04:18:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/harvify-redirect-manager\/"},"modified":"2026-10-01T04:18:06","modified_gmt":"2026-10-01T04:18:06","slug":"harvify-redirect-manager","status":"publish","type":"plugin","link":"https:\/\/az-tr.wordpress.org\/plugins\/harvify-redirect-manager\/","author":23508132,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.28","stable_tag":"1.0.28","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Harvify Redirect Manager","header_author":"harv","header_description":"Unlimited redirect rules, a 404 monitor and one-click import from Redirection. Pro adds conditional and scheduled redirects and chain detection.","assets_banners_color":"6455bd","last_updated":"2026-10-01 04:18:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":68,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.28":{"tag":"1.0.28","author":"jethalal","date":"2026-10-01 04:18:06","revision":3722354}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3722354,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3722354,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3722354,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3722354,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3722354,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.28"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3722354,"resolution":"1","location":"assets","locale":"","width":1078,"height":1045},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3722354,"resolution":"2","location":"assets","locale":"","width":1078,"height":854},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3722354,"resolution":"3","location":"assets","locale":"","width":1078,"height":993}},"screenshots":{"1":"Your redirect rules, with a hit counter on each so you can see which ones\nmatter.","2":"The 404 monitor logs every miss and offers one-click redirect creation.","3":"The Plan tab: everything the free tier includes, and what a licence adds."}},"plugin_section":[],"plugin_tags":[932,905,175,727,186],"plugin_category":[55],"plugin_contributors":[280380],"plugin_business_model":[],"class_list":["post-378814","plugin","type-plugin","status-publish","hentry","plugin_tags-932","plugin_tags-905","plugin_tags-links","plugin_tags-redirect","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-jethalal","plugin_committers-jethalal"],"banners":{"banner":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/banner-772x250.png?rev=3722354","banner_2x":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/banner-1544x500.png?rev=3722354","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/icon.svg?rev=3722354","icon":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/icon.svg?rev=3722354","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/screenshot-1.png?rev=3722354","caption":"Your redirect rules, with a hit counter on each so you can see which ones\nmatter."},{"src":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/screenshot-2.png?rev=3722354","caption":"The 404 monitor logs every miss and offers one-click redirect creation."},{"src":"https:\/\/ps.w.org\/harvify-redirect-manager\/assets\/screenshot-3.png?rev=3722354","caption":"The Plan tab: everything the free tier includes, and what a licence adds."}],"raw_content":"<!--section=description-->\n<p>Harvify Redirect Manager sends visitors and search engines from old addresses to new ones, logs every 404 so you can see which links are broken, and can import the rules you already have in the Redirection plugin.<\/p>\n\n<p><strong>Free features:<\/strong><\/p>\n\n<ul>\n<li><strong>Unlimited redirect rules<\/strong><\/li>\n<li>301, 302, 307, 308, <strong>410 Gone<\/strong> and <strong>451 Unavailable For Legal Reasons<\/strong><\/li>\n<li>Exact, regex, and wildcard matching<\/li>\n<li><strong>404 monitor<\/strong> \u2014 logs every hit \u2014 with one-click redirect creation<\/li>\n<li>Import from Redirection plugin \u00b7 CSV import<\/li>\n<li>Export to CSV<\/li>\n<li>Hit counter per rule \u00b7 enable\/disable \u00b7 bulk actions<\/li>\n<li>Tag a rule with a group and filter the list by it<\/li>\n<\/ul>\n\n<p><strong>Pro features (Harvify Pro Bundle):<\/strong><\/p>\n\n<ul>\n<li><strong>Conditional redirects<\/strong> \u2014 apply a rule only for logged-in\/logged-out\nvisitors, specific user roles, a referrer, or a user agent<\/li>\n<li><strong>Group browser and bulk group assignment<\/strong> \u2014 see every group in use with its\nrule count, and move many rules into a group at once<\/li>\n<li><strong>Scheduled redirects<\/strong> \u2014 (activate and expire on specific dates)<\/li>\n<li><strong>Auto-redirect on slug change<\/strong> \u2014 (posts, pages, WooCommerce products)<\/li>\n<li><strong>Redirect chain detection<\/strong> \u2014 find redirects that loop<\/li>\n<li>Email alerts on 404 spikes<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Freemius, the licensing and update service Harvify uses to\nsell and deliver the Pro tier of its plugins.<\/p>\n\n<p>Nothing is sent to Freemius unless you choose to send it. On activation you are shown\nFreemius's standard opt-in screen. Until you answer it a fresh install makes no\noutbound request at all, and if you choose Skip the free tier stays fully usable\nand still sends nothing. Data is transmitted only when you take one of these\nactions:<\/p>\n\n<ul>\n<li><strong>You click \"Allow &amp; Continue\" on the Freemius opt-in screen.<\/strong> This sends your\nsite address, your administrator email address, and your WordPress, PHP and active\nplugin\/theme details, so Harvify can provide support and know which environments to\ntest against. Skipping that screen sends nothing and leaves the plugin working\nnormally.<\/li>\n<li><strong>You enter a Pro Bundle licence key.<\/strong> This sends the key together with your site\naddress so the licence can be activated for that site. While a licence is active the\nsite also re-checks periodically that it is still valid and whether a Pro update is\navailable.<\/li>\n<\/ul>\n\n<p>Service provided by Freemius, Inc. - https:\/\/freemius.com\/\nTerms of service: https:\/\/freemius.com\/terms\/\nPrivacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your dashboard go to Plugins \u2192 Add New, search for \"Harvify Redirect Manager\",\nthen install and activate it (or upload the ZIP under Plugins \u2192 Add New \u2192 Upload).<\/li>\n<li>Open <strong>Harvify \u2192 Redirect Manager<\/strong>. The first time, you are asked whether to\nshare usage data with Freemius; choose <strong>Skip<\/strong> to use every free feature without\nsending anything.<\/li>\n<\/ol>\n\n<h4>Adding a redirect<\/h4>\n\n<ol>\n<li>On the <strong>Redirects<\/strong> tab click <strong>Add new<\/strong>.<\/li>\n<li>Enter the <strong>Source URL<\/strong> (the old address, for example <code>\/old-page<\/code>) and the\n<strong>Target URL<\/strong> (where visitors should go: a path such as <code>\/new-page<\/code>, or a full\naddress).<\/li>\n<li>Choose the <strong>Redirect type<\/strong> (301 for a permanent move, 302 or 307 for a\ntemporary one, 410 when the page is gone for good) and the <strong>Match<\/strong> type:\n<em>Exact<\/em> for one address, <em>Wildcard<\/em> for a pattern such as <code>\/blog\/*<\/code>, or <em>Regex<\/em>.<\/li>\n<li>Optionally add <strong>Groups<\/strong> (comma-separated) and <strong>Notes<\/strong>, then click <strong>Create<\/strong>.<\/li>\n<\/ol>\n\n<p>Use <strong>Test<\/strong> on a rule to check where it sends visitors and <strong>Edit<\/strong> to change it.\nClick the <strong>Yes<\/strong>\/<strong>No<\/strong> in a rule's <strong>Enabled<\/strong> column to switch that rule off or on;\n<strong>Enable all<\/strong> and <strong>Disable all<\/strong> switch every rule at once.<\/p>\n\n<h4>Other tabs and tools<\/h4>\n\n<ul>\n<li><strong>404 Monitor<\/strong> \u2014 every address that returned \"not found\", with a hit count.\n<strong>Create redirect<\/strong> turns one into a rule.<\/li>\n<li><strong>Import from Redirection<\/strong> and <strong>Import CSV<\/strong> \u2014 bring existing rules in. A CSV\nneeds one rule per line: <code>source, target, type<\/code> (a header row is fine).<\/li>\n<li><strong>Export CSV<\/strong> \u2014 download all your rules.<\/li>\n<li><strong>Insights<\/strong> \u2014 your busiest redirects and most frequent 404s at a glance.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20import%20from%20the%20redirection%20plugin%3F\"><h3>Can I import from the Redirection plugin?<\/h3><\/dt>\n<dd><p>Yes. Click <strong>Import from Redirection<\/strong> on the Redirects tab. Ordinary and regex\nredirects are copied with their status code and whether they were enabled.\nRedirection's conditional rules (login state, referrer, role and similar) and\nactions that are not redirects, such as error pages, are not imported; the import\ntells you how many it skipped and why. Addresses that already have a rule are\nleft alone, so running it twice adds nothing.<\/p><\/dd>\n<dt id=\"do%20redirects%20slow%20my%20site%20down%3F\"><h3>Do redirects slow my site down?<\/h3><\/dt>\n<dd><p>Rules are checked only on the front end, and only when a page is requested. The\n404 monitor records a miss after WordPress has already decided the page is not\nfound.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.28<\/h4>\n\n<ul>\n<li><strong>New: switch a single redirect off or on<\/strong> by clicking the Yes\/No in its\nEnabled column. Until now only \"Enable all\" and \"Disable all\" existed, so a rule\ncould be deleted but not paused.<\/li>\n<li>Readme: step-by-step setup and usage instructions, and an accurate description of\nwhat the Redirection import brings across.<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li><strong>Fixed: \"Import from Redirection\" now imports your Redirection rules.<\/strong> It\nexpected a format Redirection does not use, so ordinary URL redirects were\nskipped as having no target. It now keeps each rule's status code, its regex\nsetting, and whether it was enabled or disabled in Redirection.<\/li>\n<li>The import tells you what it did not bring across, and why: conditional rules\n(login state, referrer, role and similar), which would change meaning without\ntheir conditions; actions that are not redirects, such as error pages; and\naddresses that already have a rule here. Running it twice adds nothing.<\/li>\n<li><strong>Fixed: regex rules now put what they captured into the target.<\/strong> A target\nsuch as <code>\/new\/$1<\/code> used to send visitors to a literal \"\/new\/$1\".<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li><strong>Fixed: rules created in the editor, imported from Redirection or made by the\nPro slug-change redirect were saved DISABLED,<\/strong> so they never redirected, and\nediting any rule disabled it. None of those paths sends an on\/off value, and a\nmissing value was read as \"off\". A new rule is now enabled unless you turn it\noff, and editing a rule keeps its on\/off state. Rules already saved as disabled\nstay as they are: switch them on from the list.<\/li>\n<li><strong>Fixed: editing a rule no longer wipes fields the editor did not show.<\/strong> A save\nfrom a free or lapsed screen cleared the rule's schedule dates and its groups.\nOnly the fields a save actually sends are changed now.<\/li>\n<li><strong>Tagging a rule with a group is back in the free editor,<\/strong> with the Group\ncolumn and tags in the list, as the free feature list has said since 1.0.24.<\/li>\n<li><strong>Fixed: clicking a group tag in the list now filters the list to that group.<\/strong>\nThe tags have been links since 1.0.23, but a click only jumped to the top of\nthe page. A \"Show all groups\" button now clears the filter in every tier.<\/li>\n<li>Changed: scheduled redirects are supplied by the separately distributed Pro\nplugin. This download no longer contains the date check, so on a free site a\nrule's stored schedule is kept but not applied, and the rule redirects whenever\nit is enabled.<\/li>\n<li>Fixed: the Plan tab listed unlimited rules, 410\/451 and group tagging as Pro,\nalthough all three have been free since 1.0.24, and did not list conditional\nredirects. The upgrade cards no longer imply a rule limit.<\/li>\n<li>Changed: the External services section now describes the Freemius opt-in screen\nshown on activation. Until you answer it a fresh install makes no outbound\nrequest, and choosing Skip keeps the free tier fully usable and sends nothing.<\/li>\n<li>Internal: a loop variable in the main file is now prefixed.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li><strong>The free tier is no longer capped.<\/strong> The 500-rule limit is gone from rule\ncreation and from CSV import. There is no upgrade prompt standing between you\nand a redirect any more.<\/li>\n<li><strong>410 Gone and 451 are now free.<\/strong> They used to be forced down to a 301 unless\na licence was active, even though the code that serves them shipped in every\ndownload.<\/li>\n<li>Changed: conditional redirects and the group browser \/ bulk group assignment\nare supplied by the separately distributed Pro plugin rather than being\npresent-but-inactive in this download. Rules you already tagged with a group\nkeep their tag, stay filterable, and are never rewritten.<\/li>\n<li><strong>Changed: every identifier this plugin owns has been renamed<\/strong> off its old\nthree-character <code>hrm_<\/code> prefix, which is shorter than WordPress.org accepts.\nFunctions, options, cron hooks and the plugin's own actions and filters are\nnow <code>harvify_redirect_*<\/code>; global constants are <code>HARVIFY_REDIRECT_*<\/code>; classes\nare <code>Harvify_Redirect_*<\/code>.<\/li>\n<li><strong>Developers: the REST namespace is now <code>harvify-redirect\/v1<\/code>. The old\n  hrm\/v1 namespace is GONE and there is no compatibility alias<\/strong> \u2014 any code\ncalling it will 404 until updated. Also renamed: the admin script and style\nhandle <code>hrm-admin<\/code> is now <code>harvify-redirect-admin<\/code>, and the localized\nJavaScript object <code>hrmSettings<\/code> is now <code>harvifyRedirectSettings<\/code>.<\/li>\n<li>Your data is carried across for you on the first page load after updating:\nthe schema marker, your uninstall-data preference, the scheduled 404-alert\ncheck and the slug-backup post meta all move to the new names. Your redirect\nrules and 404 log are untouched \u2014 those tables never changed.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Added: a single <strong>Support<\/strong> entry in the Harvify menu, so you can reach us from\ninside WordPress. Until now no plugin offered a contact route at all. One entry for\nthe whole suite rather than one per plugin.<\/li>\n<li>No behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Added: an <strong>External services<\/strong> section to this readme, naming every third-party\nservice the plugin can contact, exactly what is sent, when, and each provider's terms\nand privacy policy. Required for WordPress.org submission.<\/li>\n<li>Changed: the <code>Contributors<\/code> field now names the correct WordPress.org account.<\/li>\n<li>Added: the <code>License URI<\/code> header, which the readme was missing.<\/li>\n<li>No behaviour changes.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Rebuild: the published 1.0.20 package predated the blank-source validation and was\ngenerated from an earlier tree. This release carries it: a redirect rule saved with no\nsource URL is refused, so it can no longer match \u2014 and capture \u2014 the front page.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Added: a single <strong>Manage licence<\/strong> link on the Plan screen, so an active customer can\ndeactivate this site, change their licence key or re-check their licence without\nneeding a URL from support. No per-plugin Account tab is added.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Fixed: opting in to \"delete all data on uninstall\" now removes hrm_db_version.\nIt was written at runtime but never included in the cleanup, so a user who\nasked for their data to be deleted kept it.<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li><strong>Fixed: updating the plugin did not update its database.<\/strong> WordPress only runs a plugin's\nsetup routine when you <em>activate<\/em> it, never when it updates \u2014 so a change to the plugin's own\ntables never reached sites that had simply updated. On those sites some features failed with a\ndatabase error. The update now applies itself on the next page load.<\/li>\n<li><strong>Fixed: a malformed API request returned a PHP error<\/strong> instead of a normal \"bad request\"\nresponse.<\/li>\n<li><strong>One upgrade link instead of one per plugin.<\/strong> With several Harvify plugins active the\nmenu showed a row called \"Upgrade\" for each of them, all identically labelled, and it kept\nsaying Upgrade to people who had already bought. They are replaced by a single <strong>Plan<\/strong>\nscreen that says what the bundle costs, what it covers, and whether your licence is active.<\/li>\n<li><strong>The dashboard is quiet again.<\/strong> Each plugin used to add its own \"opt in to make this\nbetter\" notice to the main WordPress dashboard, so five plugins meant five notices. Harvify\nplugins now share one queue: promotional notices appear only on Harvify's own screens, and\nonly one at a time. Licence and account messages are never held back.<\/li>\n<li><strong>Fixed: the \"Data &amp; uninstall\" box covered the page.<\/strong> It was being drawn into the admin\nfooter, which WordPress pins to the bottom of the screen, so it floated on top of whatever was\nunderneath it. It now sits in the page like any other card. Saving it also tells you what it\nsaved, instead of just reloading.<\/li>\n<li><strong>Fixed: the upgrade screen advertised the wrong number of sites.<\/strong> Several plugins listed\nthe Freelancer and Agency plans as covering 5 and 25 sites. They cover 3 and 10.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li><strong>Uninstall no longer destroys your data by default.<\/strong> Deleting the plugin used to remove\neverything it had stored, with no way to stop it -- so deleting it to troubleshoot destroyed\nthe lot. Now the default is to KEEP your data, and a new <strong>Data &amp; uninstall<\/strong> control on the\nplugin's own screen lets you opt in to a full wipe if you actually want one. Scheduled jobs\nare always tidied up either way, and the wipe works with no internet connection.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li><strong>Deleting the plugin left its two database tables behind, on every site, since 1.0.0.<\/strong> The\nmain plugin file used a variable named <code>$file<\/code> while loading its includes. WordPress runs\n  include_once on that file from INSIDE its own <code>uninstall_plugin()<\/code> function, so the\nassignment overwrote WordPress's <code>$file<\/code> -- core then fired its uninstall action under a\nnonsense name, the cleanup callback was never reached, and <code>wp_harvify_redirects<\/code>,\n  wp_harvify_404_log and the daily-alert cron survived deletion forever. The loader variable is\nnow prefixed. Cleanup is verified by a committed gate that deletes the plugin with the network\ncut and then checks the tables are gone.<\/li>\n<li><strong>The published free ZIP failed Plugin Check even though the source passed.<\/strong> Freemius's code\npreprocessor rewrites the main plugin file and drops block comments that sit inside an\nexpression, which deleted a <code>translators:<\/code> comment and produced a MissingTranslatorsComment\nERROR -- a rejected submission -- in the artifact nobody had ever checked. The comment now sits\nabove a statement, where the rewrite preserves it.<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li><strong>Fixed a WordPress.org submission blocker.<\/strong> Plugin Check flagged the HTTP status passed to\nwp_die() on the 410\/451 terminal-response path as unescaped output -- an ERROR, which means a\nrejected submission. It is now passed through absint(), which is the honest cast for an HTTP\nstatus as well as the one the check accepts. No behaviour change.<\/li>\n<li>Tested up to WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li><strong>Redirect groups and tags are now a real feature.<\/strong> The Groups field was saved and then read\nby nothing -- there was no way to filter by it, no column showing it, nothing in the export and\nno bulk action. You can now tag a rule with one or more groups, filter the list to a group\n(click a tag to jump straight to it), sort and see the Group column, assign or clear a group\nacross a selection in bulk, and the CSV export carries it. Searching also matches group names.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li><strong>Fixed: choosing the 451 redirect type broke the URL.<\/strong> 451 answers a request rather than\nredirecting it, and WordPress refuses any non-redirect status in a redirect -- so instead of a\n451 the visitor got a WordPress error page. 451 now returns a proper 451 with an explanatory\npage, and (per RFC 7725) a <code>Link: ...; rel=\"blocked-by\"<\/code> header pointing at the rule's target.\nThe dispatcher now asks \"is this a redirect?\" rather than \"is this 410?\", so no future status\ncan repeat this.<\/li>\n<li>Fixed: 410 and 451 are Pro types, and the CSV importer enforced that while the add\/edit form\ndid not. Both roads now go through the same check.<\/li>\n<li><strong>Fixed: redirects to another site sent visitors to your admin screen instead.<\/strong> A rule\npointing at an external URL was being rewritten to \/wp-admin\/, because the redirect used\nWordPress's \"safe\" variant, which refuses any host but your own. Pointing at another site is a\ncore reason to use a redirect plugin, so the destination you configured is now honoured -- and\nonly that one: no other host is allowed, so this is not an open redirect.<\/li>\n<li>The Pro feature list mentions 451 again, now that it works.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Marketing accuracy: the Pro feature list no longer advertises \"451 redirect types\" or\n\"Redirect groups and tags\". Selecting 451 does not currently return a 451 (WordPress\nrefuses any non-3xx status in wp_redirect), and the Groups field is stored but nothing\nfilters, lists or exports by it yet. Both remain on the roadmap; the copy will return\nwith the features.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Your licence is now manageable from the plugin itself. The Account screen was previously\nhidden, which also hid <strong>Deactivate License<\/strong> \u2014 so a licence could not be released from one\nsite to move it to another without contacting support. It is visible again, along with the\nlicence key, plan, Sync and Change License.<\/li>\n<li><strong>Harvify \u2192 Tools<\/strong> now opens with a <strong>Your licences<\/strong> table: every installed Harvify plugin,\nthe plan it is on, whether Pro features are actually running, and a link to its Account screen.\nFreemius gives each product its own separate Account page, so this is the one place that\nanswers \"what am I on\" across the whole bundle.<\/li>\n<li>The repeated <em>\"Opt in to make \u2026 better!\"<\/em> admin notice no longer appears. Licence, plan and\nupdate notices are unaffected \u2014 only the opt-in prompt is suppressed.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Change: License activation now uses per-plugin key entry \u2014 enter your bundle license key on each Pro plugin to unlock Pro. Improves activation reliability.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>New: CSV import. Import redirects from any spreadsheet as source,target,type (header row optional; type defaults to 301). Rows are validated, duplicates \u2014 against your existing rules and within the file \u2014 are skipped, and the free-tier rule limit is respected.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>New (Pro): conditional redirects. A rule can optionally require login state (logged in \/ logged out), any of a set of user roles, a referrer substring, or a user-agent substring \u2014 all set conditions must match. Rules without conditions behave exactly as before, and existing rules are untouched. Conditional rules are marked in the rules table.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Free tier now allows up to 500 redirect rules (was 50) so you can migrate a full Redirection install without hitting the cap. Pro remains unlimited.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>New admin design system (Harvify Admin Kit): branded header, first-run onboarding, section navigation (Redirects, 404 Monitor, Insights), skeleton loader, coaching empty states, an at-a-glance Insights panel (redirect rules, redirect hits, 404 URLs &amp; hits, most-used redirects, top 404s to fix), and a contextual, dismissible upgrade card. UI layer only \u2014 redirect handling, the 404 monitor and free\/Pro gating are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fix: Pro features now unlock only on the premium build with a valid license (per-plugin gate). Previously a shared bundle flag could make the free build report Pro when another Harvify plugin was licensed.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Internal: uninstall cleanup now runs on Freemius's after_uninstall hook (removed uninstall.php) for Freemius Deployment compatibility. What gets removed on uninstall is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>The free 404 monitor now logs every hit (previously sampled 1-in-5). Full 404 logging is no longer a Pro-only differentiator.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed redirects table failing to create on MySQL 8 (the <code>groups<\/code> column is a reserved word; renamed to <code>redirect_group<\/code>).<\/li>\n<li>Admin menu now registers on init (fixes a \"translation loaded too early\" notice under WordPress 6.7+).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Pro features (scheduled redirects, chain detection, slug-change auto-redirect, 404 alerts) now load only in the premium build (Freemius is__premium_only model).<\/li>\n<li>Pricing now sourced from the shared bundle-license package; upgrade prompts link to the pricing page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Unlimited redirect rules, a 404 monitor and one-click import from Redirection. Pro adds conditional and scheduled redirects and chain detection.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378814"}],"author":[{"embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jethalal"}],"wp:attachment":[{"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378814"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378814"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378814"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378814"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378814"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/az-tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}