Back to the field map Short links

The short host is Antics. Shlink is gone.

https://sh.turtletech.us/{slug} is the public hostname for native Antics links. Caddy sends that host to the Antics resolver at /r/{slug}. The hostname stays so old URLs keep working and so slugs never collide with analytics routes on antics.turtletech.us. What was retired is Shlink, the old PHP service, not the host. https://sh.turtletech.us/{slug} /r/{slug}

GET on the short URL records a visit in the redb counter and appends a link_visits row. HEAD resolves the destination and does not count. The response is a 301, 302, 307, or 308 with a Location header and Cache-Control: no-store. The resolver does not fetch the destination and does not set Content-Disposition. link_visits

That is why a same-origin PDF button with the download attribute never showed up as an outbound click: the tracker only fires _outbound when the href leaves the page origin. Point the button at a native link and the count is the GET, not a tracker event. The browser then follows Location to the file. The HTML download attribute does not apply across origins, so a save dialog has to come from the file host (for example a Content-Disposition header on the PDF), not from Antics.

Use a tracker event when there is no durable public URL to share. That count lives in the event stream, can be dropped by a blocker or by the download navigation, and is not the Links visit total. For a file people will bookmark or pass around, create the native link.

Dashboard Links is a folder library. Title is the heading. The slug is a copy chip. One hop opens a folder; Blog/pdf/2024 is three hops. Folder cards show lifetime visits, last visit, and counts. They do not show unique people. Blog/pdf/2024 How to create a short link