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

# Automationen

> Plane wiederkehrende Aufgaben und löse Funktionen automatisch basierend auf Datenbankereignissen oder Webhook-Ereignissen von Connectors aus

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Du siehst gerade die Entwicklerdokumentation
    </div>

    <div className="dev-docs-banner-text">
      Diese Dokumentation richtet sich an Entwickler, die mit der Base44-Entwicklerplattform arbeiten. Informationen zu Automationen im App-Editor findest du unter <a href="/Building-your-app/Creating-automations">Automationen für deine App erstellen</a>.
    </div>
  </div>
</div>

Automationen ermöglichen es [Backend-Funktionen](/developers/backend/resources/backend-functions/overview), automatisch nach einem Zeitplan, als Reaktion auf Datenbankereignisse oder wenn eine verbundene Integration ein Webhook-Ereignis sendet, zu laufen. Verwende Automationen, um Daten in regelmäßigen Abständen zu verarbeiten, Entity-Änderungen zu behandeln, auf Ereignisse externer Dienste zu reagieren oder einmalige Aufgaben zu bestimmten Zeitpunkten auszuführen.

Jeder Backend-Funktion können mehrere Automationen zugeordnet werden, die in der `function.jsonc`-Datei der Funktion konfiguriert sind. Wenn du nur eine `entry.ts`- oder `entry.js`-Datei hast, musst du diese Konfigurationsdatei hinzufügen, um Automationen zu verwenden. Automationen werden [atomar mit dem Funktionscode deployed](#deploy-automations), wenn du [`deploy`](/developers/references/cli/commands/deploy) oder [`functions deploy`](/developers/references/cli/commands/functions-deploy) ausführst.

## Automationstypen

Base44 unterstützt 4 Arten von Automationen:

* **[Geplante Automationen mit Cron](#cron)**: Verwende Cron-Ausdrücke für präzise Zeitplansteuerung.
* **[Geplante Automationen mit einfachen Schedules](#simple-schedule)**: Konfiguriere wiederkehrende Aufgaben nach Intervall ohne Cron-Ausdrücke.
* **[Entity-Ereignis-Automationen](#entity-events)**: Löse Funktionen aus, wenn Datenbankdatensätze erstellt, aktualisiert oder gelöscht werden.
* **[Connector-Automationen](#connector-automations)**: Reagiere in Echtzeit auf Ereignisse verbundener Dienste, etwa eine neue E-Mail in Gmail oder eine Dateiänderung in Google Drive.

## Gemeinsame Felder

### Gemeinsame Felder für alle Automationen

Alle Automationstypen teilen die folgenden Felder:

| Feld            | Typ       | Erforderlich | Beschreibung                                                                                                               |
| --------------- | --------- | ------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `type`          | `string`  | Ja           | Der Automationstyp. Mögliche Werte: `"scheduled"`, `"entity"` oder `"connector"`.                                          |
| `name`          | `string`  | Ja           | Eindeutige Kennung für die Automation.                                                                                     |
| `description`   | `string`  | Nein         | Menschenlesbare Beschreibung.                                                                                              |
| `function_args` | `object`  | Nein         | Argumente, die an die Funktion übergeben werden, wenn sie ausgelöst wird. Siehe [Funktionsargumente](#function-arguments). |
| `is_active`     | `boolean` | Nein         | Ob die Automation aktiviert ist. Standardwert ist `true`.                                                                  |

### Gemeinsame Felder für geplante Automationen

Sowohl Cron- als auch einfache geplante Automationen teilen diese zusätzlichen Felder:

| Feld               | Typ      | Erforderlich | Beschreibung                                                                                                                                                                                |
| ------------------ | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `schedule_mode`    | `string` | Ja           | Ob der Zeitplan sich wiederholt. Mögliche Werte: `"recurring"` oder `"one-time"`.                                                                                                           |
| `schedule_type`    | `string` | Ja           | Zu verwendende Zeitplanmethode. Mögliche Werte: `"cron"` oder `"simple"`.                                                                                                                   |
| `ends_type`        | `string` | Nein         | Wann der wiederkehrende Zeitplan enden soll. Mögliche Werte: `"never"`, `"on"` oder `"after"`. Standardwert ist `"never"`.                                                                  |
| `ends_on_date`     | `string` | Bedingt      | Datum, an dem der wiederkehrende Zeitplan endet (einschließlich), in UTC. Erforderlich, wenn `ends_type` `"on"` ist. Format: `YYYY-MM-DDTHH:MM:SSZ`. Zum Beispiel `"2026-12-31T23:59:59Z"`. |
| `ends_after_count` | `number` | Bedingt      | Anzahl der Ausführungen, nach denen der wiederkehrende Zeitplan stoppt. Erforderlich, wenn `ends_type` `"after"` ist.                                                                       |

## Automationskonfiguration

Konfiguriere Automationen in deiner `function.jsonc`-Datei mit einem der folgenden Ansätze. Alle Automationen verwenden die oben aufgeführten [gemeinsamen Felder für alle Automationen](#common-fields-for-all-automations) sowie die für jeden Typ spezifischen Felder.

### Cron

Verwende [gemeinsame Felder für alle Automationen](#common-fields-for-all-automations) und [gemeinsame Felder für geplante Automationen](#common-fields-for-scheduled-automations) zusammen mit den hier aufgeführten cron-spezifischen Feldern.

Setze `type` auf `"scheduled"` und `schedule_type` auf `"cron"`, um Cron-Ausdrücke für präzise Zeitplansteuerung zu verwenden.

Cron-Automationen verwenden die standardmäßige 5-Feld-Syntax: `minute hour day-of-month month day-of-week`. Siehe [crontab.guru](https://crontab.guru/) für einen interaktiven Cron-Ausdruck-Editor und eine Syntaxreferenz.

| Feld              | Typ      | Erforderlich | Beschreibung          |
| ----------------- | -------- | ------------ | --------------------- |
| `cron_expression` | `string` | Ja           | 5-Feld-Cron-Ausdruck. |

#### Cron-Beispiel

Dieses Beispiel führt eine Funktion täglich um Mitternacht UTC aus:

```jsonc theme={null}
{
  "name": "sendDailyReport",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "scheduled",
      "name": "daily_midnight_report",
      "description": "Runs every day at midnight UTC",
      "function_args": { "mode": "full_sync" },
      "is_active": true,

      "schedule_mode": "recurring",
      "schedule_type": "cron",
      "cron_expression": "0 0 * * ?"
    }
  ]
}
```

### Einfacher Schedule

Verwende [gemeinsame Felder für alle Automationen](#common-fields-for-all-automations) und [gemeinsame Felder für geplante Automationen](#common-fields-for-scheduled-automations) zusammen mit den hier aufgeführten Feldern für einfache Schedules.

Setze `type` auf `"scheduled"` und `schedule_type` auf `"simple"` für unkomplizierte Zeitplanbedürfnisse.

Konfiguriere wiederkehrende Aufgaben nach Intervall wie Minuten, Stunden, Tagen, Wochen oder Monaten, ohne Cron-Ausdrücke zu schreiben.

| Feld                     | Typ        | Erforderlich | Beschreibung                                                                                                                                                                               |
| ------------------------ | ---------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `one_time_date`          | `string`   | Bedingt      | Datum und Uhrzeit, an dem die Automation einmal läuft, in UTC. Erforderlich, wenn `schedule_mode` `"one-time"` ist. Format: `YYYY-MM-DDTHH:MM:SSZ`. Zum Beispiel `"2026-02-15T10:00:00Z"`. |
| `repeat_unit`            | `string`   | Bedingt      | Zeiteinheit für wiederkehrende Automationen. Erforderlich, wenn `schedule_mode` `"recurring"` ist. Mögliche Werte: `"minutes"`, `"hours"`, `"days"`, `"weeks"` oder `"months"`.            |
| `repeat_interval`        | `number`   | Bedingt      | Intervall zwischen Ausführungen. Erforderlich, wenn `repeat_unit` `"minutes"`, `"hours"` oder `"days"` ist.                                                                                |
| `start_time`             | `string`   | Bedingt      | Tageszeit, zu der die Automation läuft, in UTC. Erforderlich, wenn `repeat_unit` `"days"`, `"weeks"` oder `"months"` ist. Format: `HH:MM`.                                                 |
| `repeat_on_days`         | `number[]` | Bedingt      | Wochentage, an denen die Automation läuft. Erforderlich, wenn `repeat_unit` `"weeks"` ist. Array von Wochentag-Nummern, wobei `0` Sonntag und `6` Samstag ist.                             |
| `repeat_on_day_of_month` | `number`   | Bedingt      | Tag des Monats, an dem die Automation läuft. Erforderlich, wenn `repeat_unit` `"months"` ist. Gültige Werte: `1`-`31`.                                                                     |

#### Beispiele für einfache Schedules

Die folgenden Beispiele zeigen verschiedene Möglichkeiten, Automationen mit einfachen Schedules zu planen:

<CodeGroup>
  ```jsonc Every 30 minutes theme={null}
  {
    "type": "scheduled",
    "name": "every_30_minutes",
    "description": "Runs every 30 minutes.",
    "is_active": true,

    "schedule_mode": "recurring",
    "schedule_type": "simple",
    "repeat_unit": "minutes",
    "repeat_interval": 30
  }
  ```

  ```jsonc Weekdays at 9am theme={null}
  {
    "type": "scheduled",
    "name": "weekday_morning_report",
    "description": "Runs at 9 AM Monday through Friday.",
    "is_active": true,

    "schedule_mode": "recurring",
    "schedule_type": "simple",
    "repeat_unit": "weeks",
    "repeat_interval": 1,
    "start_time": "09:00",
    "repeat_on_days": [1, 2, 3, 4, 5],

    "ends_type": "after",
    "ends_after_count": 52
  }
  ```

  ```jsonc One-time execution theme={null}
  {
    "type": "scheduled",
    "name": "one_time_cleanup",
    "description": "Runs once at a specific date and time.",
    "function_args": { "cleanup": true },
    "is_active": true,

    "schedule_mode": "one-time",
    "schedule_type": "simple",
    "one_time_date": "2026-02-15T10:00:00Z"
  }
  ```
</CodeGroup>

### Entity-Ereignisse

Verwende [gemeinsame Felder für alle Automationen](#common-fields-for-all-automations) zusammen mit den hier aufgeführten Entity-Ereignis-Feldern.

Setze `type` auf `"entity"`, um Funktionen automatisch auszulösen, wenn Datenbankdatensätze erstellt, aktualisiert oder gelöscht werden.

Entity-Automationen können auf 1 oder mehrere Ereignistypen einer bestimmten Entität reagieren.

| Feld          | Typ        | Erforderlich | Beschreibung                                                                                                                      |
| ------------- | ---------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `entity_name` | `string`   | Ja           | Name der zu überwachenden Entität.                                                                                                |
| `event_types` | `string[]` | Ja           | Datenbankereignisse, auf die reagiert werden soll. Mögliche Werte: `"create"`, `"update"`, `"delete"`. Mindestens 1 erforderlich. |

#### Beispiele für Entity-Ereignisse

Die folgenden Beispiele zeigen, wie Funktionen basierend auf Entity-Ereignissen ausgelöst werden:

<CodeGroup>
  ```jsonc All order events theme={null}
  {
    "name": "processOrders",
    "entry": "entry.ts",
    "automations": [
      {
        "type": "entity",
        "name": "on_order_changes",
        "description": "Triggered on order create, update, or delete.",
        "function_args": { "notify_slack": true },
        "is_active": true,

        "entity_name": "orders",
        "event_types": ["create", "update", "delete"]
      }
    ]
  }
  ```

  ```jsonc New records only theme={null}
  {
    "type": "entity",
    "name": "on_customer_create",
    "description": "Triggered when a new customer is created.",
    "is_active": true,

    "entity_name": "customers",
    "event_types": ["create"]
  }
  ```
</CodeGroup>

### Connector-Automationen

Verwende [gemeinsame Felder für alle Automationen](#common-fields-for-all-automations) zusammen mit den hier aufgeführten connectorspezifischen Feldern.

Setze `type` auf `"connector"`, um Funktionen auszulösen, wenn eine verbundene Integration ein Webhook-Ereignis sendet. Damit kannst du in Echtzeit auf Aktivitäten externer Dienste reagieren. Du kannst zum Beispiel eine neue E-Mail parsen, eine Kalenderänderung synchronisieren oder auf ein Datei-Update in Google Drive reagieren.

Du kannst optional [Trigger-Bedingungen](#trigger-conditions) hinzufügen, um Ereignisse zu filtern, sodass deine Funktion nur ausgeführt wird, wenn der Payload zu den von dir definierten Regeln passt.

Wenn eine Connector-Automation ausgelöst wird, erhält deine Funktion eine strukturierte [Webhook-Payload](#webhook-payload) mit dem Ereignistyp, Integrationsdetails und den Rohdaten des externen Dienstes.

<Note>
  Der Connector muss in deinem Projekt konfiguriert und vor dem Deployment autorisiert sein. Siehe [Shared Connectors](/developers/backend/resources/connectors/shared-connectors) für Einrichtungsanweisungen.
</Note>

| Feld                 | Typ        | Erforderlich | Beschreibung                                                                                                                                                                                                                                              |
| -------------------- | ---------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `integration_type`   | `string`   | Ja           | Der Connector-Typ-Identifier, auf den reagiert werden soll. Siehe [unterstützte Integrationen](#supported-integrations-and-events) für akzeptierte Werte.                                                                                                 |
| `events`             | `string[]` | Ja           | Ein oder mehrere Webhook-Ereignisnamen, die abonniert werden sollen. Siehe [unterstützte Integrationen](#supported-integrations-and-events) für verfügbare Ereignisse pro Connector.                                                                      |
| `resource_id`        | `string`   | Bedingt      | Beschränkt die Automation auf eine bestimmte Ressource. Das erwartete Format hängt vom Connector ab. Siehe [Resource-ID-Formate](#resource-id-formats) unten. Erforderlich für datei-spezifische Google-Drive-Ereignisse. Optional für andere Connectors. |
| `trigger_conditions` | `object`   | Nein         | Regeln, die mit dem eingehenden Ereignis übereinstimmen müssen, bevor deine Funktion ausgeführt wird. Wenn das Ereignis nicht passt, wird die Ausführung übersprungen. Siehe [Trigger-Bedingungen](#trigger-conditions) für die vollständige Referenz.    |

#### Unterstützte Integrationen und Ereignisse

| Connector            | `integration_type` | `events`-Wert           | Beschreibung                                                                                     |
| -------------------- | ------------------ | ----------------------- | ------------------------------------------------------------------------------------------------ |
| Gmail                | `gmail`            | `mailbox`               | Jede Mailbox-Änderung, einschließlich neuer Nachrichten, Label-Updates und Lesestatusänderungen. |
| Google Calendar      | `googlecalendar`   | `events`                | Jede Kalender-Ereignisänderung, einschließlich erstellt, aktualisiert und gelöscht.              |
| Google Drive         | `googledrive`      | `changes`               | Jede Änderung im Drive, einschließlich hinzugefügter, geänderter oder gelöschter Dateien.        |
| Google Drive         | `googledrive`      | `file`                  | Jede Änderung an einer bestimmten Datei (erfordert `resource_id`).                               |
| Google Drive         | `googledrive`      | `file.update`           | Dateiinhalt oder -eigenschaften geändert (erfordert `resource_id`).                              |
| Google Drive         | `googledrive`      | `file.trash`            | Datei in den Papierkorb verschoben (erfordert `resource_id`).                                    |
| Google Drive         | `googledrive`      | `file.untrash`          | Datei aus dem Papierkorb wiederhergestellt (erfordert `resource_id`).                            |
| Google Drive         | `googledrive`      | `file.delete`           | Datei dauerhaft gelöscht (erfordert `resource_id`).                                              |
| Microsoft OneDrive   | `one_drive`        | `updated`               | Jede Datei- oder Ordneränderung, einschließlich erstellt, geändert und gelöscht.                 |
| Microsoft Outlook    | `outlook`          | `created`               | Eine neue E-Mail, ein Kalenderereignis oder ein Kontakt wird erstellt.                           |
| Microsoft Outlook    | `outlook`          | `updated`               | Eine E-Mail, ein Kalenderereignis oder ein Kontakt wird aktualisiert.                            |
| Microsoft Outlook    | `outlook`          | `deleted`               | Eine E-Mail, ein Kalenderereignis oder ein Kontakt wird gelöscht.                                |
| Microsoft SharePoint | `share_point`      | `updated`               | Wenn ein Listenelement oder Dokument erstellt, geändert oder gelöscht wird.                      |
| Microsoft Teams      | `microsoft_teams`  | `created`               | Wenn eine neue Chat-Nachricht gepostet wird.                                                     |
| Microsoft Teams      | `microsoft_teams`  | `updated`               | Wenn eine Chat-Nachricht aktualisiert wird.                                                      |
| Microsoft Teams      | `microsoft_teams`  | `deleted`               | Wenn eine Chat-Nachricht gelöscht wird.                                                          |
| Slack                | `slack`            | `message`               | Wenn eine Nachricht in einem Kanal gepostet wird.                                                |
| Slack                | `slack`            | `message.im`            | Wenn eine Direktnachricht gepostet wird.                                                         |
| Slack                | `slack`            | `message.groups`        | Wenn eine Nachricht in einem privaten Kanal gepostet wird.                                       |
| Slack                | `slack`            | `message.channels`      | Wenn eine Nachricht in einem öffentlichen Kanal gepostet wird.                                   |
| Slack                | `slack`            | `message.mpim`          | Wenn eine Nachricht in einer Multi-Party-IM gepostet wird.                                       |
| Slack                | `slack`            | `reaction_added`        | Wenn eine Reaktion zu einer Nachricht hinzugefügt wird.                                          |
| Slack                | `slack`            | `reaction_removed`      | Wenn eine Reaktion von einer Nachricht entfernt wird.                                            |
| Slack                | `slack`            | `member_joined_channel` | Wenn ein Benutzer einem Kanal beitritt.                                                          |
| Slack                | `slack`            | `member_left_channel`   | Wenn ein Benutzer einen Kanal verlässt.                                                          |
| Slack                | `slack`            | `file_shared`           | Wenn eine Datei geteilt wird.                                                                    |

<Tip>
  Gmails `mailbox`-Ereignis wird bei jeder Mailbox-Änderung ausgelöst, nicht nur bei neuen Nachrichten. Um deine Funktion nur dann auszuführen, wenn neue E-Mails ankommen, füge eine Trigger-Bedingung hinzu: `{ "field": "has_new_messages", "operator": "equals", "value": true }`.
</Tip>

<Note>
  Slack-Connector-Automationen erfordern Trigger-Bedingungen. Das Deployment schlägt fehl, wenn keine Bedingungen für Slack-Connector-Automationen gesetzt sind.
</Note>

#### Resource-ID-Formate

Der erwartete Wert für `resource_id` variiert je nach Connector:

* **Google Drive:** Die Datei-ID. Erforderlich für datei-spezifische Ereignisse (`file`, `file.update`, `file.trash`, `file.untrash`, `file.delete`).
* **Gmail:** Eine kommagetrennte Liste von Label-IDs, die beobachtet werden sollen. Standardwert ist `"INBOX"`, wenn weggelassen.
* **Microsoft Teams:** `{teamId}/{channelId}`, um einen bestimmten Kanal zu überwachen, oder `{chatId}`, um einen bestimmten Chat zu überwachen.
* **SharePoint:** `{siteId}/{listId}`, um eine bestimmte Liste zu überwachen.

#### Trigger-Bedingungen

Verwende `trigger_conditions`, um Webhook-Ereignisse zu filtern, sodass deine Funktion nur ausgeführt wird, wenn der Payload zu den von dir definierten Regeln passt. Wenn keine Bedingungen gesetzt sind, wird die Funktion für jedes eingehende Ereignis ausgeführt. Siehe [Beispiele für Connector-Automationen](#connector-automation-examples) für vollständige Konfigurationen.

<ResponseField name="logic" type="string">
  Wie die Bedingungen kombiniert werden. Mögliche Werte: `"and"` (alle müssen passen), `"or"` (mindestens eine muss passen). Standardwert ist `"and"`.
</ResponseField>

<ResponseField name="conditions" type="array" required>
  Ein oder mehrere Bedingungsobjekte oder verschachtelte Bedingungsgruppen. Maximal 20 Blattbedingungen und 5 Verschachtelungsebenen.

  <Expandable title="Felder eines Bedingungsobjekts">
    <ResponseField name="field" type="string" required>
      Punktgetrennter Pfad in die Webhook-Payload. Zum Beispiel liest `"status"` `payload.data.status` und `"sender.email"` liest `payload.data.sender.email`.
    </ResponseField>

    <ResponseField name="operator" type="string" required>
      Wie der Feldwert verglichen wird.

      <Expandable title="Unterstützte Operatoren">
        | Operator       | Beschreibung                                                                                                  |
        | -------------- | ------------------------------------------------------------------------------------------------------------- |
        | `equals`       | Feldwert stimmt genau mit `value` überein.                                                                    |
        | `not_equals`   | Feldwert stimmt nicht mit `value` überein.                                                                    |
        | `contains`     | Feldwert enthält `value` als Teilzeichenfolge.                                                                |
        | `not_contains` | Feldwert enthält `value` nicht als Teilzeichenfolge.                                                          |
        | `starts_with`  | Feldwert beginnt mit `value`.                                                                                 |
        | `ends_with`    | Feldwert endet mit `value`.                                                                                   |
        | `gt`           | Feldwert ist größer als `value`.                                                                              |
        | `gte`          | Feldwert ist größer oder gleich `value`.                                                                      |
        | `lt`           | Feldwert ist kleiner als `value`.                                                                             |
        | `lte`          | Feldwert ist kleiner oder gleich `value`.                                                                     |
        | `in_list`      | Feldwert ist eines der Elemente in `value` (ein Array).                                                       |
        | `not_in_list`  | Feldwert ist keines der Elemente in `value` (ein Array).                                                      |
        | `exists`       | Feld ist vorhanden und nicht null. Kein `value` erforderlich.                                                 |
        | `not_exists`   | Feld ist null oder fehlt. Kein `value` erforderlich.                                                          |
        | `is_empty`     | Feld ist null, ein leerer String, ein leeres Array oder ein leeres Objekt. Kein `value` erforderlich.         |
        | `is_not_empty` | Feld ist nicht null, kein leerer String, kein leeres Array und kein leeres Objekt. Kein `value` erforderlich. |
      </Expandable>
    </ResponseField>

    <ResponseField name="value" type="any">
      Der Wert, mit dem verglichen werden soll. Nicht erforderlich für `exists`, `not_exists`, `is_empty` und `is_not_empty`.
    </ResponseField>
  </Expandable>
</ResponseField>

#### Webhook-Payload

Wenn eine Connector-Automation deine Funktion auslöst, enthält der Request-Body ein `payload`-Objekt mit der folgenden Struktur. Siehe [Beispiele für Connector-Automationen](#connector-automation-examples) für eine Funktion, die die Payload liest.

| Feld                                | Typ       | Beschreibung                                                                                           |
| ----------------------------------- | --------- | ------------------------------------------------------------------------------------------------------ |
| `payload.automation.id`             | `string`  | ID der Automation, die diese Ausführung ausgelöst hat.                                                 |
| `payload.automation.name`           | `string`  | Name der Automation.                                                                                   |
| `payload.automation.type`           | `string`  | Immer `"connector"`.                                                                                   |
| `payload.event.type`                | `string`  | Der Webhook-Ereignisname. Zum Beispiel `"mailbox"`, `"events"` oder `"changes"`.                       |
| `payload.event.integration_type`    | `string`  | Der Connector-Typ. Zum Beispiel `"gmail"` oder `"googlecalendar"`.                                     |
| `payload.event.provider_identifier` | `string`  | Der Provider-Konto-Identifier, der zum Routing verwendet wird.                                         |
| `payload.data`                      | `object`  | Der rohe Webhook-Payload vom externen Dienst. Auf `null` gesetzt, wenn `payload_too_large` `true` ist. |
| `payload.payload_too_large`         | `boolean` | Ist `true`, wenn der Webhook-Payload ca. 200 KB überschritten hat und `data` `null` ist.               |

#### Beispiele für Connector-Automationen

<CodeGroup>
  ```jsonc Basic connector automation theme={null}
  // Triggers the function whenever a new email arrives in Gmail.

  {
    "name": "processInboundEmails",
    "entry": "entry.ts",
    "automations": [
      {
        "type": "connector",
        "name": "on_new_gmail",
        "description": "Runs when a new email arrives in Gmail.",
        "is_active": true,

        "integration_type": "gmail",
        "events": ["mailbox"]
      }
    ]
  }
  ```

  ```jsonc Single trigger condition theme={null}
  // Triggers only when a Google Calendar event has status "cancelled".

  {
    "type": "connector",
    "name": "on_event_cancelled",
    "description": "Runs only when a Google Calendar event is cancelled.",
    "is_active": true,

    "integration_type": "googlecalendar",
    "events": ["events"],
    "trigger_conditions": {
      "logic": "and",
      "conditions": [
        { "field": "status", "operator": "equals", "value": "cancelled" }
      ]
    }
  }
  ```

  ```jsonc Nested trigger conditions theme={null}
  // Triggers only for Gmail messages that are both in the inbox and unread.

  {
    "type": "connector",
    "name": "on_unread_inbox_email",
    "description": "Runs only for unread emails in the inbox.",
    "is_active": true,

    "integration_type": "gmail",
    "events": ["mailbox"],
    "trigger_conditions": {
      "logic": "and",
      "conditions": [
        { "field": "labelIds", "operator": "contains", "value": "INBOX" },
        { "field": "labelIds", "operator": "contains", "value": "UNREAD" }
      ]
    }
  }
  ```

  ```typescript Reading the payload theme={null}
  // Reads the structured payload from the request body.

  Deno.serve(async (req) => {
    const body = await req.json();
    const { payload } = body;

    const eventType = payload.event.type;            
    const integration = payload.event.integration_type; 

    if (payload.payload_too_large) {
      console.warn("Webhook payload was too large and was not included.");
      return Response.json({ ok: false, reason: "payload_too_large" });
    }

    const data = payload.data; 
    
    // Your function logic
    console.log(`Received ${eventType} event from ${integration}`, data);

    return Response.json({ ok: true });
  });
  ```
</CodeGroup>

### Funktionsargumente

Übergib Daten an deine Funktion, wenn sie ausgelöst wird, indem du das Feld `function_args` in deine Automationskonfiguration einbeziehst. Das ist nützlich, wenn eine Funktion mehrere Automationen mit unterschiedlichem Verhalten verarbeitet, etwa eine Sync-Funktion, die alle 15 Minuten inkrementell läuft, aber täglich einen vollen Sync durchführt.

Greife in deinem Funktionscode über den Request-Body auf diese Argumente zu.

#### Beispiel für Funktionsargumente

Dieses Beispiel zeigt eine Funktion, die basierend auf der Automationskonfiguration sowohl inkrementelle als auch vollständige Sync-Modi behandelt:

<CodeGroup>
  ```typescript Function code theme={null}
  Deno.serve(async (req) => {
    const body = await req.json();
    const args = body.args ?? {};

    // Use the arguments from automation config
    const mode = args.mode ?? "incremental";

    // Your function logic
  });
  ```

  ```jsonc Automation config theme={null}
  {
    "name": "syncData",
    "entry": "entry.ts",
    "automations": [
      {
        "type": "scheduled",
        "name": "incremental_sync",
        "description": "Runs every 15 minutes with incremental mode.",
        "function_args": { "mode": "incremental" },
        "is_active": true,
        "schedule_mode": "recurring",
        "schedule_type": "simple",
        "repeat_unit": "minutes",
        "repeat_interval": 15
      },
      {
        "type": "scheduled",
        "name": "full_sync",
        "description": "Runs daily at midnight with full sync mode.",
        "function_args": { "mode": "full" },
        "is_active": true,
        "schedule_mode": "recurring",
        "schedule_type": "cron",
        "cron_expression": "0 0 * * ?"
      }
    ]
  }
  ```
</CodeGroup>

## Automationen deployen

Deploye Backend-Funktionen mit ihren Automationen mit dem CLI-Befehl [`functions deploy`](/developers/references/cli/commands/functions-deploy) oder dem vereinheitlichten Befehl [`deploy`](/developers/references/cli/commands/deploy). Du kannst bestimmte Funktionen nach Namen mit `functions deploy <names...>` deployen.

Das Deployment ist pro Funktion atomar. Eine Funktion gilt nur dann als deployed, wenn sowohl das Deno-Deployment als auch alle ihre Automationen erfolgreich sind. Wenn eine Automation nicht deployed werden kann, wird das gesamte Funktions-Deployment zurückgerollt.

Nach dem Deployment zeigt die CLI den Status pro Funktion: deployed, unchanged oder error.

## Automationen im Dashboard verwalten

<Warning>
  Alle Änderungen im Dashboard werden beim nächsten Ausführen von [`functions deploy`](/developers/references/cli/commands/functions-deploy) überschrieben. Es gibt keine Zwei-Wege-Synchronisierung zwischen Dashboard und deinen lokalen Dateien. Automationen, die in deinen lokalen `function.jsonc`-Dateien definiert sind, sind die Quelle der Wahrheit.

  Wenn du Änderungen an deinen Automationen vornehmen möchtest, aktualisiere deine lokalen `function.jsonc`-Dateien und deploye erneut. Verwende das Dashboard zum Überwachen von Ausführungslogs und zum manuellen Auslösen von Automationen bei Bedarf.
</Warning>

Sieh dir deine Automationen im Base44-Dashboard unter dem Tab **Automations** an und verwalte sie. Im Dashboard kannst du:

* Ausführungslogs und Historie ansehen
* Automationen manuell zum Testen ausführen
* Automationsstatus überwachen

## Siehe auch

* [Backend-Funktionen](/developers/backend/resources/backend-functions/overview): Erfahre mehr über Backend-Funktionen
* [`functions deploy`](/developers/references/cli/commands/functions-deploy): Funktionen mit Automationen deployen
* [`deploy`](/developers/references/cli/commands/deploy): Alle Ressourcen auf einmal deployen
* [`logs`](/developers/references/cli/commands/logs): Funktionslogs ansehen

<Note>Diese Seite wurde mit KI übersetzt. Für die genauesten und aktuellsten Informationen siehe die [englische Version](/). </Note>
