Customer Onboarding and Lifecycle
Overview
This chapter defines the complete B2B customer lifecycle for the Membership platform -- from the moment a prospective client discovers the product through acquisition, provisioning, configuration, data migration, training, go-live, ongoing health monitoring, churn prevention, and expansion. The lifecycle model is designed for a 4-person team, which means every phase must be automated or templated to the greatest extent possible. Manual intervention is reserved for Enterprise-tier clients and escalation scenarios.
The lifecycle follows seven phases:
- Discovery -- Prospect learns about Membership through marketing, referrals, events, or outbound sales
- Evaluation -- Prospect attends a demo, reviews documentation, compares competitors
- Purchase -- Prospect selects a tier, accepts terms, provides payment information
- Onboarding -- Tenant provisioned, admin account created, configuration wizard completed
- Adoption -- Customer configures plans, imports members, trains staff, goes live
- Renewal -- Annual or monthly renewal, usage review, satisfaction check
- Expansion -- Tier upgrade, feature adoption, additional locations, referral program
Target metrics:
| Metric | Target |
|---|---|
| Tenant provisioning time | < 60 seconds (fully automated) |
| Time to first member added | < 24 hours after provisioning |
| Time to go-live | < 7 days (self-service), < 30 days (assisted) |
| Trial-to-paid conversion rate | > 25% |
| 90-day retention rate | > 90% |
| Net Promoter Score (NPS) | > 50 |
| Annual churn rate | < 10% |
Pricing tiers:
| Tier | Monthly Price | Member Limit | Support Level | Onboarding |
|---|---|---|---|---|
| Starter | EUR 0.99 (EUR 9.99/year) | 20 members | Community / Knowledge Base | Self-service |
| Team | EUR 29 (EUR 299/year) | 200 members | Email (48h SLA) | Self-service + 1x onboarding call |
| Professional | EUR 99 (EUR 999/year) | Unlimited | Priority email (24h SLA) + phone | Assisted (1x training session) |
| Enterprise | Custom | Unlimited | Dedicated CSM, phone, SLA | Full onboarding package |
No zero-euro strategy. Every user must have a billable account. The Starter tier at EUR 0.99/month validates payment credentials and creates a commercial relationship from day one. A 14-day Trial Studio (full features, no payment required) replaces the traditional freemium model. All prices net (plus applicable VAT).
Starter and Team tiers are entirely self-service: sign up, provision, configure, go live -- all without human interaction. Professional and Enterprise tiers include assisted onboarding with scheduled calls, personalized configuration, and optional data migration services.
Customer Scenarios
Every new customer falls into one of three scenarios. The scenario determines the onboarding path, the wizard steps presented, and the level of migration effort required. All three scenarios use the same self-onboarding flow with scenario-specific variations.
| Scenario | Customer Type | Description | Key Differences |
|---|---|---|---|
| A -- Founder | Person founding a new business with a studio | No existing organization, needs business setup guidance | Founding support (Gewerbeanmeldung, bank account, insurance), zero members initially |
| B -- Expansion | Existing business opening additional location(s) | Has parent organization, adding new studio/location | Parent org link, inherited branding/config, staff sharing, cross-location reporting |
| C -- Migration | Existing business with one or more studios switching systems | Has members, contracts, financial data to migrate | Source system selection, CSV/API import, parallel operation period, financial reconciliation |
Scenario A -- Founder
The Founder is starting from scratch. They may not yet have a registered business (Gewerbeanmeldung), a business bank account, or insurance. The onboarding flow includes a Founding Checklist that guides them through these prerequisites. Founding support can be provided by the Franchise (if the customer is joining a franchise network) or directly by Membership One (for independent founders). The Franchise can customize their founding support package for their studios/clubs.
Scenario B -- Expansion
The Expansion customer already operates one or more locations and is adding a new one. During onboarding, they select their parent organization, which enables inherited branding and configuration, staff sharing across locations, and consolidated cross-location reporting. The new location is provisioned as a child entity under the existing parent.
Scenario C -- Migration
The Migration customer is switching from a competitor system (easyVerein, ClubDesk, Magicline, SPORTSCLUB, or another platform). They have existing members, contracts, and financial data that must be imported. The onboarding flow includes a dedicated Data Import step with source system selection, CSV upload, dry-run validation, and execution. A parallel operation period allows the customer to run both systems simultaneously until they are confident in the migration. Financial reconciliation ensures no billing gaps or double charges.
Acquisition Funnel
Funnel Diagram
Lead Sources
| Source | Entry Method | Expected Monthly Volume | Target Conversion Rate |
|---|---|---|---|
| Website / SEO | Contact form, trial signup, pricing page CTA | 50-100 leads | 15-20% |
| Trade Show / Messe | Badge scan, business card, QR code at booth | 20-50 per event | 10-15% |
| Referral Program | Existing customer referral link (EUR 100 credit per conversion) | 10-20 leads | 30-40% |
| Partner Channel | Integration partner recommendation (Gantner, DATEV consultants) | 5-15 leads | 20-25% |
| Outbound Sales | Cold email campaigns to club/studio directories | 30-60 leads | 5-8% |
| Social Media / Ads | Facebook, Instagram, Google Ads landing pages | 40-80 leads | 8-12% |
| Content Marketing | Blog posts, whitepapers, webinars, comparison guides | 20-40 leads | 12-18% |
Sales Process
Demo scheduling: Every qualified lead is offered a 30-minute video call (Google Meet / Zoom). The demo follows a standardized script tailored to the prospect's organization type (club vs. studio vs. franchise). Key demo modules:
- Member management and self-service onboarding (5 min)
- Contract and billing automation with SEPA (10 min)
- Check-in and access control (5 min)
- Mobile app and member portal (5 min)
- Pricing and next steps (5 min)
Trial period: 14 days with full feature access and a 50-member limit. Trial accounts are provisioned on the Professional tier (all features unlocked) so the prospect experiences the complete product. The 50-member limit prevents abuse while allowing meaningful evaluation. Trial accounts that are not converted are automatically archived after 30 days and permanently deleted after 90 days.
Proposal: Personalized pricing based on the prospect's member count, number of locations, and required features. The proposal is generated from a template (PDF) and sent via email with a digital acceptance link. Proposals expire after 14 days.
Contract: The contract closing uses an integrated contract bundle that covers three parties in a single signing process:
| # | Party | Agreement | Scope |
|---|---|---|---|
| 1 | Membership One GmbH | SaaS Agreement (Allgemeine Geschaeftsbedingungen / AGB) + Auftragsverarbeitungsvertrag (AVV / DPA) | Platform access, data processing, support SLA |
| 2 | My-Factura | Invoicing and billing service agreement | Invoice generation, billing engine, payment reconciliation |
| 3 | CashControl | SEPA Lastschriftmandat (via My-Factura) | Direct debit collection, SEPA file generation, Inkasso/collections |
The customer signs once -- digitally, no physical signature required. Membership One orchestrates the downstream contracts: upon the customer's acceptance, My-Factura and CashControl agreements are activated automatically through Membership One's integration layer. The bundled contract is stored as a PDF in the document management module and linked to the organization entity.
Contract Signing Methods
Multiple signing methods are supported to accommodate different customer segments, regulatory requirements, and contract values. The signing method is selected during the proposal/contract closing phase.
| Method | Description | Tier | Complexity |
|---|---|---|---|
| Click-to-Sign | Digital acceptance via checkbox + timestamp + IP logging. Legally binding for standard SaaS agreements under EU eCommerce Directive. | All tiers | Low |
| In-App Signature | Touch/stylus signature capture on mobile device or web canvas. Stored as SVG + screenshot with audit metadata. | All tiers | Low |
| Print, Sign, Upload | Customer prints the contract PDF, signs with wet ink, scans/photographs it, and uploads via the onboarding wizard or email. OCR extracts signature for verification. | All tiers | Medium |
| Adobe Acrobat Sign | Integration with Adobe Acrobat Sign for legally binding electronic signatures with full audit trail. Supports sequential signing (multiple signatories). | Professional+ | Medium |
| Qualified Electronic Signature (QES) | eIDAS-compliant qualified electronic signature via trust service provider (e.g., sign-me by Bundesdruckerei, Swisscom, D-Trust). Required for certain contract types in regulated industries. | Enterprise | High |
The default flow for Starter and Team tiers is Click-to-Sign or In-App Signature. Professional and Enterprise customers can optionally enable Adobe Acrobat Sign or QES. All signing methods generate a tamper-proof audit trail including: signer identity, timestamp (UTC), IP address, document hash (SHA-256), and the signature itself. Signed documents are stored in the Document module with immutable versioning.
CRM Pipeline Stages
| Stage | Description | Automated Actions | SLA |
|---|---|---|---|
LEAD |
New lead created from any source | Welcome email, assign to sales rep | Assign within 4h |
CONTACTED |
First outreach completed (email or call) | Log activity, schedule follow-up | Contact within 24h of lead creation |
DEMO_SCHEDULED |
Demo call booked via Calendly or manual | Calendar invite, demo prep email, reminder 1h before | Demo within 5 business days |
DEMO_COMPLETED |
Demo delivered | Send trial invite, follow-up email with recording link | Follow-up within 24h |
TRIAL |
Trial account provisioned and active | Day 3/7/12 nurture emails, usage tracking | Monitor daily |
PROPOSAL_SENT |
Pricing proposal delivered | Reminder at day 7, expiry warning at day 12 | Send within 48h of trial start or demo |
NEGOTIATION |
Custom pricing discussion (Enterprise only) | Log all communications | Resolve within 10 business days |
WON |
Contract signed, payment confirmed | Trigger provisioning, CRM status update, notify CSM | Provision within 60 seconds |
LOST |
Prospect declined | Exit survey email, add to win-back sequence | Survey within 24h |
ONBOARDING |
Provisioning complete, setup in progress | Onboarding checklist emails, wizard progress tracking | Complete within 7-30 days |
ACTIVE |
Go-live checklist passed, live members | Monthly health score calculation, usage reports | Ongoing |
Tenant Provisioning
Self-Onboarding Principle
Self-onboarding is the default for ALL three customer scenarios (Founder, Expansion, Migration). The platform is designed for maximum automation -- the customer drives the entire process themselves, from signup through configuration to go-live.
Key principles:
- Customer-driven: The customer completes every step at their own pace through the web interface. No back-office intervention is required at any point.
- Human assistance available, never required: Professional and Enterprise tiers include optional training calls and assisted migration, but these are supplements to the self-service flow, not prerequisites.
- Scenario-aware automation: The Configuration Wizard adapts its steps based on the selected scenario (A/B/C). Scenario A customers see a Founding Checklist, Scenario B customers select a parent organization, and Scenario C customers get a Data Import workflow -- all within the same self-service wizard.
- Franchise-provided founding support: For Scenario A (Founder), the Franchise organization can provide customized founding support packages for their studios/clubs. This may include guidance on Gewerbeanmeldung, recommended banks, insurance partners, and initial equipment suppliers. Alternatively, Membership One offers a standard founding support package for independent founders.
- Target: Zero-touch provisioning in < 60 seconds. Time to go-live < 7 days for self-service customers across all scenarios.
Provisioning Sequence Diagram
Provisioning Steps (Detail)
Each step is executed sequentially within a single transaction (steps 1-3) or as idempotent operations (steps 4-8) that can be retried independently.
-
Create Organization - Generate URL-safe slug from organization name (e.g.,
turn-verein-muenchen-1860from "Turn-Verein Muenchen 1860") - SettypeCdbased on industry template selection (CLUB, STUDIO, FRANCHISE, UMBRELLA, MUNICIPAL) - SettierCdfrom contract (STARTER, STANDARD, PROFESSIONAL, ENTERPRISE) - InitializesettingsJSONB with tier-specific feature flags - SetstatusCd= PROVISIONING (transitions to ACTIVE after wizard completion) -
Create Admin User - Create User record with
roleCd= ORG_ADMIN,statusCd= PENDING_VERIFICATION - Generate magic link token (UUID v4, 72-hour expiry) - Magic link sets password + verifies email in a single step (no separate verification flow) - Assign all permissions for the ORG_ADMIN role (see Chapter 07) -
Default Configuration - Currency: EUR (default, configurable) - Locale: de-DE (default, based on country detection from IP or explicit selection) - Timezone: Europe/Berlin (default, configurable) - VAT rates: 19% standard, 7% reduced (German defaults) - Accounting standard: SKR03 (for DATEV integration) - Password policy: minimum 10 characters, 1 uppercase, 1 number, 1 special character - Session timeout: 30 minutes (configurable per tier) - Billing day: 1st of month (configurable)
-
My-Factura / CashControl Integration - Create Consumer entity via My-Factura Public P2 API:
POST /api/public/p2/v1/consumer- Payload:[{firstName: "<orgName>", type: "ORGANIZATION", IdExternal: "<orgId>"}]- Store returnedIdasexternalBillingIdon the Organization entity - Configure webhook endpoint for payment status callbacks - My-Factura handles invoicing and billing; CashControl (cashcontrol.info) handles SEPA direct debit collection and Inkasso/collections on behalf of My-Factura - Failure handling: if My-Factura is unreachable, mark step as PENDING and retry via scheduled job (every 5 minutes, max 3 days) -
Branding Setup - Default logo: Membership platform logo (replaced by customer in wizard) - Default colors: primary #1976D2 (blue), secondary #424242 (dark gray) - Email templates: 6 default templates (welcome, password reset, payment confirmation, payment reminder, contract confirmation, newsletter) - Landing page: default template with organization name and placeholder content
-
Membership Templates - Create 3 default membership templates based on industry:
- Basic (e.g., EUR 19.90/month for studios, EUR 5/month for clubs)
- Standard (e.g., EUR 39.90/month for studios, EUR 10/month for clubs)
- Premium (e.g., EUR 59.90/month for studios, EUR 20/month for clubs)
- All templates set to
statusCd= DRAFT (published by admin in wizard) - Billing interval: MONTHLY (default)
- Minimum term: 1 month (Basic), 6 months (Standard), 12 months (Premium)
- Auto-renew: enabled by default
-
Sample Data (Optional) - 5 fictional members with realistic German names (Max Mustermann, Erika Musterfrau, etc.) - 2 contracts linked to default membership templates - 1 past billing run with sample transactions - Clearly marked as sample data in the UI with a dismissable banner - Auto-deleted after 30 days or when the customer adds their first real member
-
Welcome Communication - Email to admin with: magic link (set password + activate account), quick-start guide PDF attachment, link to knowledge base - Calendar invite: optional 30-minute onboarding call (for Team+ tiers) - In-app notification: setup wizard prompt on first login - SMS notification: optional, if phone number provided during signup
Status Tracking
Every provisioning run is tracked as a ProvisioningJob entity with per-step status:
| Field | Type | Description |
|---|---|---|
id |
BIGINT (PK) |
Primary key |
idEntity |
BIGINT (FK) |
Organization being provisioned |
statusCd |
VARCHAR(50) |
PENDING, IN_PROGRESS, COMPLETED, FAILED |
stepStatuses |
JSONB |
Per-step status map (e.g., {"createOrg": "COMPLETED", "myFactura": "PENDING"}) |
startedAt |
TIMESTAMPTZ |
Job start time |
completedAt |
TIMESTAMPTZ (nullable) |
Job completion time |
errorMessage |
TEXT (nullable) |
Error details if FAILED |
retryCount |
INTEGER |
Number of retry attempts |
version |
INTEGER |
Optimistic locking |
createdAt |
TIMESTAMPTZ |
Audit |
updatedAt |
TIMESTAMPTZ |
Audit |
Target: < 60 seconds from message publish to welcome email sent. Each step logs its execution time. Steps 1-3 are expected to complete in < 1 second (database operations). Step 4 (My-Factura API call) is the most variable (typically 2-5 seconds). Steps 5-7 are < 2 seconds. Step 8 (email delivery) depends on the mail provider but should be queued within 1 second.
Error Handling
| Error Type | Action | Retry Strategy | Notification |
|---|---|---|---|
| Database connection failure | Requeue message to RabbitMQ dead-letter queue | 3 retries with exponential backoff (5s, 30s, 180s) | Alert ops team after 3rd failure |
| My-Factura API timeout | Mark step as PENDING, continue with other steps | Scheduled retry every 5 minutes for up to 3 days | Alert ops after 1 hour of failures |
| My-Factura API 4xx error | Log error, mark step FAILED | No auto-retry (likely data issue) | Alert ops immediately for investigation |
| Duplicate slug collision | Append numeric suffix (e.g., turn-verein-muenchen-2) |
Automatic, no retry needed | None |
| Email delivery failure | Requeue to communication module | 3 retries with 60s delay | Alert if all retries exhausted |
| RabbitMQ unavailable | Fall back to synchronous provisioning | N/A (synchronous fallback) | Alert ops immediately |
| Partial completion | Resume from last successful step | Automatic on next retry | Status visible in admin dashboard |
Configuration Wizard
After the admin clicks the magic link and sets their password, they are guided through a scenario-aware configuration wizard. The wizard begins with scenario selection (Step 0) and then presents 5 core steps plus scenario-specific steps. It is designed to be completable in under 15 minutes. Every step can be skipped and revisited later from Settings.
Wizard Flow
Step 0: Scenario Selection
The first screen presents three clear options with icons and descriptions:
| Option | Label | Description | Scenario |
|---|---|---|---|
| A | "I'm founding a new business" | You are starting a new studio, club, or fitness business from scratch. We will guide you through the founding process. | Scenario A -- Founder |
| B | "I'm opening an additional location" | You already operate one or more locations and want to add a new one to your organization. | Scenario B -- Expansion |
| C | "I'm switching from another system" | You already have members, contracts, and billing data in another system and want to migrate to Membership. | Scenario C -- Migration |
The selected scenario is stored on the Organization entity (onboardingScenario field) and determines which additional wizard steps are shown after the core steps.
Step 1: Organization Profile - Organization name (pre-filled from registration) - Legal name (for invoices and contracts) - Address (street, zip, city, country) - Phone and email - Logo upload (drag-and-drop, max 2 MB, PNG/JPG/SVG) - Business type (dropdown: Fitness Studio, Sports Club, Dance School, Martial Arts, Youth Organization, Other) - Website URL
Step 2: Membership Plans - Pre-populated from industry template (3 default plans) - Each plan: name, price, billing interval, minimum term, auto-renew, description - Add/remove plans, reorder via drag-and-drop - Preview landing page for each plan - Publish toggle (draft vs. published)
Step 3: Payment Setup - Bank account: IBAN, BIC (auto-detected from IBAN), account holder name - SEPA Glaeubiger-ID (creditor identifier, required for direct debit) - Billing day of month (1-28, default: 1) - Payment methods to accept: SEPA Direct Debit (default), Bank Transfer, Cash (manual recording) - Automatic SEPA mandate generation: enabled/disabled - Connection test: verify My-Factura API connectivity with a test ping
Step 4: Communication - Sender email address (verified via confirmation email) - Organization display name (for email From field) - Email signature (rich text editor) - Welcome email template (preview and customize) - Reply-to address (if different from sender)
Step 5: Team Invitation - Table with columns: Name, Email, Role (dropdown: Admin, Manager, Trainer, Receptionist) - Bulk invite via CSV upload (name, email, role) - Each invited user receives a magic link email - Minimum: 0 (admin can be the only user) - "Invite later" button to skip
Scenario-Specific Wizard Steps
After the 5 core steps, the wizard presents additional steps based on the scenario selected in Step 0:
Scenario A -- Founding Checklist (shown after Step 5 for Founder scenario)
A guided checklist of business founding prerequisites. Each item has a status (done / not done / not applicable) and links to relevant resources:
- Business registration (Gewerbeanmeldung) -- Link to local Gewerbeamt finder, document templates
- Business bank account -- Recommended bank partners, link to online account opening
- Business insurance -- Recommended insurance types (liability, inventory, business interruption)
- Tax registration (Finanzamt) -- Steuernummer application, USt-IdNr. if applicable
- Premises lease or ownership -- Checklist for lease review (utilities, renovation rights, hours of operation)
- Equipment procurement -- Recommended suppliers for studio/club equipment
The Franchise can customize this checklist for their network (e.g., preferred bank partners, insurance providers, equipment suppliers). For independent founders, Membership One provides a standard checklist.
Scenario B -- Parent Organization Selection (shown after Step 0, before Step 1 for Expansion scenario)
- Search or browse existing organizations in the customer's account
- Select the parent organization to link the new location under
- Inherited settings preview: branding, payment configuration, membership plan templates, staff roles
- Option to override any inherited setting at the new location level
- Cross-location reporting is automatically enabled upon linking
Scenario C -- Data Import (shown after Step 5 for Migration scenario)
- Source system selection: Dropdown with pre-built migration templates (easyVerein, ClubDesk, Magicline, SPORTSCLUB, Generic CSV, Excel)
- CSV upload: Drag-and-drop file upload area, supports multiple files (members, contracts, billing history)
- Column mapping: Auto-detected for known source systems, manual drag-and-drop mapping for generic imports
- Dry-run validation: Execute import in preview mode -- shows success/warning/error counts, sample of first 10 records, duplicate detection results
- Execute import: Confirm and run the actual import with progress bar and real-time status
- Post-import summary: Total imported, skipped, errors, with downloadable error report
Industry Templates
| Template | Business Type | Default Plans (Name / Price) | Default Resources | Typical Features |
|---|---|---|---|---|
| Fitnessstudio | Commercial gym | Basic EUR 19.90 / Standard EUR 39.90 / Premium EUR 59.90 | Gym Floor, Sauna, Group Fitness Room | Check-in, SEPA billing, course schedule |
| Sportverein | Sports club | Kind EUR 5 / Jugend EUR 8 / Erwachsen EUR 12 / Familie EUR 25 | Sporthalle, Sportplatz, Vereinsheim | Family memberships, department structure, volunteer tracking |
| Tanzschule | Dance school | Einzelkurs EUR 15 / Flatrate EUR 49 / 10er-Karte EUR 120 | Studio 1, Studio 2, Lounge | Course booking, drop-in classes, instructor assignment |
| Kampfsport | Martial arts | Anfaenger EUR 29 / Fortgeschritten EUR 39 / Wettkampf EUR 59 | Dojo, Ring, Kraftraum | Belt/rank tracking, competition schedule, trial lessons |
| Jugendorganisation | Youth org | Basis EUR 3 / Aktiv EUR 6 / Ehrenamt EUR 0 | Gruppenraum, Lager, Kueche | Guardian contacts, age-group management, event planning |
| Reha-Zentrum | Rehab center | Basis EUR 39 / Intensiv EUR 69 / Praevention EUR 49 | Therapieraum, Geraetepark, Pool | Medical notes, prescription tracking, insurance billing |
| Oeffentlich | Municipal facility | Einzel EUR 5 / Familie EUR 12 / Senioren EUR 3 | Schwimmbad, Eishalle, Turnhalle | Multi-facility management, reduced rates, public access |
Skip and Resume
- Every wizard step has a "Skip for now" button in the bottom-left corner
- Progress is saved after each step (even partial input within a step)
- A persistent banner appears on the admin dashboard: "Setup is X% complete -- Continue setup" with a link to the next incomplete step
- The wizard can be re-entered at any time from Settings > Setup Wizard
- Completing the wizard is not required to use the platform, but certain features are gated:
- No published membership plans = members cannot self-register via landing page
- No bank account = billing runs cannot generate SEPA files
- No verified email = automated emails use platform default sender
Automated Data Enrichment
The onboarding wizard and general data entry workflows are enhanced with automated data enrichment features that minimize manual input, validate data in real-time, and ensure data quality from the first interaction. This ensures fully automated lead generation and onboarding at all levels -- from individual member to studio to enterprise group -- via both website and mobile app.
Company Data Auto-Extraction
When onboarding an existing business (Scenario B or C, or any new customer with an existing legal entity), the user only needs to enter the company's homepage domain (e.g., fitnessstudio-power.de). The system then automatically extracts and populates company data:
Step 1 -- Impressum Scraping:
1. Fetch the homepage URL and common Impressum paths (/impressum, /legal, /kontakt, /about)
2. Parse the Impressum (legal notice) page using HTML extraction and NLP
3. Extract structured data:
- Company name (Firmenname)
- Legal form (Rechtsform: GmbH, e.V., GbR, Einzelunternehmen, etc.)
- Managing director / authorized representative (Geschaeftsfuehrer / Vorstand)
- Street address (Strasse, PLZ, Ort)
- Phone number
- Email address
- VAT ID (USt-IdNr.) if present
- Commercial register entry (Handelsregister: HRB/VR number, Amtsgericht)
Step 2 -- Handelsregister (Commercial Register) Lookup: 1. If a Handelsregister entry is found in the Impressum, query the Handelsregister API (handelsregister.de or offenesdatenportal.de) 2. Extract additional data: - Official company name (as registered) - Registration number (HRB/VR) - Court of registration (Amtsgericht) - Authorized signatories (Vertretungsberechtigte) and their signing authority (Einzelvertretung / Gesamtvertretung) - Share capital (Stammkapital) for GmbH - Date of registration - Business purpose (Unternehmensgegenstand) 3. Identify the persons authorized to sign contracts on behalf of the organization
Step 3 -- User Confirmation: 1. Present extracted data to the user in pre-filled form fields 2. Highlight any fields where extraction confidence is low (yellow indicator) 3. User reviews, corrects if needed, and confirms 4. Confirmed data is stored as the organization profile
Address Autocomplete
As the user types an address in any address field throughout the system (organization setup, member registration, billing address):
- Autocomplete suggestions from OpenStreetMap/Nominatim data appear after 3 characters
- Automatic validation and formatting: Addresses are normalized to the country-specific format
- ZIP code / city cross-validation: If the user enters a ZIP code, the city is auto-filled (and vice versa). Mismatches are flagged with a warning
- Country-specific address format enforcement:
- Germany:
Strasse Hausnummer, PLZ Ort(5-digit PLZ) - Austria:Strasse Hausnummer, PLZ Ort(4-digit PLZ) - Switzerland:Strasse Hausnummer, PLZ Ort(4-digit PLZ) - Other EU countries: respective national format - Geocoding: Validated addresses are geocoded (latitude/longitude) for use in location-based features (nearest facility search, member map)
Phone Number Validation
All phone number fields use Google's libphonenumber library for comprehensive validation:
- Format validation and normalization: Input is parsed and validated against country-specific phone number rules
- Country code detection: If no country code is provided, the system infers it from the organization's country setting
- Mobile vs. landline identification: The system identifies whether the number is mobile or landline, which is relevant for SMS/WhatsApp messaging capabilities
- International format standardization (E.164): All phone numbers are stored in E.164 format (e.g.,
+4915112345678) for consistent handling across the system - Display formatting: Numbers are displayed in the national format for the user's locale (e.g.,
0151 1234 5678for German users) - Duplicate detection: Warns if the same phone number is already associated with another member or organization
Email Verification
Email addresses are validated at multiple levels:
- Syntax validation: RFC 5322 compliance check (immediate, client-side)
- Domain MX record check: Verify that the email domain has valid MX records (server-side, async)
- Disposable email detection: Check against a maintained list of disposable/temporary email providers (e.g., guerrillamail.com, tempmail.com). Disposable emails are blocked for admin accounts and flagged with a warning for member accounts
- Typo correction suggestions: Common domain typos are detected and suggestions offered:
-
@gmial.com-> "Did you mean @gmail.com?" -@gogle.com-> "Did you mean @google.com?" -@outllok.com-> "Did you mean @outlook.com?" - Deliverability check (optional, for critical emails like admin accounts): SMTP handshake verification without sending an email (checks if the mailbox exists)
Integration with Onboarding
These enrichment features integrate seamlessly into the onboarding wizard:
- Step 1 (Organization Profile): Company data auto-extraction is triggered when the user enters a website URL. Address autocomplete is active on all address fields. Phone and email validation run in real-time.
- Step 5 (Team Invitation): Email verification runs on all invited team member emails.
- Scenario C (Data Import): Imported member data is validated through phone and email verification. Invalid entries are flagged in the dry-run report.
- Member self-registration: When members register via the landing page or mobile app, address autocomplete, phone validation, and email verification ensure data quality from the start.
Data Migration Playbook
Note: Data migration applies primarily to Scenario C (Migration) customers -- existing businesses switching from another system. Scenario A (Founder) and Scenario B (Expansion) customers typically start with zero members and do not require migration. However, any customer can use the CSV import functionality at any time to bulk-import member data.
Assisted migration as a service: The Franchise can offer assisted migration to its studios/clubs as part of their onboarding support package. Alternatively, Membership One provides assisted migration as a paid service (included in Professional tier 1x, available as add-on for other tiers). This allows non-technical customers to hand off the migration entirely while still using the self-onboarding wizard for all other setup steps.
Migration Paths
Competitor Migration Templates
Pre-built mapping templates for the most common competitor systems reduce migration effort from hours to minutes.
| Source System | Export Format | Fields Mapped | Estimated Time | Notes |
|---|---|---|---|---|
| easyVerein | CSV (UTF-8) | 15 fields (name, email, address, IBAN, contract type, start date, status, phone, birthday, gender, department, notes, custom1-3) | 30 min (self-service) | Most common competitor in Vereinswesen |
| ClubDesk | CSV (ISO-8859-1) | 12 fields (name, email, address, phone, birthday, entry date, exit date, department, fee, status, notes, member number) | 30 min (self-service) | Encoding conversion handled automatically |
| Magicline | API export or CSV | 20 fields (full member profile, contracts, SEPA mandates, check-in history, tags, fitness data) | 1-2 hours (assisted) | API integration available for live migration |
| SPORTSCLUB | CSV (UTF-8) | 14 fields (name, email, address, birthday, gender, entry date, department, fee category, IBAN, mandate date, status, guardian, phone, emergency contact) | 30 min (self-service) | Common in large multi-sport clubs |
| Cash360 / CashControl | Automated tool | Full entity mapping (see Chapter 15: Migration Strategy) | 15 min (automated) | Direct database migration with referential integrity (for customers migrating from CashControl) |
| Generic | CSV (any encoding) | Manual column mapping via drag-and-drop UI | 1-2 hours | Customer maps their columns to Membership fields |
| Excel | XLSX (via OpenPyXL) | Manual column mapping | 1-2 hours | Auto-detect header row, support multiple sheets |
Validation Rules
All imported records pass through validation before insertion. Errors block the record; warnings allow import but flag for review; info messages are logged for reference.
| Field | Validation Rule | Error Level | Message |
|---|---|---|---|
email |
RFC 5322 format, unique within entity | Error | "Invalid email format" / "Duplicate email: already exists" |
iban |
MOD-97 checksum (ISO 13616), country-specific length | Error | "Invalid IBAN checksum" |
dateOfBirth |
Valid date, not in future, age 0-120 | Error | "Invalid date of birth" |
firstName, lastName |
Not blank, max 100 characters | Error | "Name is required" |
phone |
E.164 format (relaxed: digits, +, spaces, dashes) | Warning | "Phone number may be invalid" |
zip |
Country-specific format (DE: 5 digits, AT: 4 digits) | Warning | "Postal code format unexpected for country" |
gender |
One of: MALE, FEMALE, DIVERSE, UNKNOWN | Warning | "Unknown gender value, defaulting to UNKNOWN" |
memberNumber |
Unique within entity | Error | "Duplicate member number" |
contractStartDate |
Valid date | Warning | "Missing start date, using import date" |
street |
Max 500 characters | Info | "Street address truncated" |
duplicateDetection |
Fuzzy match on firstName + lastName + dateOfBirth | Warning | "Potential duplicate of existing member #1234" |
encoding |
Auto-detect (UTF-8, ISO-8859-1, Windows-1252) | Info | "Encoding detected as ISO-8859-1, converting to UTF-8" |
Migration Service Tiers
| Service Level | Description | Included In | Additional Cost |
|---|---|---|---|
| Self-Service CSV Import | Upload CSV, map columns via UI, validate, import | All tiers (Starter, Team, Professional, Enterprise) | Free |
| Assisted Migration | Membership One team or Franchise maps and imports data, resolves issues (primarily for Scenario C customers) | Professional (1x included), Enterprise (unlimited) | EUR 299 per additional migration (Team) |
| Cash360 / CashControl Automated Migration | Automated tool reads CashControl DB, maps entities, imports with full referential integrity (for Scenario C customers migrating from CashControl) | Professional, Enterprise | Free (internal tool) |
| Custom API Migration | Live migration via competitor API (Magicline, etc.) | Enterprise only | Scoped per project |
| Legacy Database Migration | Direct SQL extraction from legacy system | Enterprise only | Scoped per project (min EUR 999) |
Training Strategy
Self-Service Resources
All tiers have access to self-service training materials, maintained as part of the product documentation lifecycle:
| Resource | Format | Content | Availability |
|---|---|---|---|
| Knowledge Base | Web (in-app + public) | 10+ categorized articles: Getting Started, Member Management, Billing, Contracts, Check-In, Settings, Troubleshooting | All tiers, always available |
| Video Tutorials | MP4 / YouTube (embedded) | 5 core workflow videos (3-5 min each): First Login, Add Members, Create Plan, Run Billing, Set Up Check-In | All tiers, always available |
| Quick-Start Guide | PDF (attached to welcome email) | 4-page guide: Login, Dashboard overview, Add first member, Create first plan | All tiers, attached to welcome email |
| In-App Tooltips | Contextual overlays | Feature hints on first visit to each screen, dismissable, re-activatable from Help menu | All tiers, in-app |
| Release Notes | Web (in-app changelog) | Per-release notes with screenshots, new features highlighted with "New" badges | All tiers, in-app |
| API Documentation | Swagger UI + Markdown | Full REST API reference with examples, authentication guide, webhook setup | Professional, Enterprise |
| Community Forum | Web (Discourse or similar) | Peer support, feature requests, best practices, Membership One team participates | All tiers (planned v2.0) |
Live Training Matrix
| Tier | Training Format | Duration | Scheduling | Content Focus |
|---|---|---|---|---|
| Starter | Self-service only | N/A | N/A | Knowledge base + videos |
| Team | 1x onboarding video call | 30 min | Within 7 days of signup | Dashboard tour, first member, first plan, billing basics |
| Professional | 1x training video call | 60 min | Within 14 days of signup | Full admin training: plans, billing, SEPA, check-in, reporting, team roles |
| Enterprise | 3x training video calls | 3x 60 min | Scheduled with CSM | Session 1: Admin training (settings, plans, billing). Session 2: Staff training (member mgmt, check-in, daily ops). Session 3: Reporting and advanced features (analytics, DATEV, API) |
| Enterprise (add-on) | On-site training | Half day | By arrangement | Hands-on training at customer location with real data, EUR 999/day |
Go-Live Checklist
Checklist Items
The go-live checklist is displayed as a progress tracker on the admin dashboard. Each item shows a green checkmark when completed, a yellow circle when in progress, and a gray circle when not started.
| # | Item | Validation Criteria | Required | Typical Time |
|---|---|---|---|---|
| 1 | Organization profile completed | Name, address, email, phone, logo uploaded | Yes | 5 min |
| 2 | At least one membership plan published | Plan with name, price, billing interval, status = PUBLISHED | Yes | 10 min |
| 3 | Bank account configured (SEPA) | IBAN valid, BIC populated, Glaeubiger-ID entered, My-Factura entity linked | Yes (if billing) | 5 min |
| 4 | At least one team member invited | User with role != MEMBER exists besides the admin | No | 5 min |
| 5 | 5+ members added or imported | Member count >= 5 (excludes sample data) | No | 15 min |
| 6 | Welcome email template customized | Template modified from default (any edit counts) | No | 10 min |
| 7 | Test transaction completed | At least one billing run executed (even with 1 member) | No | 5 min |
| 8 | Branding configured | Logo uploaded AND primary color changed from default | No | 5 min |
Dashboard progress indicator: "Your setup is 5/8 complete (63%)" with a progress bar and "Continue setup" link.
Pass/Fail Criteria
| Level | Criteria | Implication |
|---|---|---|
| Minimum viable | Items 1 + 2 complete | Organization can accept member registrations via landing page, but no automated billing |
| Billing ready | Items 1 + 2 + 3 complete | Organization can run billing and generate SEPA files |
| Fully operational | All 8 items complete | Organization is fully configured and has verified the complete workflow |
| Blocked: no plan | Item 2 incomplete | Landing page shows "No plans available" -- members cannot self-register |
| Blocked: no bank | Item 3 incomplete | Billing run will execute but SEPA export will fail -- manual payment collection only |
Customer Health Model
Health Score Algorithm
The Customer Health Score (CHS) is a composite metric calculated weekly (every Monday at 02:00 UTC) for every active organization. The score ranges from 0 to 100 and drives automated interventions.
| Dimension | Weight | Green (score 70-100) | Yellow (score 40-69) | Red (score 0-39) |
|---|---|---|---|---|
| Login Frequency | 25% | Admin or staff login >= 3x per week | Login 1-2x per week | Login < 1x per week (or no login in 14+ days) |
| Feature Adoption | 25% | >= 5 distinct features used in past 30 days | 3-4 features used | <= 2 features used |
| Member Activity | 20% | Member count growing or stable (>= 0% change) | Member count flat (0% change for 60+ days) | Member count declining (negative change over 60 days) |
| Payment Health | 20% | < 5% failed transactions in past 30 days | 5-15% failed transactions | > 15% failed transactions |
| Support Sentiment | 10% | No open P1/P2 tickets, CSAT >= 4.0 | Open P2 tickets or CSAT 3.0-3.9 | Open P1 ticket or CSAT < 3.0 |
Calculation:
healthScore = (loginScore * 0.25)
+ (featureScore * 0.25)
+ (memberScore * 0.20)
+ (paymentScore * 0.20)
+ (supportScore * 0.10)
Each dimension score is calculated on a 0-100 scale: - Green zone: 70-100 (linear interpolation within zone) - Yellow zone: 40-69 (linear interpolation within zone) - Red zone: 0-39 (linear interpolation within zone)
Feature adoption tracking counts distinct feature areas used in the past 30 days:
| Feature Area | Tracked Action |
|---|---|
| Member Management | View/edit/create member |
| Billing | Run billing or view billing statements |
| Contracts | Create or modify contract |
| Check-In | Any check-in event recorded |
| Communication | Send email or notification |
| Reporting | View any report or dashboard |
| Resource Management | Create/edit resource or booking |
| Events/Courses | Create/edit event or course |
| Import | Run any data import |
| Settings | Modify any organization setting |
Score Visualization
The health score is displayed in two locations:
-
Internal admin dashboard (Membership One team only): Table of all organizations sorted by health score, with traffic light indicators (green/yellow/red dot), trend arrow (up/down/stable compared to last week), and sparkline showing the past 12 weeks.
-
Customer admin dashboard (organization admin): Simplified "Account Health" widget showing the overall score as a circular gauge, with actionable tips for improvement (e.g., "You have not used billing in 30 days -- run your first billing to improve your account health").
Lifecycle Automation
Email Sequences
Automated email sequences are triggered by lifecycle events. Each email is sent from the organization's verified sender address (or the platform default if not configured).
| Timing | Trigger | Email Template | Goal | Audience |
|---|---|---|---|---|
| Day 0 | Provisioning complete | welcome-magic-link |
Activate account, set password | Admin |
| Day 1 | First login completed | getting-started-tips |
Guide to setup wizard | Admin |
| Day 3 | Wizard not completed | setup-reminder |
Nudge to complete configuration | Admin |
| Day 7 | Wizard completed OR day 7 | feature-spotlight-billing |
Highlight billing automation | Admin |
| Day 10 | No members added | add-first-member |
Prompt to add members or import data | Admin |
| Day 14 (trial) | Trial expiry approaching | trial-expiry-warning |
Convert to paid or extend | Admin |
| Day 14 (trial) | Trial expired, not converted | trial-expired-offer |
Last chance: 7-day extension or 20% discount | Admin |
| Day 30 | 30 days active | first-month-checkin |
NPS survey, satisfaction check | Admin |
| Day 60 | 60 days active | feature-spotlight-advanced |
Highlight advanced features (reports, API, check-in) | Admin |
| Day 90 | 90 days active | quarterly-review |
Usage summary, ROI calculation, upgrade suggestion | Admin |
| Monthly | 1st of each month | monthly-usage-summary |
Member count, revenue, key metrics | Admin |
| Annually | Contract anniversary | anniversary-thankyou |
Thank you, renewal confirmation, year-in-review stats | Admin |
| On event | Health score drops to Yellow | health-yellow-tips |
Actionable improvement suggestions | Admin |
| On event | Health score drops to Red | health-red-outreach |
Personal outreach offer, link to schedule call | Admin |
| On event | New feature released | release-announcement |
New feature highlight with link to docs | All users |
Trigger Rules
| Event | Condition | Action | Channel |
|---|---|---|---|
| Trial signup | New organization with tier = FREE_TRIAL | Start onboarding email sequence | |
| Wizard step completed | Any wizard step marked as done | Update progress, check if sequence email should be suppressed | In-app |
| No login for 7 days | Last admin login > 7 days ago | Send re-engagement email | |
| No login for 14 days | Last admin login > 14 days ago | Escalate to Yellow health alert | Email + internal alert |
| First billing run | Organization runs first billing | Send congratulations email, suppress billing-related nurture emails | |
| Member milestone | Member count crosses 10, 50, 100, 250, 500, 1000 | Send milestone celebration email | |
| Payment failure rate > 10% | Calculated during weekly health check | Send payment troubleshooting guide | |
| Tier limit approaching | Member count > 80% of tier limit | Send upgrade suggestion email | Email + in-app banner |
| Contract renewal 30 days out | Annual contract renewal date - 30 days | Send renewal reminder with usage summary |
Churn Prevention
Early Warning Signals
| Signal | Threshold | Detection Method | Priority | Response Time |
|---|---|---|---|---|
| Health score critical | Score < 40 (Red zone) | Weekly health calculation | P1 | 48 hours |
| No admin login | 14+ consecutive days without login | Daily login check job | P1 | 48 hours |
| Member count declining | Net negative member change for 2+ consecutive months | Monthly member delta calculation | P2 | 1 week |
| Multiple failed payments | > 15% transaction failure rate for 2+ billing cycles | Post-billing-run analysis | P2 | 1 week |
| Unresolved critical ticket | P1 or P2 support ticket open > 7 days | Daily ticket age check | P1 | 24 hours |
| Feature regression | Previously used features no longer used for 30+ days | Monthly feature usage comparison | P3 | 2 weeks |
| Billing downgrade | Customer downgrades tier | Immediate event trigger | P2 | 48 hours |
| Export activity | Customer exports all member data | Immediate event trigger | P1 | 24 hours |
| Cancellation page visit | Customer visits Settings > Cancel Subscription | Immediate event trigger | P1 | 24 hours (automated intercept) |
Intervention Playbook
| Severity | Trigger | Action | Owner | SLA |
|---|---|---|---|---|
| Green (proactive) | Health 70-100, feature not adopted | Feature spotlight email, in-app tooltip | Automated | Within 7 days |
| Yellow (at risk) | Health 40-69 for 2+ weeks | Automated help email with specific suggestions, offer free training call | Automated + CSM review | Within 48 hours |
| Red (critical) | Health < 40 for 1+ week | Personal outreach: phone call or video meeting from CSM | CSM or Founder | Within 48 hours |
| Cancellation request | Customer clicks "Cancel Subscription" | Show exit survey modal, display save offer (see below), route to retention flow | Automated + CSM | Immediate (automated) + 24h (CSM) |
| Post-cancellation | Customer confirms cancellation | Exit survey, schedule win-back email sequence | Automated | Immediate |
Save offers (presented on cancellation page, one per customer, non-stackable):
| Offer | Description | Eligibility | Approval |
|---|---|---|---|
| Pause | Freeze account for 1-3 months, no charge, data preserved | All tiers, max 1x per year | Automatic |
| Downgrade | Move to lower tier with reduced features | Team+ tiers | Automatic |
| Extended trial | 30-day free extension of current tier | First 90 days only | Automatic |
| Discount | 20% off for 3 months | Professional+, > 6 months active | CSM approval |
| Personal support | Free 1-on-1 consultation to resolve issues | All tiers, if health < 40 | Automatic |
Win-back email sequence (after confirmed cancellation):
| Timing | Content | |
|---|---|---|
| Day 7 | winback-1-miss-you |
"We miss you" + link to reactivate (data preserved for 90 days) |
| Day 30 | winback-2-whats-new |
New features released since cancellation |
| Day 60 | winback-3-special-offer |
30% discount for 6 months if reactivated |
| Day 90 | winback-4-final-notice |
"Your data will be deleted in 30 days" (GDPR retention) |
| Day 120 | Data deletion | All organization data permanently deleted per GDPR |
Expansion and Upsell
Usage-Based Triggers
| Trigger | Condition | Action | Target Tier |
|---|---|---|---|
| Member limit approaching | Starter tier: > 16 members (80% of 20 limit) | In-app banner: "You are using 16 of 20 members. Upgrade to Team for 200 members." | Team |
| Member limit approaching | Team tier: > 160 members (80% of 200 limit) | In-app banner + email: "Upgrade to Professional for 2,000 members." | Professional |
| Member limit reached | Any tier: member count = tier limit | Block new member creation, show upgrade modal | Next tier |
| Feature gate click | User clicks a locked feature | Show upgrade modal explaining the feature and which tier unlocks it | Tier that includes the feature |
| Multi-location interest | Admin creates a second "location" entity (or asks in support) | Email: Professional/Enterprise multi-location overview | Professional / Enterprise |
| API access request | Admin visits API documentation or Settings > API Keys | Email: API access overview (Professional+ feature) | Professional |
| High usage volume | > 1,600 members on Professional (80% of 2,000 limit) | Email: Enterprise benefits (dedicated CSM, custom SLA, SLO guarantees) | Enterprise |
Feature Gate Definitions
| Feature | Starter | Team | Professional | Enterprise |
|---|---|---|---|---|
| Member management | 20 members | 250 members | Unlimited | Unlimited |
| Membership plans | 3 plans max | 10 plans max | Unlimited | Unlimited |
| Billing automation (SEPA) | Manual only | Monthly billing | Full automation | Full automation |
| Check-in (QR/NFC) | QR only | QR + NFC | QR + NFC + terminal | QR + NFC + terminal + biometric |
| Resource booking | Not available | 5 resources | Unlimited | Unlimited |
| Events and courses | 3 active events | 20 active events | Unlimited | Unlimited |
| Team members (staff) | 1 (admin only) | 5 users | 25 users | Unlimited |
| Email templates | 3 default | 10 custom | Unlimited | Unlimited + custom domain |
| Reporting | Basic dashboard | Standard reports | Advanced analytics + export | Custom dashboards + BI connector |
| API access | Not available | Not available | REST API (rate limited) | REST API (unlimited) + webhooks |
| DATEV integration | Not available | Not available | Standard export | Full automation |
| White-label branding | Platform badge | Platform badge | Custom logo + colors | Full white-label (no platform branding) |
| Support | Knowledge Base | Email (48h) | Priority email (24h) + phone | Dedicated CSM + phone + SLA |
| Data retention | 1 year | 3 years | 7 years | Custom (up to 10 years) |
| Multi-location | Not available | Not available | 3 locations | Unlimited locations |
| Custom domain | Not available | Not available | Available (add-on EUR 9/month) | Included |
| SSO (SAML/OIDC) | Not available | Not available | Not available | Available |
| SLA guarantee | None | 99.5% uptime | 99.9% uptime | 99.95% uptime + SLO |
Cross-Sell Opportunities
Features that are available in the customer's tier but not yet adopted represent cross-sell opportunities. Detection and outreach are automated.
| Feature Not Used | Detection Criteria | Email Template | Conversion Target |
|---|---|---|---|
| Course management | No events created after 30 days active | crosssell-courses |
Increase feature adoption score |
| SEPA direct debit | Bank account configured but no billing run | crosssell-sepa |
First automated billing |
| Check-in | No check-in events after 30 days, tier supports it | crosssell-checkin |
First check-in event |
| Resource booking | No resources created after 30 days, tier supports it | crosssell-resources |
First booking |
| Mobile app | No mobile app logins from organization's members | crosssell-mobile-app |
10+ member app logins |
| Email communication | No bulk emails sent after 30 days | crosssell-communication |
First campaign sent |
| Reporting | No report views after 30 days | crosssell-reporting |
First report exported |
| Data import | < 10 members added manually, no import performed | crosssell-import |
First CSV import |
Customer Journey Map
End-to-End Journey
Journey Touchpoints
| Phase | Customer Experience | Channels | Key Emotion | Success Metric |
|---|---|---|---|---|
| Discovery | Finds Membership via search, ad, referral, or trade show. Visits website, reads features, views pricing. | Website, Google, social media, trade show booth | Curiosity, skepticism | Website visit, pricing page view |
| Evaluation | Attends 30-min demo, asks questions, compares with current solution. Reviews competitor comparison page. | Video call, email, website docs | Interest, comparison anxiety | Demo completed, trial started |
| Trial | Signs up for 14-day trial, explores dashboard, adds sample members, tests billing. Receives nurture emails. | Product (web app), email, knowledge base | Excitement, occasional confusion | Features explored (>= 5), members added |
| Purchase | Selects tier, accepts terms, enters payment. Receives contract confirmation. | Product, email, payment page | Commitment, anticipation | Conversion within 14 days |
| Onboarding | Receives magic link, sets password, enters setup wizard. Organization provisioned automatically. | Email, product | Empowerment, slight overwhelm | Wizard completed in < 24h |
| Setup | Configures plans, imports members, sets up SEPA, invites team. Attends training call (Team+). | Product, video call, knowledge base | Productivity, occasional frustration | Go-live checklist >= 5/8 |
| Go-Live | First real members register, first billing run executed, first check-ins recorded. | Product, email notifications | Relief, satisfaction | First billing run successful |
| Adoption | Daily use: managing members, running billing, handling check-ins. Discovers advanced features. | Product (web + mobile), email | Confidence, efficiency | Health score > 70 |
| Mature | Established routine, stable member base, regular billing. Becomes a reference customer. | Product, email, quarterly review | Trust, loyalty | Health score > 80, NPS > 8 |
| Renewal | Receives renewal reminder, reviews usage summary, confirms continuation. | Email, product | Validation, ROI assessment | Renewal rate > 90% |
| Expansion | Hits tier limit or discovers locked feature, evaluates upgrade. Multi-location expansion. | Product (upgrade modal), email, sales call | Growth ambition | Tier upgrade within 30 days |
| At Risk | Usage declining, missed logins, failed payments. Receives automated and personal outreach. | Email, phone, product | Frustration, disengagement | Health score recovers to > 60 |
| Churned | Cancels subscription, completes exit survey, enters win-back sequence. Data preserved 120 days. | Email, exit survey | Disappointment, relief | Win-back within 90 days (target 10%) |
Metrics Dashboard
The customer lifecycle dashboard (internal, Membership One team only) tracks the following KPIs:
| KPI | Definition | Target | Frequency |
|---|---|---|---|
| Lead-to-Trial Conversion | Trials started / Leads created | > 30% | Weekly |
| Trial-to-Paid Conversion | Paid subscriptions / Trials started | > 25% | Weekly |
| Time to First Value | Days from provisioning to first real member added | < 3 days | Per customer |
| Time to Go-Live | Days from provisioning to go-live checklist passed | < 7 days (self-service), < 30 days (assisted) | Per customer |
| Onboarding Completion Rate | Customers completing all 8 checklist items / Total customers | > 60% | Monthly |
| 30-Day Retention | Customers active at day 30 / Customers activated | > 95% | Monthly |
| 90-Day Retention | Customers active at day 90 / Customers activated | > 90% | Monthly |
| Annual Retention | Customers renewing / Customers up for renewal | > 90% | Quarterly |
| Health Score Distribution | % of customers in Green / Yellow / Red | > 70% Green | Weekly |
| NPS | Net Promoter Score from quarterly surveys | > 50 | Quarterly |
| Monthly Recurring Revenue (MRR) | Sum of all active subscription fees | Growth target: +10% MoM | Monthly |
| Average Revenue Per Account (ARPA) | MRR / Active customers | > EUR 60 | Monthly |
| Customer Lifetime Value (CLV) | ARPA x Average customer lifespan in months | > EUR 2,000 | Quarterly |
| Customer Acquisition Cost (CAC) | Total sales + marketing cost / New customers acquired | < EUR 500 | Quarterly |
| CLV:CAC Ratio | CLV / CAC | > 4:1 | Quarterly |
Implementation Notes
Database Entities
The customer lifecycle introduces or extends the following entities (see Chapter 11 for full schema):
| Entity | Module | Purpose |
|---|---|---|
Lead |
membership-crm | Sales pipeline tracking (existing, see Ch. 11) |
Deal |
membership-crm | Opportunity management (existing, see Ch. 11) |
Activity |
membership-crm | Interaction logging (existing, see Ch. 11) |
ProvisioningJob |
membership-entity | Tenant provisioning tracking (new) |
OnboardingChecklist |
membership-entity | Go-live checklist progress (new) |
HealthScore |
membership-entity | Weekly health score snapshots (new) |
LifecycleEvent |
membership-communication | Lifecycle email trigger log (new) |
MigrationJob |
membership-import | Data migration tracking (existing, extended) |
API Endpoints
| Method | Path | Description | Auth |
|---|---|---|---|
POST |
/api/v1/provisioning/create |
Trigger tenant provisioning | System (internal) |
GET |
/api/v1/provisioning/{id}/status |
Check provisioning status | System / Admin |
POST |
/api/v1/onboarding/wizard/step/{step} |
Save wizard step data | Admin |
GET |
/api/v1/onboarding/wizard/progress |
Get wizard completion status | Admin |
GET |
/api/v1/onboarding/checklist |
Get go-live checklist status | Admin |
POST |
/api/v1/migration/upload |
Upload CSV for migration | Admin |
POST |
/api/v1/migration/validate |
Validate uploaded data | Admin |
POST |
/api/v1/migration/dry-run |
Execute dry run (no insert) | Admin |
POST |
/api/v1/migration/execute |
Execute migration (insert) | Admin |
GET |
/api/v1/health-score/{entityId} |
Get current health score | System / Admin |
GET |
/api/v1/health-score/{entityId}/history |
Get health score history | System / Admin |
POST |
/api/v1/lifecycle/trigger |
Manually trigger lifecycle event | System |
RabbitMQ Events
| Exchange | Routing Key | Payload | Producer | Consumer |
|---|---|---|---|---|
lifecycle |
provisioning.create |
{orgName, adminEmail, tier, industry, leadId} |
CRM module | Provisioning worker |
lifecycle |
provisioning.completed |
{entityId, adminUserId, provisioningJobId} |
Provisioning worker | Communication module |
lifecycle |
provisioning.failed |
{entityId, errorMessage, failedStep} |
Provisioning worker | Alerting |
lifecycle |
health.score.calculated |
{entityId, score, previousScore, dimensions} |
Health score job | Lifecycle engine |
lifecycle |
health.alert.yellow |
{entityId, score, triggerDimensions} |
Lifecycle engine | Communication module |
lifecycle |
health.alert.red |
{entityId, score, triggerDimensions} |
Lifecycle engine | Communication + CRM |
lifecycle |
churn.cancellation.requested |
{entityId, reason, saveOfferPresented} |
Subscription module | CRM + Communication |
lifecycle |
expansion.upgrade.triggered |
{entityId, fromTier, toTier, trigger} |
Billing module | CRM + Communication |
Scheduled Jobs
| Job | Schedule | Description |
|---|---|---|
HealthScoreCalculationJob |
Weekly, Monday 02:00 UTC | Calculate health scores for all active organizations |
TrialExpiryJob |
Daily, 06:00 UTC | Check for expiring trials, send warning or expiry emails |
ProvisioningRetryJob |
Every 5 minutes | Retry failed provisioning steps |
ChurnDetectionJob |
Daily, 03:00 UTC | Check early warning signals, trigger interventions |
WinBackSequenceJob |
Daily, 08:00 UTC | Send scheduled win-back emails for churned customers |
UsageSummaryJob |
Monthly, 1st at 04:00 UTC | Generate and send monthly usage summaries |
SampleDataCleanupJob |
Daily, 01:00 UTC | Delete expired sample data (> 30 days old) |