PA
Pfoten AcademyDashboard

Willkommen zurück

Melde dich an, um auf das Live-Dashboard zuzugreifen.
Passwort vergessen?
Passwort wird lokal geprüft – keine Daten werden an externe Server übertragen.
Übersicht Umsatz
Anzeige

Dashboard – Umsatzübersicht

Letzte Aktualisierung · alle Werte in EUR brutto
Modus: Brutto inkl. 19 % MwSt.
Aktueller Monat
Zeitraum
Aktueller Monat
Letzter Monat
Letzte 7 Tage
Letzte 30 Tage
Quartal Q2 2026
Jahr 2026

Benutzerdefiniert …
vs. Vorperiode
Vergleich
vs. Vorperiode
vs. Vorjahr
vs. Ziel
Kein Vergleich
Alle Produkte
Produkt
Alle Produkte

Ausbildung – Online Kurs
Ausbildung – Premium Paket
Welpenkurs Basis
Alltagstraining Modul 3
Einzeltraining
Ausbildung & Hundeschule
Kategorie
Ausbildung & Hundeschule
Nur Ausbildung
Nur Hundeschule
Umsatz heuteTC+D24
1.890
▲ +35,4% vs. gestern
Umsatz Monat (Mai)TC+D24
28.450
▲ +18,7% vs. April
Umsatz Jahr 2026TC+D24
162.980
▲ +27,3% vs. 2025
Bestellungen MonatTC+D24
154
▲ +21,8% · Ø 184,74
Conv. 4,8 % ↑ +0,6 pp
Cashflow 30 T.Lexware
+ 12.840
Ein 41.290 · Aus 28.450
Umsatzverlauf – Mai 2026
ThriveCart Digistore24 live
5k4k3k2k1k 010510152531
—— Aktuell · – – Vorperiode (April) Σ 28.450brutto
Umsatz nach KategorieTC+D24
28.450 Gesamt Mai
Ausbildung 17.250 € · 60,6%
Hundeschule 11.200 € · 39,4%
Letzte Bestellungenlive
ZeitKundeProdukt
10:24SMSabrina M.Ausbildung – Online299
10:17TKThomas K.Welpenkurs Basis199
10:05JRJulia R.Alltagstraining 3149
09:51MLMaria L.Einzeltraining89
09:42SBStefan B.Premium Paket499
Alle Bestellungen →
Umsatz nach Produkt (Top 5)TC+D24
Ausbildung – Online Kurs ▲ +24% · 26,2%
Ausbildung – Premium ▲ +11% · 21,0%
Welpenkurs Basis ▼ −6% · 17,0%
Alltagstraining Modul 3 ▲ +4% · 11,4%
Einzeltraining — 7,6%
Top 5 entsprechen 83,2 % des Monatsumsatzes Σ 23.690
Conversion-Funnel · 7 TageThriveCart
Besucher 4.218100%
Checkout 61214,5%
Bestellung 20333,2%
Bezahlt 18792,1%
Gesamt-Conv. 4,43 % · ▲ +0,6 pp vs. Vorwoche
Benachrichtigungen3 neu
Ziel Mai erreicht 🎯

Monatsumsatz +18,7 % über April – Plan war +10 %.

vor 12 min
!
Schwacher Tag (06.05.)

Umsatz 42 % unter Median (Z-Score −2,3).

vor 3 Tagen
Storno · D24 #21482

149 € · Rückbuchung erfasst – Lexware abgleichen.

vor 38 min
Datenquellen
ThriveCartverbunden · Webhook live
Digistore24verbunden · Webhook live
LexwareAPI · alle 10 min

Technische Umsetzung mit n8n

Wartungsarmer Stack, der Bestellungen aus ThriveCart & Digistore24 sowie Belege aus Lexware automatisch zusammenführt und das Dashboard alle 5–15 Minuten aktualisiert. Alles self-hosted oder Cloud – du entscheidest.

StackArchitektur in 6 Schritten

01 · INGESTWebhooksTC + D24 senden Events live an n8n. Lexware via Pull alle 10 min.
02 · ORCH.n8nPro Quelle ein Workflow. Mapping in ein einheitliches Schema.
03 · STORAGEPostgresSupabase. Single Source of Truth (Bestellungen, Kunden, Belege).
04 · LOGICSQL ViewsVordefinierte KPI-Views (Heute / Monat / Jahr / Vorperiode).
05 · UINext.jsVercel-Hosting, Auth + Rollen, Realtime via Supabase.
06 · ALERTSn8n CronAnomalie-Erkennung & Mail-Versand · 1× täglich.

QuellenDatenquellen & Anbindung

