{"id":283819,"date":"2026-03-01T12:51:48","date_gmt":"2026-03-01T12:51:48","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/kitgenix-affiliate-link-manager\/"},"modified":"2026-05-07T13:12:06","modified_gmt":"2026-05-07T13:12:06","slug":"kitgenix-affiliate-link-manager","status":"publish","type":"plugin","link":"https:\/\/de.wordpress.org\/plugins\/kitgenix-affiliate-link-manager\/","author":23310025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Kitgenix Affiliate Link Manager","header_author":"Kitgenix","header_description":"Manage affiliate short links in one place and redirect visitors via \/go\/{slug}.","assets_banners_color":"b9aad7","last_updated":"2026-05-07 13:12:06","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/kitgenix","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/kitgenix-affiliate-link-manager\/","header_author_uri":"https:\/\/kitgenix.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":385,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kitgenix","date":"2026-03-01 12:53:04"},"1.0.1":{"tag":"1.0.1","author":"kitgenix","date":"2026-03-19 10:08:57"},"1.1.0":{"tag":"1.1.0","author":"kitgenix","date":"2026-05-07 13:12:06"}},"upgrade_notice":{"1.1.0":"<p>Adds campaign organisation, scheduled and rotating destination controls, automated destination health alerts, analytics timelines with source attribution, plus REST API and WP-CLI management for automated affiliate-link workflows.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3486320,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3486320,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3486320,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3486320,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3525563,"resolution":"1","location":"assets","locale":"","width":2702,"height":1502},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3525563,"resolution":"2","location":"assets","locale":"","width":2702,"height":1502},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3525563,"resolution":"3","location":"assets","locale":"","width":2702,"height":1502},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3525563,"resolution":"4","location":"assets","locale":"","width":2702,"height":1502}},"screenshots":{"1":"Affiliate Links list view with search, campaign views, analytics snapshots, group\/tag filters, destination health alerts, sorting, pagination, and quick actions.","2":"Add\/Edit Affiliate Link modal with validation, schedule windows, fallback URLs, rotation settings, groups, tags, campaign notes, rel selection, and enable toggle.","3":"Bulk actions including delete, reset clicks, and CSV export with campaign, schedule, rotation, health, and analytics metadata.","4":"Settings: redirect prefix, redirect status, links per page, and uninstall cleanup.","5":"Support tab with totals, links, and quick copy tools."}},"plugin_section":[],"plugin_tags":[369,175,456,727,11104],"plugin_category":[35,55],"plugin_contributors":[246171],"plugin_business_model":[],"class_list":["post-283819","plugin","type-plugin","status-publish","hentry","plugin_tags-affiliate","plugin_tags-links","plugin_tags-marketing","plugin_tags-redirect","plugin_tags-shortlinks","plugin_category-advertising","plugin_category-seo-and-marketing","plugin_contributors-kitgenix","plugin_committers-kitgenix"],"banners":{"banner":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/banner-772x250.png?rev=3486320","banner_2x":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/banner-1544x500.png?rev=3486320","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/icon-128x128.png?rev=3486320","icon_2x":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/icon-256x256.png?rev=3486320","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/screenshot-1.png?rev=3525563","caption":"Affiliate Links list view with search, campaign views, analytics snapshots, group\/tag filters, destination health alerts, sorting, pagination, and quick actions."},{"src":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/screenshot-2.png?rev=3525563","caption":"Add\/Edit Affiliate Link modal with validation, schedule windows, fallback URLs, rotation settings, groups, tags, campaign notes, rel selection, and enable toggle."},{"src":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/screenshot-3.png?rev=3525563","caption":"Bulk actions including delete, reset clicks, and CSV export with campaign, schedule, rotation, health, and analytics metadata."},{"src":"https:\/\/ps.w.org\/kitgenix-affiliate-link-manager\/assets\/screenshot-4.png?rev=3525563","caption":"Settings: redirect prefix, redirect status, links per page, and uninstall cleanup."}],"raw_content":"<!--section=description-->\n<p>Affiliate URLs can get long, messy, and hard to manage \u2014 especially once they\u2019re embedded across pages, posts, emails, and ads.<\/p>\n\n<p><strong>Kitgenix Affiliate Link Manager<\/strong> gives you a simple, central place to create and manage short affiliate links, and redirect visitors using a clean URL format:<\/p>\n\n<pre><code>\/go\/{slug} (prefix configurable)\n<\/code><\/pre>\n\n<p>It\u2019s designed to be lightweight and practical:\n- Create links with a Name, Slug and Destination URL\n- Organise larger libraries with link groups, tags, campaign views, and campaign notes\n- Schedule start and expiry windows, send inactive traffic to a fallback URL, and rotate between multiple live destinations\n- Run automated destination health checks that flag broken offers, merchant-side 404s, and redirecting destinations inside the dashboard\n- Track daily click timelines plus source, referrer, and placement attribution so reports show which links and placements perform best\n- Manage links through a REST API and WP-CLI commands for create, update, disable, import, and export workflows\n- Configure the redirect prefix (default: <code>go<\/code>)\n- Choose redirect status: 307, 302 or 301\n- Track click counts per link\n- No third-party redirect\/short-link service (redirects happen on your site)<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Search links by name, slug, or destination URL from the main Links tab.<\/li>\n<li>Organise links with one primary group, multi-tag labels, reusable campaign views, and campaign notes.<\/li>\n<li>Schedule links with start\/end dates, fallback URLs, and sequential or random destination rotation.<\/li>\n<li>Run hourly health checks against primary, fallback, and rotated destinations, then show dashboard alerts when destinations fail or start redirecting.<\/li>\n<li>Show a global analytics snapshot plus per-link 14-day timelines, top sources, top referrers, and top placements inside the Links tab.<\/li>\n<li>Filter large link libraries by group or tag without leaving the main Links tab.<\/li>\n<li>Use a protected REST API for listing, creating, updating, disabling, importing, and exporting links outside wp-admin.<\/li>\n<li>Use WP-CLI commands for scripted link creation, updates, disable\/enable actions, and JSON\/CSV import-export workflows.<\/li>\n<li>Paginate and sort large link libraries by Name, Slug, and Clicks.<\/li>\n<li>Duplicate links, reset click counts, bulk delete links, and export selected links to CSV including campaign, schedule, rotation, health, and analytics data.<\/li>\n<li>Copy generated short URLs with one click.<\/li>\n<li>Temporarily disable a link without deleting it.<\/li>\n<li>Choose a per-link rel value: <code>nofollow<\/code>, <code>sponsored<\/code>, or <code>nofollow sponsored<\/code>.<\/li>\n<li>Tune how many links appear per page (10-200).<\/li>\n<li>Get warnings when your chosen prefix may conflict with WordPress core URLs or an existing page slug.<\/li>\n<li>Benefit from atomic click counting and object-cache-friendly slug lookups on busy sites.<\/li>\n<li>Use the plugin safely on multisite installs with multisite-aware activation, deactivation, and uninstall routines.<\/li>\n<\/ul>\n\n<p>SEO note: you can choose a per-link rel value (nofollow \/ sponsored \/ both). When placing your short URL into content, use sponsored\/nofollow to follow search engine guidelines for affiliate links.<\/p>\n\n<h4>Notes<\/h4>\n\n<ul>\n<li>This plugin stores links in a private custom post type and performs redirects via WordPress rewrite rules.<\/li>\n<li>If short URLs do not start working immediately after you change the redirect prefix, re-save Permalinks (Settings \u2192 Permalinks) so WordPress refreshes rewrite rules.<\/li>\n<\/ul>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Kitgenix \u2192 Affiliate Links.<\/li>\n<li>Add a link (Name + Destination URL + optional custom slug, schedule window, fallback URL, rotation rules, group, tags, and campaign note).<\/li>\n<li>Copy the generated short URL and use it anywhere.<\/li>\n<li>Use search, campaign views, analytics snapshots, group\/tag filters, health alerts, sorting, pagination, or CSV export as your link library grows.<\/li>\n<\/ol>\n\n<p>Automation tip: use the REST API or WP-CLI when you want to manage affiliate links in deployment scripts, migrations, or headless workflows.<\/p>\n\n<h3>Developers<\/h3>\n\n<p>Text domain:\nkitgenix-affiliate-link-manager<\/p>\n\n<p>Custom post type:\n- <code>kitgenix_aff_link<\/code><\/p>\n\n<p>Taxonomies:\n- Link groups: <code>kitgenix_aff_group<\/code>\n- Link tags: <code>kitgenix_aff_tag<\/code><\/p>\n\n<p>Post meta:\n- Destination URL: <code>_kitgenix_affiliate_destination_url<\/code>\n- Click count: <code>_kitgenix_affiliate_clicks<\/code>\n- Rel value: <code>_kitgenix_affiliate_rel<\/code> (allowed: <code>nofollow<\/code>, <code>sponsored<\/code>, <code>nofollow sponsored<\/code>)\n- Enabled flag: <code>_kitgenix_affiliate_enabled<\/code> (1\/0; defaults to enabled)\n- Campaign note: <code>_kitgenix_affiliate_campaign_note<\/code>\n- Starts at: <code>_kitgenix_affiliate_starts_at<\/code> (UTC timestamp)\n- Expires at: <code>_kitgenix_affiliate_expires_at<\/code> (UTC timestamp)\n- Fallback URL: <code>_kitgenix_affiliate_fallback_url<\/code>\n- Rotation mode: <code>_kitgenix_affiliate_rotation_mode<\/code> (<code>none<\/code>, <code>sequential<\/code>, <code>random<\/code>)\n- Rotation destinations: <code>_kitgenix_affiliate_rotation_destinations<\/code> (stored as an array)\n- Health status: <code>_kitgenix_affiliate_health_status<\/code>\n- Health message: <code>_kitgenix_affiliate_health_message<\/code>\n- Health checked at: <code>_kitgenix_affiliate_health_checked_at<\/code> (UTC timestamp)\n- Health HTTP code: <code>_kitgenix_affiliate_health_http_code<\/code>\n- Health final URL: <code>_kitgenix_affiliate_health_final_url<\/code>\n- Health redirect hops: <code>_kitgenix_affiliate_health_redirect_hops<\/code><\/p>\n\n<p>Analytics table:\n- <code>{prefix}kitgenix_aff_click_stats<\/code> \u2014 stores daily aggregated click counts by link, source, placement, and referrer host.<\/p>\n\n<p>Settings option:\n- <code>kitgenix_affiliate_link_manager_settings<\/code><\/p>\n\n<p>Settings group (Settings API):\n- <code>kitgenix_affiliate_link_manager_settings_group<\/code><\/p>\n\n<p>Redirect query var:\n- <code>kitgenix_affiliate_slug<\/code><\/p>\n\n<p>Admin actions \/ nonces:\n- Admin-post action (save): <code>admin_post_kitgenix_affiliate_link_save<\/code>\n- Admin-post action (delete): <code>admin_post_kitgenix_affiliate_link_delete<\/code>\n- Admin-post action (duplicate): <code>admin_post_kitgenix_affiliate_link_duplicate<\/code>\n- Admin-post action (reset clicks): <code>admin_post_kitgenix_affiliate_link_reset_clicks<\/code>\n- Admin-post action (bulk actions): <code>admin_post_kitgenix_affiliate_link_bulk<\/code>\n- Link save nonce action: <code>kitgenix_affiliate_link_save<\/code>\n- Link save nonce field name: <code>kitgenix_affiliate_link_nonce<\/code>\n- Link delete nonce action: <code>kitgenix_affiliate_link_delete<\/code>\n- Link delete nonce query arg: <code>nonce<\/code>\n- Link duplicate nonce action: <code>kitgenix_affiliate_link_duplicate<\/code>\n- Link reset clicks nonce action: <code>kitgenix_affiliate_link_reset_clicks<\/code>\n- Bulk actions nonce action: <code>kitgenix_affiliate_link_bulk<\/code>\n- Bulk actions nonce field name: <code>kitgenix_affiliate_link_bulk_nonce<\/code>\n- Settings save nonce action: <code>kitgenix_affiliate_link_manager_settings_save<\/code>\n- Settings save nonce field name: <code>kitgenix_affiliate_link_manager_settings_nonce<\/code><\/p>\n\n<p>Settings UI field identifiers:\n- Redirect status  id: <code>kitgenix_affiliate_redirect_status<\/code>\n- Links per page  id: <code>kitgenix_affiliate_links_per_page<\/code><\/p>\n\n<p>Developer filters:\n- <code>kitgenix_affiliate_slug_cache_ttl<\/code> (int $ttl, int $post_id, string $slug) \u2014 adjust redirect slug lookup cache TTL (seconds).\n- <code>kitgenix_affiliate_destination_url<\/code> (string $destination_url, int $post_id) \u2014 filter the final redirect destination before redirecting.\n- <code>kitgenix_affiliate_redirect_status<\/code> (int $status, int $post_id) \u2014 filter the HTTP redirect status per request.\n- <code>kitgenix_affiliate_manage_capability<\/code> (string $capability) \u2014 override the capability required to manage links.\n- <code>kitgenix_affiliate_health_check_timeout<\/code> (int $timeout, string $url) \u2014 adjust the outbound timeout used by destination health checks.<\/p>\n\n<p>REST API:\n- Namespace: <code>kitgenix-affiliate-link-manager\/v1<\/code>\n- <code>GET \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links<\/code> \u2014 list links with optional <code>search<\/code>, <code>group<\/code>, <code>tag<\/code>, <code>enabled<\/code>, <code>orderby<\/code>, <code>order<\/code>, <code>page<\/code>, and <code>per_page<\/code> parameters.\n- <code>POST \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links<\/code> \u2014 create a link, including optional <code>starts_at<\/code>, <code>expires_at<\/code>, <code>fallback_url<\/code>, <code>rotation_mode<\/code>, and <code>rotation_destinations<\/code> fields.\n- <code>GET \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/{id}<\/code> \u2014 fetch one link.\n- <code>PUT|PATCH \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/{id}<\/code> \u2014 update a link, including schedule and rotation settings.\n- <code>DELETE \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/{id}<\/code> \u2014 move a link to the Trash.\n- <code>POST \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/{id}\/disable<\/code> \u2014 disable a link.\n- <code>POST \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/{id}\/enable<\/code> \u2014 re-enable a link.\n- <code>GET \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/export<\/code> \u2014 export filtered links as structured rows.\n- <code>POST \/wp-json\/kitgenix-affiliate-link-manager\/v1\/links\/import<\/code> \u2014 import links with <code>match_existing=slug|id|none<\/code> and a <code>links<\/code> array payload.\n- Link responses and exports now include health fields such as <code>health_status<\/code>, <code>health_message<\/code>, <code>health_checked_at<\/code>, <code>health_http_code<\/code>, and <code>health_redirect_hops<\/code>.\n- Link responses and exports now also include analytics fields such as <code>clicks_last_7_days<\/code>, <code>clicks_last_30_days<\/code>, <code>timeline_14_days<\/code>, <code>top_sources_30_days<\/code>, <code>top_referrers_30_days<\/code>, and <code>top_placements_30_days<\/code>.<\/p>\n\n<p>WP-CLI:\n- Base command: <code>wp kitgenix-affiliate link<\/code>\n- Subcommands: <code>get<\/code>, <code>create<\/code>, <code>update<\/code>, <code>disable<\/code>, <code>enable<\/code>, <code>delete<\/code>, <code>export<\/code>, <code>import<\/code>\n- <code>create<\/code> \/ <code>update<\/code> accept <code>--starts-at<\/code>, <code>--expires-at<\/code>, <code>--fallback-url<\/code>, <code>--rotation-mode<\/code>, and <code>--rotation-destinations<\/code>.\n- <code>export<\/code> supports JSON or CSV output.\n- <code>import<\/code> supports JSON or CSV input and can match existing links by slug or ID.\n- <code>get<\/code> and <code>export<\/code> output the stored destination health summary fields alongside the rest of the link record.\n- <code>get<\/code> and <code>export<\/code> also output analytics summary fields, including recent timelines and top attribution breakdowns.<\/p>\n\n<p>Scheduled events:\n- Hourly health-check event: <code>kitgenix_affiliate_run_health_checks<\/code>\n- Initial catch-up event: <code>kitgenix_affiliate_run_health_checks_once<\/code><\/p>\n\n<p>Developer actions:\n- <code>kitgenix_affiliate_redirected<\/code> (int $post_id, string $destination_url, int $status) \u2014 fires after the click is counted and before the redirect exits.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin includes a shared \u201cKitgenix hub\u201d component in wp-admin which may fetch publicly available plugin metadata from WordPress.org using WordPress core\u2019s <code>plugins_api()<\/code> function.<\/p>\n\n<p>Caching:\n- Transient: <code>kitgenix_hub_wporg_active_installs_v1<\/code>\n- Transient: <code>kitgenix_hub_wporg_ratings_v1<\/code>\n- Transient: <code>kitgenix_hub_wporg_media_v1<\/code><\/p>\n\n<p>Redirect destinations:\n- When a visitor uses a short URL like <code>\/go\/{slug}<\/code>, the plugin redirects them to the destination URL you configured for that link. Destination URLs are commonly on third-party domains (affiliate programs).<\/p>\n\n<h3>Security &amp; Privacy<\/h3>\n\n<ul>\n<li>No tracking cookies are added.<\/li>\n<li>Admin actions are protected with capability checks and nonces.<\/li>\n<li>Redirect destinations are validated before redirect.<\/li>\n<\/ul>\n\n<h3>Uninstall<\/h3>\n\n<p>By default, uninstall removes only plugin settings and plugin-only transients (it does not delete stored affiliate link posts or click data).<\/p>\n\n<p>Optional: enable the \u201cDelete all affiliate links and click data when the plugin is uninstalled\u201d setting if you want a clean uninstall.<\/p>\n\n<p>Deleted:\n- Option: <code>kitgenix_affiliate_link_manager_settings<\/code>\n- Transient: <code>kitgenix_affiliate_link_manager_do_activation_redirect<\/code>\n- Transient (short-lived): <code>kitgenix_affiliate_link_manager_do_rewrite_flush<\/code><\/p>\n\n<h3>Support Development<\/h3>\n\n<p>If this plugin saves you time managing affiliate URLs, you can support ongoing development here:\nhttps:\/\/buymeacoffee.com\/kitgenix<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Built with \u2764\ufe0e by @kitgenix - https:\/\/kitgenix.com<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install via Plugins \u2192 Add New and search for \u201cKitgenix Affiliate Link Manager\u201d, or upload the ZIP to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open Kitgenix \u2192 Affiliate Links.<\/li>\n<li>(Optional) Update Settings \u2192 Prefix and Redirect Status.<\/li>\n<li>If you changed the prefix, re-save Settings \u2192 Permalinks.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20url%20format%20does%20it%20use%3F\"><h3>What URL format does it use?<\/h3><\/dt>\n<dd><p>By default it redirects from <code>\/go\/{slug}<\/code>. You can change the prefix in settings.<\/p><\/dd>\n<dt id=\"does%20it%20track%20clicks%3F\"><h3>Does it track clicks?<\/h3><\/dt>\n<dd><p>Yes. Each redirect increments a click counter stored against the link.<\/p><\/dd>\n<dt id=\"can%20i%20export%20or%20bulk-manage%20links%3F\"><h3>Can I export or bulk-manage links?<\/h3><\/dt>\n<dd><p>Yes. The Links tab supports bulk delete, bulk click reset, and CSV export for the selected links, including campaign metadata, destination rules, health fields, and analytics summary columns.<\/p><\/dd>\n<dt id=\"can%20i%20organise%20links%20into%20campaigns%3F\"><h3>Can I organise links into campaigns?<\/h3><\/dt>\n<dd><p>Yes. Each link can have one primary group, multiple tags, and an optional campaign note. The Links tab also adds reusable campaign views and group\/tag filters so large libraries stay manageable.<\/p><\/dd>\n<dt id=\"can%20i%20schedule%20or%20rotate%20destinations%3F\"><h3>Can I schedule or rotate destinations?<\/h3><\/dt>\n<dd><p>Yes. Each link can now have an optional start date, expiry date, fallback URL, and additional destinations for sequential or random rotation while the link is active.<\/p><\/dd>\n<dt id=\"does%20it%20warn%20me%20about%20broken%20offers%20or%20redirect%20chains%3F\"><h3>Does it warn me about broken offers or redirect chains?<\/h3><\/dt>\n<dd><p>Yes. The plugin runs automated destination health checks, stores the latest result against each link, and shows dashboard alerts when a destination returns an error or starts redirecting before the final page loads.<\/p><\/dd>\n<dt id=\"does%20it%20include%20analytics%20timelines%20and%20attribution%20reports%3F\"><h3>Does it include analytics timelines and attribution reports?<\/h3><\/dt>\n<dd><p>Yes. The Links tab now shows a global analytics snapshot, and each link editor view includes recent daily trends plus top sources, referrers, and placements based on tracked short-link visits.<\/p><\/dd>\n<dt id=\"does%20it%20include%20a%20rest%20api%3F\"><h3>Does it include a REST API?<\/h3><\/dt>\n<dd><p>Yes. The plugin now includes management endpoints for listing, creating, updating, disabling, importing, and exporting affiliate links outside wp-admin. The API is intended for authenticated site owners, agencies, and automation pipelines.<\/p><\/dd>\n<dt id=\"does%20it%20include%20wp-cli%20commands%3F\"><h3>Does it include WP-CLI commands?<\/h3><\/dt>\n<dd><p>Yes. You can create, update, enable, disable, delete, import, and export links from the command line, which is useful for scripted rollouts, migrations, and maintenance tasks.<\/p><\/dd>\n<dt id=\"can%20i%20temporarily%20disable%20a%20link%20without%20deleting%20it%3F\"><h3>Can I temporarily disable a link without deleting it?<\/h3><\/dt>\n<dd><p>Yes. Each link has an Enabled toggle. Disabled links stop redirecting until you enable them again.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20301%20redirect%3F\"><h3>Can I use a 301 redirect?<\/h3><\/dt>\n<dd><p>Yes, but it is generally better to use a temporary redirect for affiliate links. Use 307 (recommended) or 302 unless you have a specific reason to make the redirect permanent.<\/p><\/dd>\n<dt id=\"should%20i%20add%20nofollow%2Fsponsored%3F\"><h3>Should I add nofollow\/sponsored?<\/h3><\/dt>\n<dd><p>Yes. When you add the short URL to a post\/page, tag the link with <code>rel=\"nofollow\"<\/code> or <code>rel=\"sponsored\"<\/code> (ideally both) to comply with search engine guidelines.<\/p><\/dd>\n<dt id=\"does%20it%20require%20woocommerce%3F\"><h3>Does it require WooCommerce?<\/h3><\/dt>\n<dd><p>No.<\/p><\/dd>\n<dt id=\"can%20it%20handle%20large%20link%20libraries%3F\"><h3>Can it handle large link libraries?<\/h3><\/dt>\n<dd><p>Yes. The admin list supports server-side search across names, destinations, groups, tags, campaign notes, and health messages, plus campaign views, analytics snapshots, group\/tag filters, health alerts, sorting, pagination, configurable links-per-page limits, and object-cache-friendly slug lookups.<\/p><\/dd>\n<dt id=\"is%20it%20multisite%20compatible%3F\"><h3>Is it multisite compatible?<\/h3><\/dt>\n<dd><p>Yes. Activation, deactivation, rewrite flushing, and uninstall cleanup are multisite-aware.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0 (6 May 2026)<\/h4>\n\n<ul>\n<li>New: Added link groups so each affiliate link can be assigned to a reusable campaign view.<\/li>\n<li>New: Added link tags for labelling traffic sources, content types, and partner groupings.<\/li>\n<li>New: Added optional campaign notes to store placement context, reminders, or partner-specific details.<\/li>\n<li>New: Added campaign views and group\/tag filters to the Links tab for faster navigation across large link libraries.<\/li>\n<li>New: Added a protected REST API for listing, creating, updating, disabling, importing, and exporting affiliate links outside wp-admin.<\/li>\n<li>New: Added WP-CLI commands for scripted link management, including create, update, enable, disable, import, and export workflows.<\/li>\n<li>New: Added JSON and CSV import-export support for automation pipelines and deployment tooling.<\/li>\n<li>New: Added per-link start dates and expiry dates so offers can go live and retire automatically.<\/li>\n<li>New: Added fallback URLs for links that are not live yet or have already expired.<\/li>\n<li>New: Added sequential and random destination rotation using the primary destination plus optional extra URLs.<\/li>\n<li>New: Added automated destination health checks for primary, fallback, and rotated URLs.<\/li>\n<li>New: Added dashboard alerts for broken offers, merchant-side 404s, and redirecting destinations.<\/li>\n<li>New: Added a daily analytics timeline for each link plus a global analytics snapshot inside the Links tab.<\/li>\n<li>New: Added source, referrer, and placement attribution using tracked short-link visits.<\/li>\n<li>Improvement: Added analytics summary fields to shared link records, REST responses, WP-CLI output, and CSV exports.<\/li>\n<li>Improvement: Search now matches campaign groups, tags, and campaign notes in addition to the existing link fields.<\/li>\n<li>Improvement: Duplicated links now retain their campaign metadata.<\/li>\n<li>Improvement: CSV exports now include link group, tags, and campaign note columns.<\/li>\n<li>Improvement: Added schedule and rotation fields to the admin editor, REST API, WP-CLI commands, and CSV exports.<\/li>\n<li>Improvement: Added destination health fields to shared link records, REST responses, WP-CLI output, and CSV exports.<\/li>\n<li>Fix: Prevented a PHP fatal when rendering affiliate-link 404 responses on themes that do not provide a 404 template.<\/li>\n<\/ul>\n\n<h4>1.0.1 (19 March 2026)<\/h4>\n\n<ul>\n<li>Fix: Added missing translators comments for pluralized admin notices.<\/li>\n<li>Fix: Hardened admin table escaping, pagination rendering, CSV export output, uninstall cleanup, and click-count bookkeeping to satisfy WordPress coding standards.<\/li>\n<li>UI: Improved the Kitgenix admin header layout for better alignment and less clutter.<\/li>\n<li>UI: Social links in admin headers now render as compact icon buttons (with accessible labels).<\/li>\n<li>UI: Added responsive header helpers so titles\/description and actions\/links lay out consistently.<\/li>\n<li>Fix: Admin notices now display above the Kitgenix header using the WordPress standard notice area.<\/li>\n<li>Fix: Added defensive notice normalization to prevent notices being relocated into the header by other scripts.<\/li>\n<li>UI: Admin tables inside Kitgenix pages now use Kitgenix styling for a more consistent branded look.<\/li>\n<li>Fix: Added spacing between adjacent action links\/buttons (e.g., Edit\/Delete).<\/li>\n<li>New: Links list now supports pagination.<\/li>\n<li>New: Links list now supports server-side search (name, slug, destination).<\/li>\n<li>New: Links list now supports server-side sorting by Name, Slug, and Clicks.<\/li>\n<li>New: Added bulk actions for deleting links, resetting click counts, and exporting selected links to CSV.<\/li>\n<li>New: Added per-link actions to duplicate a link and reset its click count.<\/li>\n<li>New: Added a \u201cLinks per page\u201d setting (10\u2013200) to control list pagination size.<\/li>\n<li>New: Added an \u201cEnabled\u201d toggle per link to temporarily disable redirects without deleting the link.<\/li>\n<li>Dev: Added a developer filter to tune redirect slug lookup cache TTL.<\/li>\n<li>UI: Improved keyboard accessibility for the Edit Link modal (focus trap + restore focus).<\/li>\n<li>Improvement: Added inline validation for slug and destination URL fields in the admin UI.<\/li>\n<li>Improvement: Support tab click totals are calculated more efficiently on large sites.<\/li>\n<li>Improvement: Redirect handling now supports object-cache-friendly slug lookups for better performance on high-traffic links.<\/li>\n<li>Dev: Added developer hooks around redirects (destination URL\/status filters and a redirect action).<\/li>\n<li>Improvement: Settings now warn when the redirect prefix may conflict with WordPress\/core URLs or an existing Page slug.<\/li>\n<li>Cleanup: Added an optional \u201cdelete data on uninstall\u201d setting for clean uninstalls.<\/li>\n<li>Fix: Click counting is now atomic to avoid missed increments under concurrent traffic.<\/li>\n<li>Fix: Admin link actions now permit WooCommerce managers (when WooCommerce is installed).<\/li>\n<li>Dev: Capability required to manage links is now filterable for developers.<\/li>\n<li>Fix: Escaped shared Kitgenix hub card media output for WordPress coding standards compliance.<\/li>\n<li>Maintenance: Updated the plugin Author URI to the public Kitgenix WordPress.org profile and replaced the old custom admin-menu icon CSS with the native Dashicons icon.<\/li>\n<\/ul>\n\n<h4>1.0.0 (01 March 2026)<\/h4>\n\n<ul>\n<li>New: Initial release.<\/li>\n<li>New: Create and manage affiliate links with Name, Slug, and Destination URL.<\/li>\n<li>New: Redirect visitors via clean short URLs using <code>\/go\/{slug}<\/code> (prefix configurable).<\/li>\n<li>New: Settings to configure the redirect prefix and redirect status (307\/302\/301).<\/li>\n<li>New: Click tracking per link.<\/li>\n<li>New: Optional per-link rel guidance (nofollow \/ sponsored \/ both) for SEO compliance.<\/li>\n<li>New: Admin UI for listing, adding, and editing affiliate links.<\/li>\n<li>New: Links are stored in a private custom post type.<\/li>\n<li>New: Redirect handling via WordPress rewrite rules.<\/li>\n<li>Security: Added capability checks and nonces for admin actions.<\/li>\n<li>Security: Added destination URL validation prior to redirect.<\/li>\n<li>Security: No external services and no tracking cookies.<\/li>\n<\/ul>","raw_excerpt":"Manage affiliate short links, branded redirects, and click tracking from one WordPress dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/283819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=283819"}],"author":[{"embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kitgenix"}],"wp:attachment":[{"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=283819"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=283819"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=283819"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=283819"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=283819"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/de.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=283819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}