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

# Outcomes

> An event that reports each presentation result the native SDK sends, wherever the placement was shown from, and each late strict unlock verification.

Raised once for each presentation result the native SDK reports, including the sheets trigger components open, and once for each claim that verifies after its flow ended under `UnlockMode.Strict`.

## Signature

```csharp theme={null}
public static event Action<PlacementOutcome> Outcomes;

public sealed class PlacementOutcome
{
    public PlacementOutcomeKind Kind;
    public string PlacementId;         // Presentation only
    public PresentationResult Result;  // Presentation only
    public string TransactionId;       // StrictUnlockVerified only; matches the claim's ClaimedOffer.TransactionId
}

public enum PlacementOutcomeKind
{
    Presentation,          // a placement resolved
    StrictUnlockVerified,  // UnlockMode.Strict only; entitlements are already refreshed
}
```

| Field | Type | Description |
| - | - | - |
| `Kind` | `PlacementOutcomeKind` | Which of the two outcomes this is. Read it before the other fields |
| `PlacementId` | `string` | `Presentation` only. The placement that resolved |
| `Result` | [`PresentationResult`](https://docs.encorekit.com/publishers/unity/sdk-reference/presentation-result) | `Presentation` only. What the presentation did |
| `TransactionId` | `string` | `StrictUnlockVerified` only. Matches `ClaimedOffer.TransactionId` on the claim's original result, so you can join the two |

## Example

```csharp theme={null}
Encore.Outcomes += outcome =>
{
    if (outcome.Kind == PlacementOutcomeKind.Presentation)
    {
        Debug.Log($"{outcome.PlacementId}: presented={outcome.Result.Presented}");
    }
    else
    {
        Debug.Log($"Verified late: {outcome.TransactionId}");
    }
};
```

## Notes

* Raised on the Unity main thread.
* `StrictUnlockVerified` arrives only when [`EncoreOptions.Unlock`](https://docs.encorekit.com/publishers/unity/sdk-reference/configure#encoreoptions) is `UnlockMode.Strict`.
* Results the package builds itself, before the native SDK is reached, are not raised: `NotConfigured`, a bridge failure returned as `Error`, and `UseCaseUnavailable` from the builder. In the Unity Editor it never fires.
* It carries the same results your own call and a trigger component's `Result` event receive, so grant from one place only.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.