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

# Outbound actions

> How Olira notifies your systems when something happens, instead of you polling for it.

An **outbound action** is Olira pushing a notification to a system you own the moment something happens — a patient's data updated, a log arrived that changed nothing, a mapping error, or an ingestion job finished — instead of you polling the API for changes.

You register a **destination**, subscribe it to the **triggers** you care about, and Olira records every send in a **delivery** ledger you can inspect and resend from. That is the same model in the Olira Console and in the SDK: what you create in one, you can read and manage in the other.

<Note>
  SDK calls require an API key with the [`sdk:actions`](/authentication) scope.
  In the Console, destinations and delivery history live under **Outbound
  actions** for the project you have selected.
</Note>

## How it works

| Step | What you do                             | What Olira does                                                                                                    |
| ---- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| 1    | Register a destination (Console or SDK) | Stores where to send, issues a signing secret (shown once), and starts watching the triggers you subscribed.       |
| 2    | Something happens on the platform       | Creates a delivery for each subscribed destination.                                                                |
| 3    | Olira sends to that destination         | Webhooks POST a signed JSON envelope; email destinations receive a message. Failed webhook sends retry, then stop. |
| 4    | You inspect, and resend if needed       | Every attempt is in the delivery ledger. You can open it in the Console or read it with the SDK.                   |

Today you can send to a **webhook** or an **email**. More destination types will follow; they will show up in the same Console picker and the same SDK create call. Triggers, signing secrets, and the delivery ledger do not change.

## Key concepts

These words are the ones you will see in the Console, the SDK, and these docs.

| Concept            | What it is                                                                                                                                                |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Destination**    | Where deliveries go. Each one has a type (webhook or email today), a status, optional digest batching, and a signing secret.                              |
| **Trigger**        | The kind of occurrence that causes a delivery, such as `patient.state.changed`. You subscribe a destination to one or more triggers.                      |
| **Delivery**       | One send of one trigger to one destination. The ledger is the history of those sends: status, attempts, and the exact payload.                            |
| **Signing secret** | The secret Olira uses to sign webhook requests. Shown in plaintext once at create (and once at rotate); after that you only see the last four characters. |

## Next steps

<Columns cols={2}>
  <Card title="Destinations" icon="send" href="/outbound-actions/destinations">
    Webhook and email destinations, which triggers to subscribe, and when to batch.
  </Card>

  <Card title="Receiving deliveries" icon="shield-check" href="/outbound-actions/receiving-deliveries">
    The payload envelope, signature verification, retries, and the delivery ledger.
  </Card>

  <Card title="SDK reference" icon="braces" href="/reference/sdk/outbound-actions/create-action-destination">
    Create, update, rotate, list, and redeliver from Python or C#.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Create an API key and add the `sdk:actions` scope.
  </Card>
</Columns>