QuelleMethodeFrequenzWichtige Events / Endpoints
ThriveCartWebhook (live) + Tages-SnapshotEchtzeitorder.success, order.refund, order.subscription_payment
Digistore24IPN Webhook + IPN-Pull als FallbackEchtzeit + 10 minon_payment, on_refund, on_chargeback, on_affiliation
Lexware OfficeREST-API (OAuth2)alle 10 minGET /invoices, GET /vouchers, GET /contacts

n8nWorkflow-Aufbau (Beispiel: ThriveCart-Bestellung)

Ein einzelner n8n-Flow je Quelle. Trigger → Validate → Map → Upsert in DB → optional Notify. Alle Geldbeträge werden brutto gespeichert; netto wird live im Frontend gerechnet (÷ 1,19) – so bleibt der Steuersatz änderbar, ohne dass Daten migriert werden müssen.

// n8n Workflow: ThriveCart → Supabase
trigger: "Webhook"  POST /hooks/thrivecart
  ↓
node: "IF"         event in [order.success, order.refund]
  ↓
node: "Function"   map → { external_id, source:"thrivecart", customer_email,
                          product_sku, amount_gross_cents, vat_rate, currency,
                          status, occurred_at }
  ↓
node: "Supabase"   upsert into orders ON CONFLICT (source, external_id)
  ↓
node: "IF"         is_refund → trigger alert workflow
  ↓
node: "Slack/Mail" optional notify

Lexware läuft analog als Schedule Trigger (alle 10 min) → HTTP-Node mit OAuth2-Credential → Loop über neue Belege seit last_sync_at → Upsert.

DBDatenmodell (Supabase / Postgres)

Kerntabellen

orders(
  id uuid PK, source text, external_id text,
  customer_id uuid, product_id uuid,
  amount_gross_cents int, vat_rate numeric,
  currency text, status text,
  occurred_at timestamptz,
  UNIQUE(source, external_id)
);

customers(
  id uuid PK, email citext UNIQUE,
  name text, first_seen_at timestamptz
);

products(
  id uuid PK, sku text, name text,
  category text, default_price_cents int
);

invoices(
  id uuid PK, lexware_id text UNIQUE,
  customer_id uuid, total_gross_cents int,
  status text, issued_at date, due_at date
);

alerts(
  id uuid PK, kind text, severity text,
  payload jsonb, created_at timestamptz
);

KPI-Views (Auszug)

-- Tagesumsatz brutto
CREATE VIEW v_revenue_daily AS
SELECT date_trunc('day', occurred_at) AS d,
       sum(amount_gross_cents)/100.0 AS gross,
       sum(amount_gross_cents/(1+vat_rate))/100.0 AS net,
       count(*) AS orders
FROM orders WHERE status='paid'
GROUP BY 1;

-- KPI heute vs. gestern
CREATE VIEW v_kpi_today AS
SELECT (SELECT gross FROM v_revenue_daily
        WHERE d = current_date) AS today,
       (SELECT gross FROM v_revenue_daily
        WHERE d = current_date - 1) AS yest;

Netto/BruttoSo funktioniert die Umschaltung

Brutto-Beträge werden zentral in orders.amount_gross_cents mit zugehörigem vat_rate (Default 0,19) gespeichert. Das Frontend toggelt im Header zwischen den beiden Modi:

  • Brutto · zeigt amount_gross_cents / 100 direkt
  • Netto · zeigt amount_gross_cents / (1 + vat_rate) / 100
  • Der gewählte Modus wird pro Nutzer in profiles.preferences.tax_view gespeichert (persistiert über Sessions)
  • Für Lexware-Belege wird der hinterlegte MwSt-Satz pro Position übernommen – keine Pauschal-Annahme

AuthLogin & Benutzerverwaltung

Rollen

  • Admin – voller Zugriff inkl. Benutzer & Datenquellen
  • Buchhaltung – Finanzen, Rechnungen, Stornos · keine Userverwaltung
  • Read-only – nur Dashboard, keine Detail-Drilldowns

Auth-Endpoints

POST/auth/login
POST/auth/magic-link
GET/me · /me/preferences
POST/users (Admin only)
POST/users/:id/invite

SetupEmpfohlene Schritte zur Live-Schaltung

  1. n8n-Instanz aufsetzen (Docker / n8n.cloud) – Credentials für TC, D24, Lexware hinterlegen
  2. Supabase-Projekt erstellen, Schema deployen, Auth aktivieren
  3. Workflows pro Quelle bauen und mit historischen Daten initial befüllen (Backfill-Run)
  4. Webhook-URLs in den jeweiligen Anbieter-Konten eintragen
  5. Next.js-Frontend auf Vercel deployen, ENV-Variablen setzen
  6. Anomalie- & Ziel-Cron in n8n aktivieren (täglich 23:00 Uhr)
  7. Testphase 7 Tage mit Abgleich gegen Lexware-Tagessumme

Aufwand-Schätzung: ~3–4 Wochen bis produktiv · monatliche Hosting-Kosten ~30–80 € (n8n + Supabase + Vercel).