Configuration Options

Full builder option reference

Every option is set through a ConvertSDK.Builder method and is optional except sdkKey(...) or data(...). Set what you need and leave the rest at their defaults. All options mirror the Convert JS SDK's Config type — if you are porting from the JS SDK, each field is reachable through a camelCase builder setter.

val sdk = ConvertSDK.builder(applicationContext)
    .sdkKey("YOUR_SDK_KEY")
    .environment("prod")
    .dataRefreshInterval(600_000)
    .logLevel(LogLevel.INFO)
    .build()

Builder options

MethodPurposeDefault
sdkKey(value)Merchant-facing SDK keyrequired (unless data supplied)
sdkKeySecret(value)Confidential SDK secret — used when the server requires signed requestsnull
debugToken(value)QA debug token; widens config visibility to draft/paused entities and disables the on-disk config cachenull
data(config)Pre-fetched ConfigResponseData; bypasses the initial network fetchnull
environment(value)"staging" / "prod" hint forwarded with every request"staging"
configEndpoint(url)Override the config-fetch URL (staging / on-prem)Convert CDN
trackEndpoint(url)Override the tracking URL (staging / on-prem)Convert tracking endpoint
dataRefreshInterval(millis)Config re-fetch interval300_000 (5 min)
batchSize(size)Maximum events per outbound batch10
releaseInterval(millis)Minimum delay between flushes1_000 (1 s)
hashSeed(seed)MurmurHash3 seed for bucketing9999
maxTraffic(basisPoints)Total traffic basis for bucketing10000
excludeExperienceIdHash(bool)Legacy-account bucketing compatibilityfalse
logLevel(level)Minimum log severityDEBUG
trackingEnabled(bool)Boot-time tracking switchtrue
cacheLevel(level)HTTP cache directive hint ("default" / "low")"default"
rulesKeysCaseSensitive(bool)Rule-engine key case sensitivitytrue
rulesNegation(str)Rule-engine negation semanticslibrary default

JS-SDK parity hooks

The builder also exposes parity setters that exist so the full JS Config surface is reachable from Android. Set them only when matching specific JS-SDK behavior:

  • rulesComparisonProcessor(value) — the rule-engine comparison-processor identifier (rules.comparisonProcessor in the JS SDK).
  • networkSource(value) — the platform network.source identifier appended to tracking payloads. Defaults to "android-sdk"; set it only to override (e.g. networkSource("android-sdk")). The -sdk suffix matches the tracking server's source whitelist and self-documents the integration in server logs.
  • mapper(value) — an opaque consumer-supplied object reserved for JS-SDK response-mapping parity.

Notes on key options

  • logLevel accepts LogLevel.ERROR, WARN, INFO, DEBUG, TRACE, or SILENT. The floor is inclusive — INFO emits error/warn/info and drops debug. The default is DEBUG, which is deliberately chatty for integration work: set an explicit logLevel for production builds (INFO or ERROR), or SILENT to drop every line. TRACE currently emits the same set as DEBUG — the logger has no separate trace sink. See Logging.
  • trackingEnabled(false) is the boot-time equivalent of sdk.setTrackingEnabled(false) — useful when consent is unknown at launch. Flip it at runtime once consent resolves. See Tracking Control.
  • dataRefreshInterval drives the foreground config-refresh loop. The loop runs only while the app is in the foreground and only after the first config has loaded.
  • hashSeed, maxTraffic, excludeExperienceIdHash affect bucketing math. Leave them at their defaults unless you are matching a legacy account's bucketing — see the shared Bucketing Algorithm doc.
  • debugToken is a QA credential, not a production option. While it is set, every config request carries the token plus a forced low-cache hint, and the on-disk config cache is neither read nor written — so a QA build always sees fresh config, including draft and paused entities. The token is never sent to the tracking endpoint, and it is redacted from the SDK's own log output (both in the rendered config and in failed-request URLs). Generate one from your Convert dashboard. See the shared QA & Preview guide.

Logging during development

import com.convert.sdk.core.model.LogLevel

ConvertSDK.builder(context)
    .sdkKey("YOUR_SDK_KEY")
    .logLevel(LogLevel.DEBUG)
    .build()

The SDK logs through android.util.Log under the tag ConvertSDK. Capture logs with:

adb logcat -s ConvertSDK:V

Next steps


Did this page help you?