Search by email, edit roles and plans, adjust credits, and export activity reports.
Catalog is the credit tier from Plans for the user’s plan code. Wallet is the live balance (users.credits). On FREE they often differ after coupons, top-ups, or admin grants. Δ = wallet − catalog. Used (jobs) is lifetime net TTS spend per email and survives account deletion.
Bulk delete creates the same closed-account snapshot as self-delete. You cannot delete yourself or the last admin.
| # | ID | Role | Plan | Catalog | Used | Wallet | Status | Created | Actions |
|---|
Snapshots are written when someone confirms deletion or an admin deletes a user. Historical deletes only appear in Audit — use Import from audit log once to backfill. Restore recreates login for that email. Remove drops the snapshot only. Empty trash requires typing EMPTY_TRASH.
| Record | Former UID | Deleted | Credits → carryover | Jobs | Actions |
|---|
When you change a plan’s Credits (FREE, PACK1, or PACK2), the catalog row and .env update, then every non-admin subscriber on that plan gets: wallet = max(0, new catalog credits − Used jobs) where Used jobs is lifetime net TTS consumption per email. New signups still use the FREE row for the welcome grant. Reconcile… re-runs the same formula against the current catalog without editing the row (useful if usage counters were fixed).
AI Enhance (per plan): Per day = max uses per UTC day · Credits = charge wallet each time · Both = daily cap and credit cost. Day / Cr inputs apply per mode. Save updates catalog + enhance rules. Lowering limits applies immediately to usage already counted today.
| Code | Name | Credits | Price (EUR) | AI Enhance | Active |
|---|
EU billing. Currency is EUR (€). Customers choose Private (personal) or Company (business) at checkout. If you are VAT-registered, enable it below and set your domestic VAT % (e.g. 22% Estonia). If you are not VAT-registered, leave it off — invoices show 0% VAT with a “not VAT-registered” note. EU B2B cross-border uses reverse charge (Art. 196) — the buyer selects it and must provide a VAT ID. IBAN should match your Wise Business / SEPA account.
Resend PDF requires working SMTP (Email tab).
| When | Number | Client | Buyer email | Total | VAT | Email sent |
|---|
| Code | Type | Value | Used | Limit | Valid until | Active |
|---|
Live metrics refresh every few seconds while this tab is open.
| ID | Public | User ID | Account | Status | Progress | Cost | Created |
|---|
Important — 2FA / Google Authenticator
The 6-digit code from Google Authenticator is only for logging into Gmail in the browser. This app never asks for that code. For SMTP you must create a separate App password (16 letters) in your Google Account after 2-Step Verification is on — then paste only that App password in the field below, not your normal Gmail password.
Open: myaccount.google.com/apppasswords → create “Mail” (or Other) → copy the 16-character password → paste here → Save & reload. SMTP user and From email should be the same @gmail.com as the account that created the App password.
Why mail can land in Spam / Promotions
@gmail.com you authenticated with, or use a transactional provider (SES, Postmark, Mailgun) with SPF/DKIM on your domain.Auto-Submitted: auto-generated for clearer automation signalling.Saving updates .env on the server and reloads mail in this process (no systemd restart needed for SMTP).
Get emailed when users register or delete their own account. Toggles and the optional recipient list are stored in the database. If “Recipient addresses” is empty, the server will still try to deliver alerts using the SMTP login address, then ADMIN_EMAIL in config, then the first active admin account — but adding at least one address below is best so you always know where mail goes. Use Send test with the values currently in the form — saving first is optional.
Optional but recommended: one address per line or comma-separated. If left empty, signup/delete alerts still use the SMTP mailbox / admin fallback above. Send test below needs either this box or Send test to (SMTP section).
Configure the Groq API used by the Generate page “AI Enhance” feature. Values are written to .env on this server and reloaded immediately (same pattern as SMTP).
Security & compliance
Append-only history of sign-ins, admin changes, purchases, and automated system events.
Who is the signed-in account (email when still in the database). Target is the affected resource; for user targets the account email appears when the row still exists.
Search matches action, details, target type, and IP. Export CSV for compliance. Clear log deletes all rows and writes one replacement entry — type CLEAR_AUDIT to confirm.
| When | Who | Action | Target | Details | IP |
|---|