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
| Method | Purpose | Default |
|---|---|---|
sdkKey(value) | Merchant-facing SDK key | required (unless data supplied) |
sdkKeySecret(value) | Confidential SDK secret — used when the server requires signed requests | null |
data(config) | Pre-fetched ConfigResponseData; bypasses the initial network fetch | null |
environment(value) | "staging" / "prod" hint forwarded with every request | library default |
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 interval | 600_000 (10 min) |
batchSize(size) | Maximum events per outbound batch | JS-SDK parity |
releaseInterval(millis) | Minimum delay between flushes | JS-SDK parity |
hashSeed(seed) | MurmurHash3 seed for bucketing | JS-SDK parity |
maxTraffic(basisPoints) | Total traffic basis for bucketing | 10000 |
excludeExperienceIdHash(bool) | Legacy-account bucketing compatibility | false |
logLevel(level) | Minimum log severity | ERROR |
trackingEnabled(bool) | Boot-time tracking switch | true |
cacheLevel(level) | HTTP cache directive hint ("default" / "low") | "default" |
rulesKeysCaseSensitive(bool) | Rule-engine key case sensitivity | true |
rulesNegation(str) | Rule-engine negation semantics | library 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.comparisonProcessorin the JS SDK).networkSource(value)— the platformnetwork.sourceidentifier appended to tracking payloads (e.g."android").mapper(value)— an opaque consumer-supplied object reserved for JS-SDK response-mapping parity.
Notes on key options
logLevelacceptsLogLevel.ERROR,WARN,INFO,DEBUG, orTRACE. UseDEBUGwhile integrating; the defaultERRORkeeps production logs quiet. See Logging.trackingEnabled(false)is the boot-time equivalent ofsdk.setTrackingEnabled(false)— useful when consent is unknown at launch. Flip it at runtime once consent resolves. See Tracking Control.dataRefreshIntervaldrives 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,excludeExperienceIdHashaffect bucketing math. Leave them at their defaults unless you are matching a legacy account's bucketing — see the shared Bucketing Algorithm doc.
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:VNext steps
- Initialization — builder usage,
onReady, direct-data mode - Return Types & Models —
LogLeveland the other enums - Tracking Control — the tracking switch in depth
Updated 2 days ago