Overview.
Your entire web presence. One clear view. All dates are UTC.
Visitor activity
Understand your audience
Audience
Devices
Browsers
Operating systems
Acquisition
Top pages
Traffic sources
Referrers
Geography
Select a marker to filter the visit log by country.
Country inferred at collection. Older visits may show Unknown.
Top events
Pages.
See what people read most, with clean page-level metrics.
Page performance
Filtered pageviews for the selected property and period.
Smart links.
Create short links, track accepted clicks, and manage QR codes. Hosted privately on go.ms.sy.
Create a smart link
No external shortener. Links redirect over HTTPS and are stored in your own database.
Link management
Search and manage each link without pop-ups.
Bulk CSV tools Export all links · Import up to 100 safely
Admin only. Imports 1–100 links atomically: invalid URLs, duplicate slugs, or unconfigured domains reject the entire file. Existing links and click statistics are never overwritten. The exported statistics are read-only on reimport.
Loading smart links…
Only accepted human-like clicks are recorded. DNT, GPC, HEAD, bot previews and prefetches are excluded. No raw IP addresses or tracking cookies.
Operations.
Read-only health and delivery signals from your own infrastructure. All timestamps are UTC.
Platform health
Internal read-only measurements, not an external uptime guarantee.
Collection quality
Accepted pageviews only, last 7 rolling days.
Website collection pulse
Zero activity is not an outage. DNT, GPC, consent and inactivity can suppress collections.
| Website | State | 24h | 7d | Last accepted | Collection signal |
|---|---|---|---|---|---|
| Loading… | |||||
Scheduled reports
Queue and schedule state, without exposing recipients or credentials.
API & account signals
Aggregates only; no bearer tokens, passwords or visitor IPs.
Operational snapshots
Download site activity, delivery queue or API summary as CSV. No maintenance actions are performed.
Read-only overview. PostgreSQL estimates, accepted tracking signals and queue metrics are not a substitute for external uptime monitoring or isolated backup restore tests. No IP addresses are stored by this page.
API & Integrations.
Connect your other projects without sharing your administrator password. Read-only access, scoped by permission and website.
Issue a restricted key
Only GET endpoints are exposed. Keys are stored as hashes; the full secret is shown once.
Keep it in a secret manager. Never put API keys into website JavaScript, query strings or public source code.
Manage access
Review usage, permissions and expiry. Revoke a key instantly without affecting the others.
No keys created yet.
Recent calls
API v1 · read-only
Use Authorization: Bearer YOUR_KEY over HTTPS. No admin session cookies, write operations, IP addresses or visitor identifiers are exposed.
GET /api/v1/metaGET /api/v1/stats?days=7GET /api/v1/reports?days=30GET /api/v1/goals?days=30GET /api/v1/traffic?days=7GET /api/v1/acquisition?days=30GET /api/v1/export/reports?section=sites&days=30GET /api/v1/export/goals?days=30GET /api/v1/export/traffic?type=daily&days=7GET /api/v1/export/acquisition?type=campaigns&days=30For website-restricted keys the site is enforced server-side, even when omitted from the URL. Rate limits are per key in 60-second fixed windows. CSV downloads require the same scoped key, not a public link.
Traffic intelligence.
Understand accepted activity, data coverage and ordered goal journeys. Privacy-aware SPA navigation, campaign attribution and session estimates.
Data quality
Coverage describes the stored data; an Unknown entry is not an outage.
Pageviews & events
Traffic sources
Referrers
Website breakdown
| Website | Pageviews | Events |
|---|
Countries
Browsers
Devices
Operating systems
Top pages
Custom events
UTM & SPA acquisition
Only accepted hits with safe campaign labels. Older visits without UTM stay unattributed.
Campaigns
Source / medium
Landing & route pages
Countries
Daily campaign & SPA activity
Aggregate data, protected and spreadsheet-safe.
Estimated sessions
Choose one website and 7 or 30 days. Session hashes survive up to 30 days and use 30-minute inactivity gaps.
Choose a website; estimates are not exact user sessions.
Two-step goal funnel
Choose one website and two active goals. Only surviving 30-day site-scoped continuity IDs count. Sessions are separated by 30 minutes of inactivity.
Choose a website to see eligible goals.
Aggregate CSV · no raw identifiers or IP addresses
Only previously accepted hits are analysed. Visitor IDs rotate daily. Conversion funnels are approximate within a 30-day session-token window, exclude older data lacking continuity IDs, and stop with an error rather than silently truncating busy sites. DNT, GPC and visitor consent are unchanged.
Goals & conversions.
Measure accepted pageviews and events that matter. No extra cookies or tracking.
Conversion goals
Each rule belongs to one website. Matches are computed from accepted historical hits within retention.
No goals yet. Create one below.
Daily conversions
Daily activity
Traffic sources
Countries
Create a goal
Exact page, path prefix (segment-aware), or custom event.
Exact page paths start with /. Prefix /pricing matches /pricing and /pricing/plans, not /pricing-extra.
window.msAnalytics?.track('signup_completed');Accepted tracking only · DNT/GPC/consent preserved · Estimated conversion rate = goal-matching daily visitor IDs ÷ daily pageview visitor IDs per website. It may exceed 100% for events without corresponding pageviews. Editing a rule recalculates history; disabled goals remain visible with historical matches but are excluded from headline totals. No new hit records are created.
Reports.
Compare your websites, discover traffic trends, and export useful data. All periods use UTC.
Performance by property
Accepted pageviews and estimated visitors; comparison with the equally long previous period.
| Website | Pageviews | Prev. views | Change | Est. visitors | Events |
|---|---|---|---|---|---|
| Open Reports to load site performance. | |||||
Daily activity
Accepted pageviews across the selected period.
No data loaded.
Traffic sources
Where recorded pageviews originated.
No data loaded.
Three clean CSV files: site comparison, daily traffic, and traffic sources.
Counts include accepted tracking only. Visitor totals sum site-specific, daily-rotating pseudonymous IDs; they are estimates, not distinct people across sites or days. Current rolling periods may include partial UTC days. Empty or retention-truncated previous periods may have no meaningful percentage change.
Visitor intelligence.
Explore sessions, repeat visits across UTC days and the paths visitors take.
Session timeline
Choose a session to expand its ordered page path. No pop-ups.
Open this page to load sessions.
Insights begin with v1.9.0 traffic. Pseudonymous, site-specific browser fingerprints are derived from IP and User-Agent, rotate every 30 UTC days and are cleared after 30 days. No raw IP address or browser storage identifier is retained for this feature. Browser identity is only an estimate, not verified identity. Check applicable privacy notice and consent requirements.
Visit log.
Recent activity, repeated pageviews and privacy-preserving visitor IDs.
Visitor IDs rotate daily (UTC); repeat counts cover the selected period.
Latest 200 records. Raw IP addresses are not stored or displayed.
My Account.
Manage your profile, credentials, passkeys and account sessions in one place.
Account information
Your administrator sign-in username remains fixed; profile details are editable.
Change password
New password: 16–72 bytes. Saved securely and previous sessions invalidated. On rollback to an older app version, the previous .env password may become valid again.
Two-factor authentication & passkeys
Keep your account recovery codes offline. Login protection activates only after TOTP confirmation.
1 · Authenticator app (TOTP)
Connect any standard 6-digit authenticator app. Scan the QR, then verify the first code.
Manual setup key:
Recovery codes · save once
Store the following ten one-use recovery codes in a password manager or offline. They won't appear again.
2 · Passkeys
Register a device passkey to use as an alternative second factor after your password. TOTP must be activated first.
Disable two-factor authentication
Requires your current password and a fresh authenticator code. Disabling TOTP also removes enrolled passkeys and recovery codes.
Single sign-on
Link the administrator to MS Identity. Your local password, authenticator, and recovery method remain active.
Active sessions & security activity
Revoke all other sessions while keeping the current browser signed in.
Notifications.
Configure email, Telegram and the private WhatsApp bridge. Send a real test message before enabling schedules.
SMTP
STARTTLS on 587 or implicit TLS on 465; certificates are verified.
Telegram Bot
Use a bot token and numeric chat ID. The token is never displayed again.
Check credentials and chat access without sending a message.
Private Notification Hub bridge
Only a local HTTP webhook with a compatible signed adapter. No public API.
No message is sent by a queue status check.
Direct internal Hub connection uses a fixed recipient configured in MS Notification Hub. Messages are queued, not confirmed delivered. The legacy adapter is ignored while direct Hub credentials are active.
Send a test message
Requires current account password; each test really calls the selected provider.
Send reports automatically
Configure email, Telegram, and your private WhatsApp Notification Hub. All schedules use UTC.
The server queues scheduled reports while running. Delivery attempts and errors remain visible. WhatsApp requires an explicitly configured local signed webhook adapter. A 2xx webhook response means acceptance, not verified delivery to a phone.
Automations.
Opt-in alerts for traffic incidents and Smart Links. Email, Telegram, or a private signed WhatsApp adapter.
Create notification rule
New rules are OFF by default. Enabling requires a configured provider. No messages sent by deployment.
Provider settings are managed under Notifications.
Delivery rules
No automation rules yet.
Recent attempts
No delivery attempts yet.
Accepted means a provider/API accepted the request, not proven delivery to a recipient. Retry applies only to failed requests and can resend a previously accepted message if the original response was lost. No raw IP or API secrets are saved here.
Settings.
Transparent data collection. Your browser stays in control.
Exclude my visits
Opt out of tracking events from this browser on the Analytics domain.
To exclude visits on ms.sy or any other tracked website, set the preference on that website itself. Previously recorded visits remain unchanged.
Site-specific opt-out
Use this in the browser console on the website you want to exclude.
localStorage.setItem('ms-analytics-optout', '1');
To enable tracking again, remove that localStorage key on the same site. This is not a server-wide exclusion.
Do Not Track controls
Choose how each website handles browser DNT requests. Default is strict.
Global Privacy Control (GPC) always blocks tracking. DNT remains respected until an explicit visitor decision. Turning OFF the automatic choice bar hides all injected privacy UI on that site, but does not make DNT visitors trackable. Manual consent integration can still be used where appropriate. Local opt-out always wins.
The existing /t.js tracker can show a consent strip on DNT browsers when the site uses Explicit consent mode and the switch above is ON. Turn it OFF for any website where you do not want an automatic bar. With the bar OFF, no floating Privacy button is injected. A custom, visitor-initiated consent control can be connected separately:
document.querySelector('#allow-analytics')?.addEventListener('click', () => {
window.msAnalytics?.setConsent(true);
});To revoke consent on that website: window.msAnalytics?.setConsent(false). Consent is stored locally per site for up to 90 days; GPC and local opt-out cannot be overridden. Review applicable privacy laws and ensure the user can withdraw consent.
Cloudflare Turnstile
Save keys first (inactive), then complete a real challenge to enable. Never locks the account without a verified challenge.
Turnstile: loading…
Websites.
Every connected property, in one place. Manage tracking without leaving your workspace.
Connected websites
Tracking keys, real accepted activity and privacy policy.
Connect another website
Give your site a name and its domain. No pop-ups, no extra steps.
Analytics alerts.
Detect unexpected silence after consistent accepted traffic. No false uptime guarantees.
Collection health
Checked automatically every 15 minutes, including when the dashboard is closed.
Loading rules…
An alert indicates missing accepted pageviews after regular historical activity, not confirmed website downtime. DNT, consent, blockers, seasonality and low traffic can affect detection. The default threshold is 48 hours, with at least 12 accepted pageviews across 3 UTC days in the preceding 7-day baseline.
Recent changes
No alert events yet.
Integration.
Connect a website and start measuring with a single lightweight script.
Install the tracker
Pageviews and SPA navigation are tracked automatically.
Create a website first.Paste this script before the closing </head> tag. No additional dependencies.
Record an interaction
Track meaningful actions beyond pageviews.
window.msAnalytics.track('signup_click');Use concise event names. Never include emails, names, passwords or other personal data. Events store only the event name and page path.
SPA routes using History API are detected automatically. For hash routers like #/pricing, add data-ms-spa="hash" to your existing tracker script. Campaign attribution accepts only safe UTM source/medium/campaign labels and still honors DNT/GPC.