Skip to content

Technical reference

Entry point for the technical team that is going to integrate with Reskyt.

The push API is the public Reskyt API currently available.

APIWhat forAuthentication
Push notificationsSend notifications from your systemsx-api-key

If you need to integrate another way, it is usually solved from the web or through a module. See integrations and SDKs.

Every request that leaves the app includes the rktwebview identifier in the user agent. It is the reference check.

const isReskytApp = navigator.userAgent.includes('rktwebview');

There is also the is_app cookie, which is 1 whenever the code is running inside the app.

In addition to the rktwebview identifier, which is always sent, you can add a tag of your own to the user agent to tell platforms apart in your analytics or in your backend, of the form clientname_app_IOS or clientname_app_ANDROID.

It is configured in Settings › Parameters › App › Custom User Agent.

const ua = navigator.userAgent;
const isIOSApp = ua.includes('_app_IOS');
CookiePersistenceWhat it is for
uuid_appUntil the app is uninstalledIdentifier of the app installation on that device. It lets you link the device with a user profile in your database and keep the login persistent.
token_md5Until the app is uninstalledPush token of the device. It exists only if the user accepted notifications.
is_appSessionIt is 1 whenever the code is running inside the app.
function getCookie(name) {
return document.cookie
.split('; ')
.find((row) => row.startsWith(name + '='))
?.split('=')[1];
}

Installation date of the app, stored as JSON:

{
"value": 1749133186,
"expire": ""
}

value is a Unix timestamp in seconds. The expire field is for internal use and does not affect the installation date. It is useful for knowing how long a user has been on the app, for example for onboarding, reactivation campaigns or surveys after X days.

const raw = localStorage.getItem('install_date');
const installedAt = raw ? new Date(JSON.parse(raw).value * 1000) : null;
VariableValueNotes
firstCall1Indicates the user’s entry into the app. It does not detect the first launch after installing: it resets on every session.

window.ReskytLayout.device.getHashedInstallationId()

Section titled “window.ReskytLayout.device.getHashedInstallationId()”

Returns the hashed installation ID of the device, which is the value sent in the deviceId field of the push API.

The recommended flow is to first check that the user agent contains rktwebview, call the method during login or sign-up, store the returned value and associate it with the corresponding user in your systems. From then on that identifier is the one used to target sends.

if (navigator.userAgent.includes('rktwebview')) {
const hashedInstallationId =
window.ReskytLayout.device.getHashedInstallationId();
// Store it associated with the user in your database.
}

The app can add UTM parameters to the URLs it opens, so that your analytics can tell app traffic apart from web traffic. They are configured in Settings › Parameters › App › UTM.

ParameterTypical value
utm_sourceapp.reskyt.com when the app is opened directly, push.reskyt.com when the session comes from a notification
utm_mediumreferral by default

When a deeplink opens the app that is already installed, all queryParams are propagated as they are to the WebView.

If the link does not carry utm_source or utm_medium, the system fills them in:

  • utm_medium takes the source platform (Google, Instagram…), with external_app as the default value if it cannot be determined.
  • utm_source takes the value deeplink.

Integrations and SDKs explains the available integration routes and what each one involves in the publication cycle. The module catalogue lists what is already integrated.

Deep links covers Universal Links on iOS and App Links on Android. Authentication and sessions explains where the boundary of responsibilities lies in login.