Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Virling

БесплатноНе проверен

Open-source revenue attribution: see which traffic channel brings paying customers. Stripe, Dodo Payments and Polar. One Rust binary.

GitHubEmbed

Описание

Open-source revenue attribution: see which traffic channel brings paying customers. Stripe, Dodo Payments and Polar. One Rust binary.

README

Virling logo

Virling

Open-source revenue attribution. See which traffic channel brings paying customers, not just visitors.
virling.com · Live demo · Docs · For agencies

Virling dashboard: revenue, revenue per visitor and the channels that bring paying customers


Virling joins every visit to the payment that followed. It answers the questions a founder asks every week:

  • Which channel brought the most revenue this month?
  • Did that launch, tweet or Reddit post make money, or just traffic?
  • What is a visitor from each source worth?
  • What path did my last paying customers take before they paid?

It runs as one Rust binary with embedded storage. No Postgres, no ClickHouse, no Redis.

Status: early development. Releases are on the releases page and run on your own server today. Expect breaking changes until a stable release. The hosted beta is open to everyone at beta.virling.com.

What works today

  • Tracking script (/v.js, about 1.4 KB gzipped, source in assets/v.src.js): pageviews, UTM tags, referrers, single-page-app route changes, custom goals, and a first-party visitor ID. Stripe Payment Links, Polar checkout links and Dodo payment links get the visitor ID added automatically.
  • Cookieless mode: a daily-rotating salted hash instead of a cookie, for sites that want no consent banner, at the cost of payment attribution.
  • Event ingest into embedded DuckDB, with bot filtering, per-site rate limits and channel rules (Paid, Email, AI, Organic search, Communities, Social, Referral, Direct). Visitor IPs are never stored.
  • Payment sync from Stripe, Dodo Payments, Polar and LemonSqueezy with a read-only key (LemonSqueezy keys cannot be limited): a 90-day backfill, then a poll every minute. Virling never creates, changes or refunds anything. LemonSqueezy payments count toward revenue, but linking them to visits waits on webhook support.
  • Attribution: last non-direct or first touch, with a 30, 60, 90 or 365 day lookback. Renewals keep the channel of the customer's first payment. Payments without a visitor ID count as Unattributed.
  • Revenue dashboard: revenue, revenue per visitor and conversion by channel, referrer, campaign, page and country, payment journeys, a Visitors page, retention by first channel, tracked short links, and AI assistant visits next to AI crawler hits.
  • Reports and sharing: weekly email reports with agency branding, and an optional public dashboard.
  • Read API, MCP server and CLI: read-only access with API keys or OAuth sign-in, so virling query and AI assistants such as Claude and ChatGPT can answer revenue questions. Hosted Virling is in the Claude directory. An agent skill is in plugins/virling/skills/virling, and claude plugin marketplace add virling/virling installs it with the MCP server as a Claude Code plugin.
  • WordPress plugin in integrations/wordpress.
  • Magic-link sign-in and onboarding (behind --app).

Not available yet: the hosted plan, team members, imports from other tools, other attribution models and Windows builds.

Run it

With Docker:

docker run -d --name virling -p 8080:8080 -v virling-data:/data \
  -e VIRLING_BASE_URL=https://stats.example.com \
  ghcr.io/virling/virling:latest serve --app
docker exec virling virling add-site yourdomain.com --owner [email protected]

The full guide, with release binaries, a reverse proxy and payment setup, is at docs.virling.com. To run from source, you need Rust 1.99 or newer:

cargo run --release -- add-site yourdomain.com --owner [email protected]
cargo run --release -- serve --app

Then add the script to your site:

<script defer src="https://YOUR-VIRLING-HOST/v.js" data-site="yourdomain.com"></script>

Track a goal from your code:

virling("goal", "signup");

Pass the visitor ID into checkout so payments can be matched back to visits:

virling.vid();

Configuration

Variable Default What it does
VIRLING_DATA ./virling-data Folder for the SQLite and DuckDB files
VIRLING_ADDR 0.0.0.0:8080 Address to listen on
VIRLING_BASE_URL http://localhost:8080 Public URL, used in emails and snippets
VIRLING_APP off Serve sign-in and the app
VIRLING_SMTP_URL unset SMTP for emails, e.g. smtps://user:[email protected]:465. Unset: emails are logged
VIRLING_MAIL_FROM Virling <[email protected]> Sender for sign-in emails
VIRLING_TRUST_PROXY off Read the client IP from X-Forwarded-For
VIRLING_EVENTS_PER_SECOND 200 Ingest limit per site

Development

cargo test

worker/ holds the Cloudflare Worker that serves virling.com. It reuses the landing pages in assets/ and builds with wrangler deploy.

License

AGPL-3.0. Self-host it freely. If you run a modified version as a service, share your changes.

Built by Stacklance Infotech LLP.

from github.com/virling/virling

Установка Virling

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/virling/virling

FAQ

Virling MCP бесплатный?

Да, Virling MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Virling?

Нет, Virling работает без API-ключей и переменных окружения.

Virling — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Virling в Claude Desktop, Claude Code или Cursor?

Открой Virling на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Virling with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории data