> ## 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.

# PresentationResult

> What one presentation did: whether a sheet appeared, the offer the player claimed, and why nothing appeared.

Every placement and every sheet a trigger component opens completes with one `PresentationResult`.

## Structure

```csharp theme={null}
public sealed class PresentationResult
{
    public bool Presented;                 // a sheet appeared
    public NotPresentedReason Reason;      // why not, when Presented is false
    public string ErrorType;               // the error, when there was one
    public string ErrorMessage;
    public AdvertiserOutcomeType Advertiser;
    public ClaimedOffer Offer;
    public string Publisher;
    public string Dismissal;               // how the sheet closed, such as "close_button"
    public ClaimedOffer Claim { get; }     // Offer when the player claimed, else null
}

public sealed class ClaimedOffer
{
    public string OfferId;                 // null on Android
    public string CampaignId;
    public string AdvertiserName;
    public string TransactionId;           // keep it: it carries the attribution
}

public enum AdvertiserOutcomeType { NotAttempted, Claimed, Verified, Cooldown, Failed, Unknown }

public enum NotPresentedReason
{
    None, NotConfigured, AlreadyPresenting, NoOffers, ExperimentControl, UseCaseUnavailable, Error,
    NoForegroundActivity,   // Android only
    IapFirstDeclined,       // Android only
    UnsupportedOS,          // iOS only
    Unknown,                // a value this package version does not know
}
```

## Example

```csharp theme={null}
if (result.Claim?.TransactionId is string transactionId) SaveClaim(transactionId);
else if (!result.Presented) Debug.Log($"No sheet: {result.Reason}");
```

## Notes

* `Claim` is set when `Advertiser` is `Claimed` or `Verified`. A claim means the player went to the brand, not that they finished the offer.
* In the Unity Editor every placement returns `Presented = false` with `Reason = Error`, because the package has no native SDK to call there.


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