# Adding Entry Points

## What are entry points?

Entry points are triggers in your app that may show an upsell to your users.

In those moments, your app invokes ContextSDK to capture and analyze the user’s context.

These contexts allow the ML model to determine the next action - such as show an upsell screen, an ad, an app rating prompt, or skip the flow completely. The actions are tailored to your app’s specific use case.

<figure><img src="/files/M1tUnZ0uygQ6ZDJebMgg" alt=""><figcaption><p>Examples of entry points in an app that offers subscriptions</p></figcaption></figure>

## Why is adding entry points important?

<figure><img src="/files/lHPRuNiJfXQoz0A1Dkn7" alt=""><figcaption><p>This is what would likely happen if the goal was just to increase the conversion rate</p></figcaption></figure>

When integrating ContextDecision, it's crucial that you increase the entry points in your app, to increase the number of sales and revenue.

In the image above, the app is initially showing prompts in both good and bad moments. Once ContextDecision is implemented, it will only show prompts in good moments - when users are more likely to convert - thus showing less prompts, with higher conversion. However, if your primary goal is to generate more revenue, showing fewer prompts may not achieve that objective.

<figure><img src="/files/PiR6ODo3xJdG1D6gnXJE" alt=""><figcaption><p>In this example, the app had a 50% increase in sales by adding new entry points alongside ContextDecision</p></figcaption></figure>

## How can I add more entry points?

There are two types of entry points:

* Opportunities that refine existing algorithms, leveraging ContextDecision's ML decision-making to enhance or completely replace the logic previously used to trigger your upsell.
  * Example: a dating app currently shows an upsell prompt once every 10 profile swipes. We could tweak this number to 1 every 5, 1 every 2, or even on every swipe. See [#wont-this-annoy-the-users-even-more-by-spamming-them](#wont-this-annoy-the-users-even-more-by-spamming-them "mention")
* Opportunities that introduce new triggers, expanding the potential for upsells by incorporating additional moments into your app.
  * Example: an app shows an upsell prompt on **every** app launch. In this case there's no way we can increase the number of prompts shown, because it's already shown on every app launch (being as annoying as possible). In this case we'd need to introduce a new opportunity somewhere else, e.g. every time the user completes a key positive action within the app, tailored to the app’s specific industry.

First, determine whether the flow you’re enhancing with ContextDecision already uses existing algorithms, as shown in the first example above. If it does, that’s great news - it’s the easiest to refine and improve. If your current flow aligns more with the second type, you’ll need to explore new user journeys in your app where adding an upsell opportunity makes sense. These entry points often arise after key positive interactions or in other carefully timed moments.

After identifying where to introduce new entry point, collaborate with our technical team to configure a model tailored to this new flow. **Ensure this configuration is complete before rolling out the new flow to production.**

## Won't this annoy the users even more by spamming them?

No - that’s the strength of ContextDecision.

ContextDecision show prompts only in the best moments, thus reducing the number of prompts shown. However, to keep showing the same number of prompts as before, it’s essential to introduce new entry points.

If these two actions - refining prompt timing and increasing entry points - aren’t implemented together, you risk either reducing the total number of prompts (potentially decreasing revenue) or increasing them unnecessarily (which could frustrate users). For the best results, these steps should occur simultaneously: deploying the ML model and adding new entry points.

### Disabling new entry points during calibration phase

During the calibration phase, we recommend the new entry points to be "live", but disabled. There are 2 ways to disable them during the calibration phase:

* Inform us which flows are the new ones that should be disabled, and we'll disable them remotely by always sending `shouldUpsell = false` to your flow, during the calibration phase.
* Check if the model info exists and update your implementation accordingly:

{% tabs %}
{% tab title="iOS" %}

```swift
let modelInfo = ContextManager.getCustomModel(for: "your_upsell_flow")
let isInCalibrationPhase = modelInfo == nil
```

{% endtab %}

{% tab title="Android" %}
{% tabs %}
{% tab title="Kotlin" %}
Not yet supported in Android. Reach out to our team to request this feature.
{% endtab %}

{% tab title="Java" %}
Not yet supported in Android. Reach out to our team to request this feature.
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="Flutter" %}
Not yet supported in Flutter. Reach out to our team to request this feature.
{% endtab %}

{% tab title="Unity" %}
Not yet supported in Unity. Reach out to our team to request this feature.
{% endtab %}

{% tab title="React Native" %}
Not yet supported in React Native. Reach out to our team to request this feature.
{% endtab %}
{% endtabs %}

## How many entry points should I add?

It depends on your current prompt volume and your ability to increase it through existing and new flows.

<figure><img src="/files/ynZRmwLfcumUwGkrZb3x" alt=""><figcaption><p>Example showing 2 new entry points added, which was enough due to their volume</p></figcaption></figure>

In the example above, the app shows 100k prompts per week. At a 50% prompt intensity for the existing flow, it would need to add new entry points with enough volume to supply the suppressed 50k prompts per week. In the example, this was done by adding 2 new entry points, so that the final number of prompts shown per week remained the same.

See the chart below for an illustrative relationship between prompt intensity (percentage of prompts shown) and potential conversion rate improvements.

<div align="center" data-full-width="false"><figure><img src="/files/yK7qu2I1tzvnm9QEDOhG" alt="" width="436"><figcaption><p>Sample showing the relation between % of prompt shown and % of conversion rate increase</p></figcaption></figure></div>

To achieve this, evaluate your app’s unique use cases and user behavior. New flows or refinements to existing ones may unlock the entry points you need.

{% hint style="info" %}
Note that in the case of constantly evaluating the context, such as in the dating app example where the context would be evaluated multiple times per minute, your app is in charge of implementing a cooldown mechanism that prevents a prompt from being displayed multiple times subsequently, as ContextSDK doesn't embed this behavior internally.
{% endhint %}

{% hint style="info" %}
The numbers used in this page are used just to illustrate and don't represent the actual gain in conversion or revenue your app will see. Each app and industry have their own user behavior patterns and we create a bespoke ML model for each app.
{% endhint %}


---

# 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/adding-entry-points.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.
