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

# Project overview

> Read project setup, delivery health, activity, and operational alerts

The overview turns the active project's setup and recent sending state into one operational screen.
Use it as a starting point, then open the underlying page when a card needs investigation.

## Setup checklist

New projects show four milestones: add a domain, verify DNS, create an API key, and send the first email.
The checklist links directly to the relevant domain, key, and email screens.
It disappears as the project becomes operational.

## Recent summary

The overview summarizes the last seven days of activity.
Read the counts together: a high sent count is not healthy if delivery falls or complaints rise.

| Signal                          | How to use it                                                          |
| ------------------------------- | ---------------------------------------------------------------------- |
| Sent                            | Establishes the volume denominator                                     |
| Delivered                       | Confirms recipient servers accepted messages                           |
| Opened and clicked              | Shows tracked engagement when tracking is enabled                      |
| Bounced                         | Identifies addresses or reputation problems                            |
| Complained                      | Indicates recipients marked messages as spam                           |
| Failed, rejected, or suppressed | Points to configuration, provider, policy, or recipient-state failures |

## Deliverability advisor

When your plan includes it, the advisor combines recent signals into a health view and recommended actions.
Treat a recommendation as an investigation path.
Open the related domain, message, suppression, or metrics page before changing production behavior.

## Real-time stream

When available for the project, the stream shows new email events as Signal receives them.
Use it during an integration test or incident, but use the email detail and metrics pages for durable analysis.

## Alerts

Overview alerts can call out domain authentication, tracking configuration, bounce or complaint risk, and usage pressure.
Resolve the underlying condition instead of dismissing an alert as a monitoring task.

<Note>
  Some cards depend on plan capabilities and recent data.
  A missing card does not mean the underlying API or project is unhealthy.
</Note>

## SDK example

After creating an authenticated client with the matching [SDK setup guide](/signal/send-with/sdk-overview),
use the operation for your language or framework.

<CodeGroup dropdown>
  ```typescript TypeScript theme={"dark"}
  const project = await signal.projects.getProject(projectId, {
    headers: { Authorization: `Bearer ${process.env.SIGNAL_API_KEY}` },
  });
  ```

  ```python Python theme={"dark"}
  project = signal.projects.get_project(project_id)
  ```

  ```go Go theme={"dark"}
  project, err := client.Projects.GetProject(ctx, projectID)
  if err != nil {
      panic(err)
  }
  ```

  ```ruby Ruby theme={"dark"}
  project = signal.projects.get_project(project_id: project_id)
  ```

  ```ruby Rails theme={"dark"}
  project = ApolloDeploySignalSdkRails.rails_client.projects.get_project(
    project_id: project_id
  )
  ```

  ```php PHP / Laravel theme={"dark"}
  $project = $signal->projects()->getProject($projectId);
  ```

  ```java Java theme={"dark"}
  var project = signal.projects().getProject(projectId);
  ```

  ```kotlin Kotlin theme={"dark"}
  val project = signal.projects.getProject(projectId)
  ```

  ```csharp .NET theme={"dark"}
  var project = await signal.Projects.GetProjectAsync(projectId);
  ```

  ```rust Rust theme={"dark"}
  let project = signal.projects.get_project(project_id.to_string()).await?;
  ```

  ```elixir Elixir theme={"dark"}
  {:ok, project, _metadata} = ApolloSignal.Client.get_project(client, project_id)
  ```

  ```swift Swift theme={"dark"}
  let project = try await signal.projects.getProject(projectId: projectId)
  ```

  ```zig Zig theme={"dark"}
  var projects = client.projects();
  var result = try projects.getProject(project_id, .{});
  defer result.deinit();

  switch (result) {
      .success => |_| {},
      .api_error => return error.SignalApiError,
  }
  ```
</CodeGroup>
