{"id":367849,"date":"2026-09-19T14:56:18","date_gmt":"2026-09-19T14:56:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flylinks\/"},"modified":"2026-09-19T14:56:10","modified_gmt":"2026-09-19T14:56:10","slug":"snipwing","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/snipwing\/","author":18252589,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.1","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Snipwing","header_author":"Avo Avetisyan","header_description":"Branded short links on your own domain, each with a QR code, click analytics and a one-tap share flow.","assets_banners_color":"3f77f2","last_updated":"2026-09-19 14:56:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/loyaltyoverroyalty\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"loyaltyoverroyalty","date":"2026-09-19 14:56:10","revision":3703388}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3703387,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3703387,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3703387,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3703387,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3703387,"resolution":"1","location":"assets","locale":"","width":2160,"height":2008},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3703387,"resolution":"2","location":"assets","locale":"","width":2520,"height":1872},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3703387,"resolution":"3","location":"assets","locale":"","width":2160,"height":2656},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3703387,"resolution":"4","location":"assets","locale":"","width":2160,"height":1754},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3703387,"resolution":"5","location":"assets","locale":"","width":2160,"height":1768}},"screenshots":{"1":"The links list, with copy and QR buttons on every row.","2":"A full-screen QR code, ready to scan or download as PNG or SVG.","3":"The add\/edit screen with live slug availability and the UTM builder.","4":"Per-link statistics: totals, a 30-day chart and a referrer breakdown.","5":"Settings: URL prefix, statistics retention and role permissions."}},"plugin_section":[],"plugin_tags":[17938,1373,727,5364,5530],"plugin_category":[],"plugin_contributors":[279072],"plugin_business_model":[],"class_list":["post-367849","plugin","type-plugin","status-publish","hentry","plugin_tags-link-management","plugin_tags-qr-code","plugin_tags-redirect","plugin_tags-short-links","plugin_tags-url-shortener","plugin_contributors-loyaltyoverroyalty","plugin_committers-loyaltyoverroyalty"],"banners":{"banner":"https:\/\/ps.w.org\/snipwing\/assets\/banner-772x250.png?rev=3703387","banner_2x":"https:\/\/ps.w.org\/snipwing\/assets\/banner-1544x500.png?rev=3703387","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/snipwing\/assets\/icon-128x128.png?rev=3703387","icon_2x":"https:\/\/ps.w.org\/snipwing\/assets\/icon-256x256.png?rev=3703387","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/snipwing\/assets\/screenshot-1.png?rev=3703387","caption":"The links list, with copy and QR buttons on every row."},{"src":"https:\/\/ps.w.org\/snipwing\/assets\/screenshot-2.png?rev=3703387","caption":"A full-screen QR code, ready to scan or download as PNG or SVG."},{"src":"https:\/\/ps.w.org\/snipwing\/assets\/screenshot-3.png?rev=3703387","caption":"The add\/edit screen with live slug availability and the UTM builder."},{"src":"https:\/\/ps.w.org\/snipwing\/assets\/screenshot-4.png?rev=3703387","caption":"Per-link statistics: totals, a 30-day chart and a referrer breakdown."},{"src":"https:\/\/ps.w.org\/snipwing\/assets\/screenshot-5.png?rev=3703387","caption":"Settings: URL prefix, statistics retention and role permissions."}],"raw_content":"<!--section=description-->\n<p>Snipwing turns your own domain into a short-link service. Name a link once and you get a branded URL like <code>yoursite.com\/go\/deck<\/code>, a QR code, and a one-tap copy button.<\/p>\n\n<p>It is built for speed and restraint, not feature count. No upsell nags, no \"pro\" teasers, no dashboard clutter.<\/p>\n\n<p><strong>Fast where it matters.<\/strong> A redirect resolves from an indexed slug lookup and, on a site with a persistent object cache, runs zero database queries. The theme never loads on a redirect, so short links are quick even under load. Clicks are recorded after the visitor has already been sent on their way.<\/p>\n\n<p><strong>Private by design.<\/strong> Snipwing never stores IP addresses, raw or hashed. Click analytics keep only the referring site's domain and a daily count. That keeps the plugin clear of consent-banner territory, and it is a deliberate difference from the incumbents.<\/p>\n\n<p><strong>Team-ready.<\/strong> Every link has an owner. Editors and above manage their own links by default; administrators manage everyone's. A settings screen lets you grant link management to any role, so a marketing team can run links without full admin.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Branded short links under a prefix you choose (default <code>\/go\/<\/code>).<\/li>\n<li>Per-link QR code, generated in your browser, downloadable as PNG or SVG. Your URLs are never sent to a third-party QR service.<\/li>\n<li>One-tap Copy button, with a mobile layout that works one-handed.<\/li>\n<li>Click analytics: totals, a 30-day chart, and a referrer-domain breakdown. No IP addresses.<\/li>\n<li>Redirect type per link (302 by default; 301, 307 and 308 available) with a plain-language warning on the permanent ones.<\/li>\n<li>Optional expiry date and click limit per link.<\/li>\n<li>Pin the links you share most to the top.<\/li>\n<li>Campaign tags (UTM) builder on the edit screen.<\/li>\n<li>CSV import from Snipwing, Pretty Links or Bitly exports, and CSV export.<\/li>\n<li>Role-to-capability settings, so you decide who can manage links and see stats.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Snipwing stores, per link, a daily click count and the domain of the referring website (for example <code>t.co<\/code>). It does not store IP addresses, full referrer URLs, user agents, or any per-visitor identifier. Statistics older than the retention period you set (12 months by default) are deleted automatically.<\/p>\n\n<h3>Third-party libraries<\/h3>\n\n<p>Snipwing bundles the QR Code Generator library by Kazuhiko Arase (qrcode-generator 1.4.4), used in the browser to draw QR codes. It is licensed under the MIT License. Source and license: https:\/\/github.com\/kazuhikoarase\/qrcode-generator . The library file and its licence are in <code>assets\/js\/vendor\/<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>snipwing<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install through Plugins \u2192 Add New.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open Snipwing in the admin menu and add your first link.<\/li>\n<li>Optionally visit Snipwing \u2192 Settings to change the URL prefix or grant link management to more roles.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20snipwing%20track%20visitors%20or%20store%20ip%20addresses%3F\"><h3>Does Snipwing track visitors or store IP addresses?<\/h3><\/dt>\n<dd><p>No. It stores a per-day click count and the referring site's domain, nothing else. No IP addresses, no cookies on the redirect, no per-visitor logs.<\/p><\/dd>\n<dt id=\"why%20is%20302%20the%20default%20redirect%20type%3F\"><h3>Why is 302 the default redirect type?<\/h3><\/dt>\n<dd><p>Browsers cache 301 (permanent) redirects aggressively, often for good. If you mistype a target and someone has already clicked, a 301 becomes very hard to fix. 302 keeps you free to change the target later. Snipwing warns you when you pick a permanent type.<\/p><\/dd>\n<dt id=\"can%20i%20use%20root-level%20short%20links%2C%20like%20yoursite.com%2Fdeck%3F\"><h3>Can I use root-level short links, like yoursite.com\/deck?<\/h3><\/dt>\n<dd><p>Not in this version. Links live under a configurable prefix so they can never shadow a real page or post.<\/p><\/dd>\n<dt id=\"will%20the%20short%20links%20slow%20my%20site%20down%3F\"><h3>Will the short links slow my site down?<\/h3><\/dt>\n<dd><p>No. Non-matching requests do a single string comparison and stop. A matched link resolves from the object cache when one is available, and the theme is not loaded for a redirect.<\/p><\/dd>\n<dt id=\"can%20other%20users%20manage%20my%20links%3F\"><h3>Can other users manage my links?<\/h3><\/dt>\n<dd><p>Only administrators, or a role you explicitly grant the \"edit and delete anyone's links\" capability. Everyone else manages only the links they own.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: short links with a QR code, click analytics, copy and QR sharing, per-link expiry and click limits, role-based management, UTM builder, and CSV import\/export.<\/li>\n<\/ul>","raw_excerpt":"Branded short links on your own domain, each with a QR code, click analytics and a one-tap copy-and-QR workflow. Fast, private, team-ready.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/367849","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=367849"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/loyaltyoverroyalty"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=367849"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=367849"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=367849"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=367849"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=367849"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=367849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}