By product
Every number is clickable — drill into the detail| Product | Activations | Purchases | Revenue | Open tickets | Visitors 30d |
|---|
Traffic last 30 days — analytics →
Recent Activations
| Product | Version | Time |
|---|
Infrastructure — your Hetzner nodes
| Name | Status | Public IP | Private IP | Type | Region | Traffic (mo) |
|---|
Generate Activation Key
The key is a deterministic hash of email + product — same email always produces the same key for that product.
It's an identity marker: "this email has been issued a license for MyBooks." Nothing else is baked in.
Everything mutable — update-support expiry, seat count, purchase amount, renewal history, block status — lives server-side in dbo.purchases / dbo.blocked. The client app calls the API on every activation + update check to get the live state.
That means you never need to re-issue a key when someone renews, adds a seat, changes their password, etc. — it just keeps working. Resending the same email/key pair to a customer who lost their receipt is the normal recovery path.
Products
The one registry (dbo.products) behind every product dropdown in this portal, the customer portal + magic-links, desktop pricing, trial-extension eligibility, and visitor-analytics attribution. Edit a product here and it flows everywhere — no code deploy. Code is the permanent key; everything else is editable.
| Code | Name | Kind | Surfaces | Site | Price | Active | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Payment plans
Finance-to-own purchases. Active = paying; Owned = all payments made; Forfeited = cancelled early (licence revoked unless they own the product another way).
| Started | Product | Plan | Paid | Status | |
|---|---|---|---|---|---|
| Loading… | |||||
Add a product
Surfaces: portal = customer portal + marketing site (also gets analytics attribution); roadmap = public feature roadmap; trial = redeemable trial-extension codes.
Referral programme: one-time licence sales only. Codes are managed under Referrals.
Each plan is months x monthly price. The buyer gets the licence from the first payment and owns it after the last; cancelling early ends the licence. Single-user licence, no referral code. Plans in progress are listed under the product table.
Leave blank to inherit the platform default; enter 0 for a trial to say the product has no free trial. A remote product has no free trial unless you type one in. The BETA row applies only while Beta is ticked. A support window is stamped as a fixed date when someone buys — changing these never shortens a window a customer already has.
Blocked Emails
| Product | Reason | Blocked At | Actions |
|---|
Secure transfers
A private link for one person: they send us files, we put files on it for them, or both. Everything on a link is encrypted on the server and deleted when the link is closed or expires. QuickBooks conversion and VAT harvest links are the two presets with their own pages.
| Label | Kind | Status | Files | Created / expires | By | Actions |
|---|
Feature Requests
Review submissions, approve or decline them, merge duplicates, and set roadmap status. Only approved / planned / in progress / shipped items appear on the public roadmap and accept votes; new submissions arrive as pending.
| Product | Title | Status | Votes | Submitted | Actions |
|---|
Visitor Analytics — cookieless, no consent banner
Conversion funnel — our own data; nothing is shared to measure this
Each stage shows how many carried over from the one before it, and from the top.
Pages — the A/B columns for every page, filterable by where the visit came from
Landing-page A/B — cookieless split-testing
Counts only visits that arrived through the ad link below — that is what tags a visitor with a variant. Someone who opens a variant page directly is ordinary traffic and is not counted here, so these stay at zero until a campaign points at the link.
Identified leads
Click a row for the full cross-product journey.
| First touch | Products | Events | Last seen |
|---|
Support Tickets
| ID | Subject | Customer | Product | Type | Status | Msgs | Updated |
|---|
Purchases
| Date | Product | Amount | Activation Key | Seats | Support | Mode |
|---|
Subscriptions
Every recurring Stripe subscription across live and test mode, any product. Cancel/reactivate are admin-only; the Stripe link opens the full record.
| Customer | Product | Plan | Amount | Status | Actions |
|---|
Referrals
A referral code gives the buyer a discount and/or earns the referrer a fee, on one-time licence sales (MyBooks, MyOffice, MyPDF, MyCRM self-host, MyBids self-host). A fee is held for the refund window, then becomes payable. Nothing pays out automatically — you send the money yourself, then record it here.
Who we owe
Live sales only (test-mode checkouts never owe anyone).
| Payee | Held | Payable now | Paid to date |
|---|
New referral code
Codes
| Code | Referrer | Product | Fee | Discount | Uses | Earned | Status |
|---|
Referrers — W-9 / 1099
Collect a W-9 (W-8BEN for someone outside the US) before the first payout — Record payout asks for one. Keep the form itself wherever you file tax documents; here you record that you have it, where it is, and the last four digits of the SSN/EIN only. Totals are what you paid in the calendar year (live money). Not tax advice — your accountant files the 1099s.
| Referrer | Legal name | Tax form | TIN | Paid in year | 1099-NEC |
|---|
Earnings
| Date | Code | Referrer | Buyer | Product | Sale | Discount | Fee | Status |
|---|
Trial Downloads
| Last Download | Downloads | Product | Downloaded | Installed | Status |
|---|
Installed — no matching download
Trial installs the app reported that no download above explains: the email entered in the app (or no email) never downloaded a trial, and the install was not matched to a download by network either. Same window and Hide test data switch as the list above.
| Product | Install email | Machine | Version | First seen | Last seen | Days active |
|---|
Trial extension codes
Mint a single-use code that extends a MyBooks / MyOffice desktop trial by N days. Give it to the prospect to enter in the app. The code is shown once here — only its hash is stored.
| Product | Days | Note | Created | Status |
|---|
Users & Help Agents
Admin — full access, including managing users and Secrets. Super User — sees everything except Secrets and this Users page, and can edit the Product registry. Help Agent — day-to-day support (tickets, customers, activations); no user management or Secrets. Change a role from the dropdown in each row — it applies immediately.
| Username | Name | Role | Created | Actions |
|---|
Customers
| Name | Phone | Products | Spent | Machines | Support | Last Active |
|---|
MyRemoting Orders
| Customer | Type | Amount | Purchased | Server / Key | Status | Ops |
|---|
Email tools
Send yourself a sample customer email to review the copy and rendering. Uses a synthetic trial — no real customer or subscription is touched.
Credentials & API Keys
Encrypted at rest (AES-256-GCM). The master key & DB connection stay in the environment; everything else is managed here. Values are write-only — only a masked preview is shown, and saving applies immediately.