AnwendungsfallSaaS & Dienstleistungen

Kunden-Onboarding

Vom Sign-up zum voll eingerichteten Kunden in Minuten – über CRM, Billing und Mail. Mit sauberem Rollback, falls ein Schritt schiefgeht.
Beteiligte Systeme:CRMBillingIdentityE-Mail

Das Problem

Meldet sich ein neuer Kunde an, müssen mehrere Systeme gleichzeitig aufgesetzt werden: ein Account im Identity-System, ein Kundendatensatz im Billing, ein Kontakt im CRM und eine Willkommens-Mail-Sequenz im Marketing-Tool.

Geht auch nur einer dieser Schritte mittendrin schief, hast du am Ende einen halben Kunden: einen User, der sich einloggen kann, aber keinen Billing-Account hat, oder einen CRM-Kontakt, dem niemand etwas berechnen kann. Das per Hand aufzuräumen ist langsam, fehleranfällig und peinlich, sobald der Kunde es merkt.

Wie dataflows das löst

dataflows betreibt das komplette Onboarding als einen durablen Workflow. Jeder Schritt wird protokolliert. Fällt einer aus, wird er wiederholt. Kann er endgültig nicht erfolgreich sein, rollt der Workflow die vorherigen Schritte zurück – so gibt es nie halb angelegte Kunden.

Der Workflow kann auch auf träge Ereignisse warten, ohne Server-Ressourcen zu blockieren: eine Mail-Bestätigung, ein manuelles Sales-Review oder die erste Zahlung. Tritt das Ereignis ein, macht der Workflow genau dort weiter, wo er stehengeblieben ist.

So sieht das im Code aus

// Kunden-Onboarding-Workflow
export const onboarding = defineWorkflow({
  id: 'customer-onboarding',
  trigger: { type: 'webhook', path: '/signup' },

  async run({ event, step }) {
    const { email, name } = event.body

    const account = await step.run('create-account', () =>
      identity.createUser({ email })
    )

    const customer = await step.run('create-billing', () =>
      billing.createCustomer({ email, accountId: account.id })
    )

    await step.run('create-crm-contact', () =>
      crm.contacts.create({ name, email, customerId: customer.id })
    )

    await step.run('send-welcome', () =>
      email.send({
        to: email,
        template: 'welcome',
        data: { name }
      })
    )

    return { accountId: account.id, customerId: customer.id }
  },

  onFailure: ({ step, context }) => step.run('rollback', () =>
    cleanup.undo(context)
  )
})

Der Nutzen fürs Geschäft

Alle Systeme im Sync
Eine Anmeldung erzeugt den richtigen Datensatz in jedem System – in der richtigen Reihenfolge.
Sicheres Rollback
Schlägt etwas fehl, werden vorherige Schritte automatisch rückgängig gemacht. Keine Zombie-Accounts.
Pause für Menschen
Der Workflow kann auf Sales-Review oder die erste Zahlung warten und macht dann von allein weiter.

Lass uns über deinen Prozess sprechen

Erzähl uns, wo es aktuell klemmt. Wir sagen dir offen, ob und wie dataflows hilft – ohne Pitch, einfach ehrlich.