# Links and simple counts through the owner's connection Use existing authenticated Spacefast tools. Discover each operation with tools.search, describe its input/output, and call the exact returned path. API bodies normally use result.data.data. Provider approvals remain authoritative. A skill supplies instructions; it does not supply account access. ## Save a link Read the chosen Space, current work mode, complete stored config and settingsDigest. Native redirect rules are `{source:'/chosen-alias',destination:'https://destination/',status:302}`. Literal root aliases are allowed when explicitly chosen and free; the included planner intentionally uses `/r/` and cannot create a root alias such as `/sf`. Check current redirect/rewrite patterns and authored files/routes for collisions. The homepage, teaching routes, downloads, assets and platform routes are reserved. Reject embedded credentials, unsupported destinations and loops. Preserve every unrelated settings field. Update the complete overlay via spaces.updateSpace with baseSettingsDigest; never use force. A stale409 requires rereading and replanning, not replaying the old array. If a write's outcome is uncertain, inspect before retrying. Read the saved rule and serving apply state. If required and authorized, apply runtime changes through the supported operation. Verify actual anonymous GET without following redirects:302 and exact Location. Native redirects can forward incoming query parameters. Known links reveal their destination; private management only prevents listing the owner's rule set. Browser/CDN caching remains platform-managed; report effective headers rather than promising requested no-store behavior. Keep link records in authenticated settings, outside public starter files. Export only the owner's requested records into a private artifact. An edit, disable or import preserves all other settings and must be verified on the serving target. ## Read counts `activity.getSpaceAnalytics({spaceId,window:'48h'|'7d'|'30d'})` returns time series, bandwidth, daily estimated visitors and the top10 paths/hosts. Match a requested link's pathname in topPaths. Missing means it is absent from that summary, not zero. Site total views includes assets and provider paths; daily visitors are site-wide estimates, not per-link unique people. Do not label the site's total as link clicks. For low-volume recent links, `activity.listSpaceEdgeLogs` returns a fixed paginated snapshot for an assigned hostname. Supported windows are at most1hour within the past24hours; plan retention may shorten this. Use GET/302 filters and aggregate the exact pathname locally. Page to exhaustion before claiming a complete count; truncation or unfinished pagination makes it a lower bound. Strip query strings for path matching, but do not collect or expose client IPs or private identifiers. Logs can arrive late, include bots and include your own synthetic checks: report that scope. This native option needs no new tracking tag, third-party account, dashboard or app key. It does not provide a permanent exact all-time per-link counter. If the user needs that later, design an explicit durable counting service rather than fabricating totals from incomplete logs. - [Analytics API](https://spacefast.com/docs/platforms/api/reference/activity/getspaceanalytics/) - [Spacefast API](https://spacefast.com/docs/api/)