# Alternative Outcomes

When logging user interactions, it's important to select the most appropriate outcome type to accurately capture user behavior. The SDK provides generic outcomes for immediate user decisions, as well as additional outcomes for more detailed interactions, such as banner interactions or ads.

If your flow has just 2 potential outcomes, we strongly recommend using simply `.positive` and `.negative` outcomes, to avoid extra complexities. However, if your flow has more than 2 potential outcomes, the following outcomes can be used for further distinction:

* `.positive`: A generic positive outcome, typically used when the user makes an immediate decision (e.g., responding to a full-screen prompt).
  * `.positiveInteracted`: User interacted with the banner and started the purchase flow, or read more about the offer.
  * `.positiveConverted`: User successfully completed the intended action (e.g., purchase).
  * `.positiveAdTapped`: User tapped an advertisement or promotional element.
* `.negative`: A generic negative outcome, typically used when the user makes an immediate decision (e.g. dismissing a full-screen prompt).
  * `.negativeNotInteracted`: User did not engage with the banner in any way.
  * `.negativeDismissed`: User explicitly dismissed the banner (e.g. using a close button).

See practical examples for these alternative outcomes in [Multivariate Monetization](/use-cases/multivariate-monetization.md) and [Inline Banners](/use-cases/inline-banners.md).

## The `skipped` outcome

A skipped outcome is neither positive or negative. It's designed to indicate actions that either ended up not showing the offer at all, or one that invalidated the flow. Examples:

* Your context's <kbd>shouldUpsell</kbd> is `true`, but there is custom logic in your app that prevents the offer from being shown, such as a cooldown mechanism.
* You present a paywall that has a "Restore Purchases" button. This action is neither negative, nor really positive, as there was no real "conversion" at that time, so we recommend logging the `skipped` outcome alongside a custom outcome metadata with key <kbd>used\_restore\_purchase\_button</kbd> and value `true`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.contextsdk.com/context-decision/advanced/alternative-outcomes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
