> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-clara.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Formelfelder

> Erstellen Sie Formelfelder mithilfe von Workflows, bis native Unterstützung verfügbar ist.

Twenty unterstützt derzeit noch keine nativen Formelfelder (kommt 2026), aber Sie können dasselbe Ergebnis mithilfe von Workflows erreichen. Mit diesem Workaround können Sie Feldwerte automatisch berechnen und ausfüllen – von einfachen Verkettungen bis hin zu komplexer Geschäftslogik.

## Häufige Anwendungsfälle

| Anwendungsfall              | Formelbeispiel                          |
| --------------------------- | --------------------------------------- |
| **Vollständiger Name**      | Vorname + " " + Nachname                |
| **Erwarteter Betrag**       | Betrag × Wahrscheinlichkeit             |
| **Tage bis zur Fälligkeit** | Fälligkeitsdatum - Heute                |
| **Tage in der Phase**       | Heute - Phaseneintrittsdatum            |
| **Lead-Score**              | Punkte basierend auf mehreren Kriterien |

<Tip>
  Ein vollständiges Beispiel für das Nachverfolgen der Zeit in Pipeline-Phasen finden Sie unter [Verfolgen, wie lange Chancen in jeder Phase bleiben](/l/de/user-guide/views-pipelines/how-tos/track-time-in-stage).
</Tip>

## Einfache Formel: Verkettung

### Beispiel: Vollständigen Namen automatisch ausfüllen

**Ziel**: Vor- und Nachname automatisch zu einem Feld für den vollständigen Namen kombinieren.

### Einrichtung

1. **Auslöser**: Datensatz wird aktualisiert oder erstellt (Personen)

2. **Filter**: Prüfen, ob sich Vorname oder Nachname geändert hat

3. **Code-Aktion**:

```javascript theme={null}
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
```

4. **Datensatz aktualisieren**: Vollständigen Namen auf `{{code.fullName}}` setzen

## Numerische Formel: Erwarteter Betrag

### Beispiel: Erwarteten Umsatz berechnen

**Ziel**: Den Chancenbetrag mit der Wahrscheinlichkeit multiplizieren, um den erwarteten Betrag zu erhalten.

Den vollständigen Workflow finden Sie unter [Erwarteten Betrag in der Pipeline anzeigen](/l/de/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline).

### Schnelleinrichtung

1. **Auslöser**: Datensatz wird aktualisiert (Chancen, Feld Betrag ODER Wahrscheinlichkeit)

2. **Code-Aktion**:

```javascript theme={null}
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
```

3. **Datensatz aktualisieren**: Erwarteten Betrag auf `{{code.expectedAmount}}` setzen

## Datumsformel: Tagesberechnung

### Beispiel: Tage bis zur Fälligkeit einer Aufgabe

**Ziel**: Berechnen, wie viele Tage bis zum Fälligkeitsdatum einer Aufgabe verbleiben.

### Einrichtung

1. **Auslöser**: Datensatz wird aktualisiert oder erstellt (Aufgaben, Feld Fälligkeitsdatum)

2. **Code-Aktion**:

```javascript theme={null}
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
```

3. **Datensatz aktualisieren**: Tage bis zur Fälligkeit auf `{{code.daysUntilDue}}` setzen

<Note>
  Negative Werte weisen auf überfällige Aufgaben hin. Sie können dieses Feld verwenden, um Aufgaben nach Dringlichkeit zu filtern oder zu sortieren.
</Note>

## Bedingte Formel: Lead-Score

### Beispiel: Lead-Score anhand von Kriterien berechnen

**Ziel**: Leads anhand von Unternehmensgröße, Branche und Engagement bewerten.

### Einrichtung

1. **Auslöser**: Datensatz wird aktualisiert (Personen oder Unternehmen)

2. **Code-Aktion**:

```javascript theme={null}
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
```

3. **Datensatz aktualisieren**: Lead-Score auf `{{code.leadScore}}` setzen

## Textformel: Domain-Extraktion

### Beispiel: Domain aus E-Mail extrahieren

**Ziel**: Die E-Mail-Domain automatisch extrahieren und speichern.

### Einrichtung

1. **Auslöser**: Datensatz wird aktualisiert (Personen, E-Mail-Feld)

2. **Code-Aktion**:

```javascript theme={null}
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
```

3. **Datensatz aktualisieren**: Feld Domain auf `{{code.domain}}` setzen

## Beste Praktiken

### Leistung

* Nur bei relevanten Feldänderungen auslösen
* Filter verwenden, um Datensätze ohne Berechnungsbedarf zu überspringen
* Komplexe Berechnungen in Workflows mit hohem Volumen vermeiden

### Fehlerbehandlung

* Vor Berechnungen auf null/undefined-Werte prüfen
* Standardwerte verwenden, wenn Daten fehlen
* Klare Fehlermeldungen zurückgeben, wenn Berechnungen fehlschlagen

### Tests

* Mit Randfällen testen (leere Felder, Nullwerte)
* Berechnungen vor der Aktivierung manuell überprüfen
* Workflow-Ausführungen auf unerwartete Ergebnisse überwachen

## Verwandt

* [Erwarteten Betrag in der Pipeline anzeigen](/l/de/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
* [Zeit in der Phase nachverfolgen](/l/de/user-guide/views-pipelines/how-tos/track-time-in-stage)
* [Workflow-Aktionen](/l/de/user-guide/workflows/capabilities/workflow-actions)
