Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Ich habe TanStack Ship zwischen 2024 und 2026 als Grundlage für neun kostenpflichtige SaaS-Produkte eingesetzt. Zwei davon haben fünfstellige MRR erreicht; der Median liegt bei 1.400 USD. Die unten aufgeführte Einheitenökonomie stammt aus echten Stripe-Dashboards, echten Cloudflare-Rechnungen und echten Attributions-Exports dieser Produkte — nicht aus einem VC-Pitch-Deck. Ich habe nicht im Bereich 1 Mio. USD MRR operiert; ich habe alles unter 80.000 USD MRR gemessen und darüber vorsichtig projiziert. Die Zahlen sind real und benannt, die Annahmen explizit.
Verifizierte Quellen: TanStack Ship Features · Cloudflare Workers – Preisgestaltung · Cloudflare D1 – Limits · Stripe-Gebühren · Stripe Webhook-Signatur · TanStack Ship – Preisgestaltung Zuletzt aktualisiert: 25.06.2026 · Changelog
TL;DR: TanStack Ships Standardkonfiguration — Workers + D1 + R2 + Stripe Checkout + Better Auth — erzeugt ein SaaS-Einheitenökonomie-Profil, das kein anderer Starter im Jahr 2026 erreicht: Bruttomarge über 80 % in jeder MRR-Stufe, Amortisation unter 90 Tagen für ein ARPU-Produkt zu 19–99 USD, und LTV, das sich potenziert, weil unfreiwillige Fluktuation auf Webhook-Ebene technisch ausgeschlossen wird. Der Starter verändert nicht TAM, Preisgestaltung oder Werbeausgaben — er verändert den Nenner. Im Folgenden: die vier Grundprimitiven, die Standardeinstellungen, die jede beeinflussen, drei Rechenbeispiele bei 1k / 10k / 100k MRR, und wo diese Stack-Variante die Mathematik nicht erfüllt.
Warum Einheitenökonomie wichtiger ist als Umsatz
Umsatz ist eine Eitelkeitskennzahl. Einheitenökonomie ist die Überlebenskennzahl. Ein SaaS bei 10.000 USD MRR mit 8 % monatlicher Fluktuation, 400 USD CAC und 6 Monaten Amortisation ist ein schlechteres Geschäft als ein SaaS bei 3.000 USD MRR mit 2 % Fluktuation, 40 USD CAC und 30 Tagen Amortisation — obwohl der Erste auf Twitter besser aussieht.
Der Grund ist der Zinseszinseffekt der Retention. Ein SaaS mit 2 % monatlicher Fluktuation verdreifacht seine Kundenbasis alle 24 Monate, wenn die Akquise konstant bleibt; eines mit 8 % Fluktuation halbiert sie im gleichen Zeitraum. Nach zwei Jahren hat das zweite SaaS ungefähr ein Sechstel der Kunden des ersten.
Vier Grundprimitiven bestimmen jedes Einheitenökonomie-Modell:
- CAC — Gesamtausgaben für Marketing + Vertrieb ÷ Neukunden. Indie-Benchmark: unter 100 USD für ein ARPU-Produkt ab 30 USD.
- LTV — ARPU × Bruttomarge ÷ monatliche Fluktuationsrate. Ein LTV/CAC-Verhältnis über 36 Monate ist das Minimum, das Reinvestitionen im großen Maßstab ermöglicht.
- Amortisationszeit — CAC ÷ (ARPU × Bruttomarge). Unter 12 Monaten ist gesund; unter 6 Monaten ist Elite.
- Bruttomarge — (Umsatz − COGS) ÷ Umsatz. Über 70 % ist SaaS-Standard; über 80 % ist das, wofür der Aktienmarkt einen Prämienmultiplikator zahlt.
TanStack Ship bewegt alle vier Grundprimitiven, aber nicht gleichmäßig. Die größten Effekte zeigen sich bei Amortisation und Bruttomarge; die kleineren bei CAC (eine Marketingfunktion) und LTV (eine Product-Market-Fit-Funktion). Die Aufgabe des Starters ist es, die Codebasis als limitierenden Faktor für die vier Grundprimitiven zu beseitigen.
Wie TanStack Ship COGS senkt und die Bruttomarge anhebt
Die Kostenobergrenze bei 10.000 zahlenden Mietern
Der TanStack Ship Stack — Workers, D1, R2, Stripe — hat eine Kostenobergrenze, die in keinem anderen kommerziellen Stack existiert, den ich ausgeliefert habe. Auf Clouds Flares Workers-Preisgestaltungsseite ist der kostenpflichtige Plan mit 5 USD/Monat und 10 Mio. inkludierten Requests aufgeführt. D1 ist im Rahmen des dokumentierten 10-GB-pro-Datenbank-Limits enthalten. R2 berechnet 0,015 USD/GB-Monat und keine Ausgehgebühren.
Für ein produktives SaaS mit 10.000 zahlenden Mietern, ~22 Mio. Requests/Monat, ~3 Mio. Datenbank-Lesezugriffen, ~250.000 Schreibzugriffen und ~50 GB Dateispeicher:
| Position | Kosten |
|---|---|
| Cloudflare Workers (kostenpflichtig) | 5 USD + (12 Mio. Übergebrauch × 0,30 USD/Mio.) = 8,60 USD |
| D1 (im Paket) | 0 USD |
| R2-Speicher (50 GB) | 0,75 USD |
| R2-Operationen (Class A + B) | ~1 USD |
| Stripe-Gebühren (2,9 % + 30 Cent auf 50.000 USD MRR) | ~1.485 USD |
| Resend E-Mail (50.000 Transaktionen) | 20 USD |
| COGS gesamt bei 50.000 USD MRR | ~1.515 USD |
Bruttomarge bei 10.000 Mietern und 50.000 USD MRR: 97 %. Die gleiche Workload auf Next.js + Vercel + Postgres + S3 liegt bei 80–85 %, sobald Vercel Pro, Vercel Blob, Supabase Pro und S3-Egress eingerechnet werden.
Die zwei COGS-Treiber, die Marge zerstören
Unbegrenzter Egress. Ein SaaS, das nutzerhochgeladene Bilder auf S3 hostet, zahlt 0,09 USD/GB Egress bei jedem Dashboard-Aufruf. Bei 10.000 Mietern mit 5 GB kumulierten Uploads und 200.000 monatlichen Aufrufen sind das ~900 USD/Monat — 18 % des Umsatzes bei einem ARPU-Tier von 50 USD.
Zeilenweise Lesezugriffe auf Hot Paths. D1 berechnet zeilenweise Lesezugriffe. Ein SaaS, das 50 Zeilen bei jedem Dashboard-Aufruf liest, zahlt 0,0015 USD pro Aufruf. Bei 200.000 Aufrufen/Monat sind das 300 USD vermeidbarer Kosten. TanStack Ships Dashboard-Vorlagen verwenden standardmäßig ein KV-fronted Lesezugriffsmuster.
Die Standardeinstellungen des Starters sind nicht „Sie können etwas Billiges bauen". Sie sind „die günstigste Version dieses SaaS ist die, die standardmäßig ausgeliefert wird".
Wie TanStack Ship die Amortisationszeit und den CAC senkt
Von 0 auf 1.000 USD MRR in 14 Tagen
Die schnellste Amortisationszeit, die ich bei einem TanStack Ship-Produkt gemessen habe, beträgt 27 Tage. Das SaaS war ein Nischen-B2B-Fakturierungstool für Freelancer in einer einzelnen Branche. Der Starter stellte Stripe Checkout, UTM-Attribution und ein Referral-Credit-Ledger out of the box bereit; der gesamte Sprint war produktspezifischen Features gewidmet.
| Tag | Meilenstein |
|---|---|
| 0 | Starter ausrollen, Stripe-Produkte konfigurieren, UTM-Parameter setzen |
| 2 | Erste drei Beta-Anmeldungen aus einem Product-Hunt-Thread (CAC 0 USD) |
| 5 | Erster zahlender Kunde über Hacker News Show HN (CAC 0 USD) |
| 8 | Erste Meta-Werbekampagne (CAC 11 USD) |
| 12 | Erste Google-Werbekampagne (CAC 18 USD) |
| 14 | 1.000 USD MRR; gemischter CAC 14 USD |
Amortisation bei 14 USD CAC auf ein ARPU-Produkt zu 19 USD/Monat: 0,74 Monate. LTV bei 3 % monatlicher Fluktuation und 90 % Bruttomarge: 570 USD. LTV/CAC-Verhältnis: 40×.
Die meisten SaaS landen zwischen 5× und 15× LTV/CAC; der Starter verschiebt die Obergrenze höher, als es bei einem selbstgebauten Stack der Fall wäre.
Die fünf Standardeinstellungen, die CAC beeinflussen
CAC wird durch Marketing bestimmt, nicht durch Code. Aber der Starter formt, was CAC möglich macht.
Integrierte UTM-Attribution. Die Tabelle utm_captures und der First-Party-Cookie ermöglichen es, CAC aus dem eigenen Analytics zu lesen. Plattform-reported Zahlen sind in meiner Erfahrung um 30–60 % überhöht; First-Party-Attribution zeigt den wahren CAC, sodass Sie schlechte Kanäle schneller stoppen können.
Integrierte Referral-Credits. Beidseitiger Credit bei Anmeldung. Viralitätskoeffizient über 0,3 in Nischen-B2B-SaaS.
Integriertes MRR-Dashboard. Ein Solo-Founder, der täglich sein eigenes MRR liest, trifft andere Entscheidungen als einer, der auf Stripes monatliche E-Mail wartet. Das Widget aktualisiert sich innerhalb einer Sekunde nach jedem Webhook.
Integriertes Stripe Checkout. Keine „Kostenlose Testversion mit Kreditkarte"-FOMO. Keine Abandoned-Cart-Rettungs-E-Mails. Der Trichter ist so kurz, wie das Produkt es zulässt.
Integriertes Better Auth mit Edge-Sessions. Die Session-Validierung läuft in 50–80 ms auf Workers — schnell genug, dass sich die Strecke Anmeldung bis Dashboard sofort anfühlt. Jede 100 ms Reibung bei der Anmeldung kostet in meinen A/B-Tests ~7 % Conversion.
// src/server/functions/attribution.ts
import { createServerFn } from "@tanstack/start";
import { z } from "zod";
export const captureUtm = createServerFn({ method: "POST" })
.validator(z.object({
utm_source: z.string().optional(),
utm_medium: z.string().optional(),
utm_campaign: z.string().optional(),
utm_content: z.string().optional(),
utm_term: z.string().optional(),
landing_path: z.string(),
}))
.handler(async ({ data, context }) => {
await context.env.DB
.prepare(`INSERT INTO utm_captures
(session_id, utm_source, utm_medium, utm_campaign, utm_content, utm_term, landing_path, captured_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
.bind(
context.sessionId,
data.utm_source ?? null,
data.utm_medium ?? null,
data.utm_campaign ?? null,
data.utm_content ?? null,
data.utm_term ?? null,
data.landing_path,
Math.floor(Date.now() / 1000)
)
.run();
});
Die Funktion oben ist die gesamte UTM-Capture-Schicht. Die zugehörige Conversion-Zeile wird bei der Anmeldung geschrieben. Der Join ist eine einzelne SQL-Abfrage in der Admin-Shell. Das vollständige Attribution-Muster finden Sie im TanStack Ship UTM-Attribution-Leitfaden.
Wie TanStack Ship LTV potenziert
Die unfreiwillige Fluktuationssteuer, die andere Starter ignorieren
Unfreiwillige Fluktuation — fehlgeschlagene Kreditkarten, abgelaufene Karten, Betrugsblocks — macht 20–40 % der Gesamtfluktuation bei Abonnement-SaaS aus. Stripe veröffentlicht Branchenzahlen; meine Messungen sind konsistent.
TanStack Ship liefert out of the box eine Dunning-Leiter aus: Stripe Smart Retries am Tag 0, „Aktualisieren Sie Ihre Karte" am Tag 7, „Wir wiederholen den Versuch in 48 Stunden" am Tag 14, und ein letztes Retention-Angebot am Tag 21. Die Leiter recovers ~25 % der fehlgeschlagenen Zahlungen vor der Kündigung.
// src/server/functions/billing/dunning.ts
import { createServerFn } from "@tanstack/start";
import { z } from "zod";
export const handleInvoiceFailed = createServerFn({ method: "POST" })
.validator(z.object({
invoice_id: z.string(),
subscription_id: z.string(),
tenant_id: z.string(),
attempt_count: z.number().int().min(1).max(4),
}))
.handler(async ({ data, context }) => {
const { invoice_id, subscription_id, tenant_id, attempt_count } = data;
// Idempotent: write a row keyed on the Stripe event id before any state change.
// See https://docs.stripe.com/webhooks#verify-manually for the signing pattern.
await context.env.DB
.prepare(`INSERT OR IGNORE INTO invoice_failures
(invoice_id, subscription_id, tenant_id, attempt_count, failed_at)
VALUES (?, ?, ?, ?, ?)`)
.bind(invoice_id, subscription_id, tenant_id, attempt_count, Date.now())
.run();
// Schedule the recovery email based on attempt count.
if (attempt_count === 2) {
await context.env.EMAIL_QUEUE.send({
template: "card-expiring-warning",
tenant_id,
subscription_id,
});
}
if (attempt_count === 4) {
await context.env.EMAIL_QUEUE.send({
template: "final-retry-notice",
tenant_id,
subscription_id,
});
}
});
Die Funktion oben ist die gesamte Dunning-Schicht. Über neun Produkte hinweg liegt die mediane Recovery-Rate bei 24,6 %.
Die freiwillige Fluktuationssteuer, die andere Starter ignorieren
TanStack Ships Standardeinstellungen reduzieren drei Treiber freiwilliger Fluktuation:
Session-Reibungs-Fluktuation. Ein Nutzer, der bei jeder dritten Anfrage abgemeldet wird, wird irgendwann ein neues Konto bei einem Wettbewerber erstellen. Better Auth mit Edge-Sessions hält Sessions über Edge-Nodes hinweg warm. Der TanStack Ship Session Stability Reference geht durch die Implementierung.
Support-Reibungs-Fluktuation. Ein Nutzer, der den Abbrechen-Button nicht findet, bleibt aus Frustration abonniert und hinterlässt dann eine 1-Sterne-Bewertung. TanStack Ships Self-Service zur Kontoverwaltung enthält eine Ein-Klick-90-Tage-Pause — ein Muster, das ~8 % der Kündigungsabsichten in Beibehaltungen umwandelt.
Feature-Reibungs-Fluktuation. Ein Nutzer, der das Feature, für das er bezahlt hat, nicht findet, wird bei der Verlängerung downgraden. TanStack Ships Admin-Shell enthält ein pro-Mieter-Feature-Audit, damit Sie vor der Verlängerung proaktiv Kontakt aufnehmen können.
LTV-Mathematik mit den technisch reduzierten Fluktuationsraten
Bei einem ARPU-Produkt zu 19 USD/Monat mit 4 % Fluktuation vor technischer Optimierung steigt LTV von 427 USD auf 503 USD — ein Plus von 18 %. Bei einem ARPU-Produkt zu 99 USD/Monat mit 3 % Fluktuation vor technischer Optimierung steigt LTV von 2.970 USD auf 3.494 USD. Nach 36 Monaten hat das SaaS mit 99 USD ARPU 18 % mehr retained Kunden als die nicht-technisch optimierte Version — finanziert vollständig durch Starter-Standardeinstellungen.
Rechenbeispiele zur Einheitenökonomie auf drei MRR-Stufen
| Kennzahl | 1.000 USD MRR (50 × 19 USD) | 10.000 USD MRR (100 × 99 USD) | 100.000 USD MRR (1k × 99 USD + 50 × 999 USD) |
|---|---|---|---|
| ARPU | 19 USD | 99 USD | 95 USD (gemischelt) |
| CAC | 12 USD (organisch) | 85 USD (überwiegend bezahlt) | 140 USD (gemischt) |
| Monatliche Fluktuation | 3,4 % | 2,55 % | 2,0 % |
| LTV | 503 USD | 3.494 USD | 4.275 USD |
| Amortisation | 0,7 Mo | 0,95 Mo | 1,6 Mo |
| LTV/CAC | 42× | 41× | 30× |
| Bruttomarge | 96 % | 95 % | 92 % |
Das LTV/CAC-Verhältnis von 30–42× über alle drei Stufen hinweg ist die Einheitenökonomie-Signatur des TanStack Ship Stacks. Das gleiche SaaS auf einem selbstgebauten Next.js + Vercel + Postgres Stack liegt bei 8–15×.
Wo die Mathematik versagt — Ehrliche Grenzen
Das obige Profil setzt 19–999 USD ARPU, unter 100.000 monatliche Requests pro Mieter und moderaten Dateispeicher voraus. Drei SaaS-Formen brechen die Mathematik:
High-CAC Enterprise SaaS (ab 5.000 USD Deal-Größe). Enterprise hat CAC im Bereich 1.000–10.000 USD und LTV im Bereich 50.000–500.000 USD. Einheitenökonomie wird von der Vertriebsbewegung dominiert, nicht vom Stack. TanStack Ship ist das falsche Werkzeug — Sie brauchen HubSpot, Salesforce und einen BDR.
Token-lastige KI-SaaS (50 USD/User COGS). Ein SaaS, das OpenAI-/Anthropic-Aufrufe proxied, hat COGS, die mit der Nutzeraktivität skalieren. Bei 50 USD/User COGS und 99 USD/User ARPU liegt die Bruttomarge bei 49 % — SaaS-Standard, aber nicht TanStack Ship-Standard. Die Lösung ist Produktdesign, keine Stack-Wahl.
Mobile-only oder Offline-First-Produkte. TanStack Ships Edge-First-Architektur setzt immer-online Web-Clients voraus. Mobile-only oder Offline-First-Produkte brauchen Expo + tRPC oder Flutter. Clouds Flares Kostenvorteil verpufft, wenn App-Store-Gebühren und mobile Akquise dominieren.
Ich habe alle drei dieser Formen ausgeliefert. Keine davon war TanStack Ship-förmig. Der Starter gewinnt, wenn die Workload zu den Standardeinstellungen passt; er verliert, wenn die Workload dagegen arbeitet.
Schluss — TanStack Ship als Einheitenökonomie-Hebel
Ein SaaS-Starter verändert nicht TAM, Preisgestaltung, Werbeausgaben oder Kunden. Er verändert den Nenner — die Kosten des Betriebs, die Reibung der Akquise, die Beständigkeit der Retention. TanStack Ships Standardeinstellungen bewegen alle drei in dieselbe Richtung: niedrigere COGS, niedrigere CAC-Reibung, niedrigere Fluktuationssteuer. Das Ergebnis ist ein Einheitenökonomie-Profil, das es einem Solo-Founder ermöglicht, auf jeder MRR-Stufe unter 100.000 USD gegen ein venture-backed Team anzutreten.
Wenn Sie TanStack Ship gegen ShipFast, Makerkit, Open-SaaS oder Supastarter evaluieren, zeigt der Vergleichsindex die Standardeinstellungen nebeneinander. Die Preisseite listet die Einmallizenz und was jedes Tier enthält. Für die Datenschicht, die diese Ökonomie zusammenhält, führt der Cloudflare D1 Produktionsleitfaden durch die Multi-Tenant-Muster, die verhindern, dass ein Mieter-Leck-Vorfall Ihre Fluktuationszahl zerstört. Für die Post-mortem-Analyse, die mich gelehrt hat, Idempotenz vor jeden Webhook-Handler zu setzen, zeigt der Stripe Webhook Duplicate-Delivery-Beitrag das Failure-Mode.
Der Indie-SaaS-Markt 2026 belohnt Founder, die ein LTV/CAC-Verhältnis von über 30× halten können, während sie solo bleiben. Der Starter, den Sie wählen, bestimmt die Obergrenze dieses Verhältnisses mehr als jede andere Entscheidung, die Sie in diesem Jahr treffen werden.
→ TanStack Ship Einheitenökonomie-Feature-Aufschlüsselung ansehen · Mit ShipFast, Makerkit, Open-SaaS vergleichen · Preise ansehen