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

# Custom Actions

> Define your own actions in No-Code screens and handle them in your app code.

## Overview

Custom Actions let you add your own handling for taps in a No-Code screen. Unlike built-in actions (purchase, restore, close, etc.), a Custom Action is not executed by the SDK — it is handed over to your app through the No-Codes delegate, and your code decides what happens.

Each Custom Action is configured with a **value** — an arbitrary string that identifies the action, so your app code can tell which one was triggered.

Use Custom Actions to run app-specific logic right from a No-Code screen, for example:

* Open a native screen of your app
* Start a support chat
* Log a custom analytics event
* Toggle an app feature

***

## Configuration

To configure a Custom Action in the No-Code Builder:

1. Select a component
2. In the **Action** section of the right sidebar, choose **Custom action**
3. Enter the **Value** — the string your app code will use to identify this action

When **Platform-Specific Actions** is enabled, you can configure different values (or entirely different actions) for iOS and Android independently.

<Info>
  Custom Actions are available for mobile screens only. For Web Funnel screens the action is not offered in the builder — there is no SDK delegate on the web to receive it.
</Info>

***

## Handling in Your App

When a Custom Action is triggered, the SDK fires the standard action lifecycle callbacks (<a href="/docs/displaying-no-codes#action-execution-start-event">started</a> → <a href="/docs/displaying-no-codes#action-execution-finish-event">finished</a>) and, in between, calls a dedicated delegate method. The configured value tells your code which action to run:

<CodeGroup>
  ```swift Swift theme={null}
  extension MyClass: NoCodesDelegate {
    func noCodesReceivedCustomAction(value: String) {
      switch value {
      case "open_settings":
        // navigate to your native settings screen
      case "start_chat":
        // open your support chat
      default:
        break
      }
    }
  }
  ```

  ```kotlin Kotlin theme={null}
  class MyActivity : AppCompatActivity(), NoCodesDelegate {
    override fun onCustomAction(value: String) {
      when (value) {
        "open_settings" -> { /* navigate to your native settings screen */ }
        "start_chat" -> { /* open your support chat */ }
      }
    }
  }
  ```

  ```java Java theme={null}
  public class MyActivity extends AppCompatActivity implements NoCodesDelegate {
    @Override
    public void onCustomAction(@NonNull String value) {
      switch (value) {
        case "open_settings":
          // navigate to your native settings screen
          break;
        case "start_chat":
          // open your support chat
          break;
      }
    }
  }
  ```
</CodeGroup>

Keep in mind:

* The SDK performs no built-in handling — the whole behavior is up to your app code.
* The screen stays open. Close it with `NoCodes.shared.close()` (iOS) / `NoCodes.shared.close()` (Android) if your custom logic requires it.
* If no value was configured for the action, an empty string is delivered.

<Info>
  Cross-platform SDKs (React Native, Flutter, Unity, Cordova, Capacitor) support for Custom Actions is coming soon.
</Info>

***

## Minimum SDK Versions

Custom Actions require the following minimum SDK versions:

| Platform | Minimum Version |
| -------- | --------------- |
| iOS      | 6.13.0          |
| Android  | No-Codes 1.10.0 |

<Info>
  ### **Note**

  Older SDK versions silently ignore Custom Actions — tapping the element does nothing, and no delegate callbacks are fired.
</Info>

***

[Success and Failure Actions](success-failure-actions)

[Using No-Codes with custom purchases handling](using-no-codes-with-custom-purchases-handling)
