Skip to content

Configuration Reference

Complete reference for all Sellwild SDK configuration options. These fields apply across all platforms (iOS, Android, React Native, Flutter) unless noted otherwise.


The first-class path: configure(partnerCode, slug)

In 1.2.0+, partners integrate the SDK with two strings:

ts
// React Native / TypeScript
const config = await configure('weatherbug', 'weatherbug-weatherbug')
swift
// iOS
let config = await SellwildSDK.configure(
    partnerCode: "weatherbug", slug: "weatherbug-weatherbug"
)
kotlin
// Android
val config = SellwildSDK.configure(
    partnerCode = "weatherbug", slug = "weatherbug-weatherbug"
)
dart
// Flutter
final config = await SellwildSDK.configure(
  partnerCode: 'weatherbug', slug: 'weatherbug-weatherbug',
);

configure() fetches https://widget.sellwild.com/app/{partnerCode}/{slug}.json, applies it onto SDK defaults, and returns a fully-built SellwildConfig. Every field below — ad zones, refresh intervals, waterfall partners, compliance flags, app identity — is populated from the CMS without an app update. On any network failure, timeout, or 404 the SDK falls back to deterministic defaults so ads still render.

The rest of this page documents every field that the CMS can populate.


Table of Contents

  1. Remote Config — the JSON shape served by the CDN
  2. SellwildConfig — every field the SDK reads
  3. PrebidServerConfig
  4. Ad Size Reference
  5. Ad Refresh Configuration
  6. Debug Mode

SellwildConfig

The primary configuration object passed to all SDK components. Every ad view, widget, and API client reads from this object. All fields below can be set by the CDN via Remote Config; only partnerCode is truly required.

Identity

FieldTypeDescription
partnerCodeStringYour Sellwild partner identifier. Used as ortb2.app.publisher.id in bid requests. Required.

App Identity

These fields ensure bid requests are classified as in-app traffic. Without them, DSPs treat impressions as anonymous web traffic and most will not bid.

FieldTypeDefaultDescription
appBundleIdString?nullApp bundle identifier (e.g., "com.example.myapp"). Sent as ortb2.app.bundle.
appStoreUrlString?nullApp store listing URL. Sent as ortb2.app.storeurl. Required for app-ads.txt verification.

Prebid Server

FieldTypeDefaultDescription
prebidServerPrebidServerConfig?nullPrebid Server configuration used by the native Prebid Mobile auction. See PrebidServerConfig. When null, no programmatic auction runs and only gamTag / zone fallbacks are used.
prebidSrcString?nullReserved. Used only by SellwildWidget (marketplace listings) when it needs to load a custom Prebid.js bundle inside its WebView surface. Does not affect banner ads.

Display Customization

These fields control the appearance of the listing widget and listing cards.

FieldTypeDefaultDescription
titleString?nullWidget header title text.
titleColorString"#000000"Widget title color (CSS hex).
titleSizeInt16Widget title font size in pixels.
linkTextString?"View all"Text for the "view all" link in the widget header.
linkColorString"#0066cc"Link text color (CSS hex).
buyNowTextString?"Buy now"Call-to-action button text.
fontSizeInt13Listing title font size in pixels.
fontFamilyString""CSS font family for listing text. Empty string uses the system default.
fontColorString"#ffffff"Listing title font color (CSS hex).
priceColorString"#333333"Price badge background color (CSS hex).
priceFontColorString"#ffffff"Price badge text color (CSS hex).
marginBottomInt10Bottom margin in pixels.
colorsList<String>["#333333"]Theme accent colors (CSS hex values).
overlayTitleBoolfalseOverlay listing title on top of the listing image.
cardWidthString""Listing card width (CSS value). Empty string uses the default.
cardHeightString""Listing card height (CSS value). Empty string uses the default.

Watermark

FieldTypeDefaultDescription
watermarkBoolfalseShow a watermark on the widget.
watermarkTitleString"Powered by Sellwild"Watermark text content.

Ad Zone IDs

FieldTypeDefaultDescription
bannerZidString?nullZone ID for the top banner placement.
bottomBannerZidString?nullZone ID for the bottom banner placement.
mobileBannerZidString?nullMobile-specific banner zone ID (overrides bannerZid on mobile).
mobileZidsList<String>[]Additional mobile zone IDs for multi-slot layouts.

Ad Display Control

FieldTypeDefaultDescription
gamTagString?nullGoogle Ad Manager ad unit path (e.g., "/12345678/weatherbug_mrec"). Enables GAM as the primary ad server with Prebid as header bidding.
gptProxyUrlString?nullProxy URL for the GPT (Google Publisher Tag) script. Use when direct GPT loading is blocked.
disableGptBoolfalseDisable Google Publisher Tag entirely.
adDisableDisplayBoolfalseDisable all display ad rendering. Listings still load.
hideBannerTopBoolfalseHide the top banner ad placement in the widget.
hideBannerBottomBoolfalseHide the bottom banner ad placement in the widget.
adTypeString?nullAd system selection. Defaults to "PrebidOnly" when null.
floorMultiplierDouble1.0Multiplier applied to bid floor prices. Values above 1.0 raise floors.

Ad Refresh

See Ad Refresh Configuration for detailed behavior.

FieldTypeDefaultDescription
adRefreshMaxInt0Maximum ad refresh cycles (all platforms). 0 = disabled.
adRefreshMaxMobileInt0Maximum ad refresh cycles on mobile. Overrides adRefreshMax when nonzero.
adRefreshIntervalDuration/Number30 secondsTime between refresh cycles. iOS uses TimeInterval (seconds), Android uses Long (milliseconds), RN/Flutter use seconds.
maxFailedAuctionsInt3Stop refreshing after N consecutive no-fill auctions.

See Privacy & Consent for detailed usage.

FieldTypeDefaultDescription
gppEnabledBoolfalseEnable IAB Global Privacy Platform support.
tcfVersionInt0TCF version. 0 = disabled, 2 = TCF v2.x.
gdprAppliesBool?nullWhether GDPR applies. null = determined by Prebid Server. RN/Flutter only.
tcStringString?nullTCF v2 consent string. RN/Flutter only.
iabCatsList<String>[]IAB content category codes for brand safety (e.g., ["IAB15", "IAB15-10"]).

Third-Party Integrations

FieldTypeDefaultDescription
boltiveBoolfalseEnable Boltive ad quality monitoring.
boltiveClientIdString""Your Boltive client identifier.
lotameBoolfalseEnable Lotame data enrichment.

Debug

FieldTypeDefaultDescription
debugBoolfalseEnable verbose debug logging. See Debug Mode.

PrebidServerConfig

Controls server-side header bidding through Prebid Server. Set this on SellwildConfig.prebidServer to route all bid requests through the managed Prebid Server instance.

FieldTypeRequiredDefaultDescription
accountIdStringYes--Your Prebid Server account ID. Typically matches your partner code.
endpointStringYes--Full URL to the OpenRTB 2.6 auction endpoint. Use "https://prebid.sellwild.com/openrtb2/auction".
biddersList<String>Yes--SSP bidder adapter codes to include in the server-side auction. Must match adapters configured on the Prebid Server instance.
timeoutIntNo1500Maximum time in milliseconds the server waits for SSP responses before closing the auction.
syncEndpointString?NonullCookie sync endpoint URL. Derived from endpoint if omitted (replaces /openrtb2/auction with /cookie_sync).

Example

swift
// iOS
config.prebidServer = PrebidServerConfig(
    accountId: "weatherbug-prod",
    endpoint: "https://prebid.sellwild.com/openrtb2/auction",
    bidders: ["appnexus", "rubicon", "ix", "openx"],
    timeout: 1500
)
kotlin
// Android
prebidServer = PrebidServerConfig(
    accountId = "sellwild",
    endpoint = "https://prebid.sellwild.com/openrtb2/auction",
    bidders = listOf("appnexus", "pubmatic", "ix", "rubicon", "openx"),
    timeout = 1500
)
ts
// React Native / Flutter
prebidServer: {
  accountId: 'weatherbug',
  endpoint: 'https://prebid.sellwild.com/openrtb2/auction',
  bidders: ['appnexus', 'rubicon', 'ix', 'openx'],
  timeout: 1500,
}

How It's Used

When prebidServer is set, the native Prebid Mobile SDK is bootstrapped on first banner load with the configured accountId, endpoint, and timeout. The SDK constructs an OpenRTB 2.6 bid request containing:

  • app.bundle and app.storeurl from your config
  • app.publisher.id set to your partnerCode
  • Real device signals (IDFV / AAID, ATT status, OS version) supplied by Prebid Mobile
  • TCF v2 consent string when GDPR applies
  • The bidders list as enabled adapters on the server side

The bid response is matched to the GAM ad request via Prebid Mobile's targeting keywords (hb_pb, hb_cache_id, hb_size, …) so the line item resolves the cached creative.

Available Bidders

The following SSPs are configured on prebid.sellwild.com. Use the bidder code in your bidders list.

SSPBidder Code
AppNexus / Xandrappnexus
PubMaticpubmatic
Index Exchangeix
Rubicon / Magniterubicon
OpenXopenx
TripleLifttriplelift
Sharethroughsharethrough
InMobiinmobi
Smaatosmaato
Yieldmoyieldmo
33Across33across
Sovrnsovrn
GumGumgumgum
Unrulyunruly
Criteocriteo
Media.netmedianet
Amazon TAMamazontam

Contact sdk@sellwild.com to enable additional bidders for your account.


Ad Size Reference

Predefined ad dimensions for banner ad units. Use these values when constructing SellwildAdView or SellwildBanner.

Enum / StringWidthHeightIAB NameRecommended Placement
.banner320x50 / "320x50"32050Mobile BannerTop or bottom of screen
.mrec300x250 / "300x250"300250Medium Rectangle (MREC)In-feed, between content sections
.leaderboard728x90 / "728x90"72890LeaderboardTablet top or bottom
.halfPage300x600 / "300x600"300600Half PageSidebar (tablet landscape)
.wideSkyscraper160x600 / "160x600"160600Wide SkyscraperSidebar (tablet landscape)

Platform-Specific Names

PlatformType NameValues
iOS (Swift)AdSize enum.banner320x50, .mrec300x250, .leaderboard728x90, .halfPage300x600, .wideSkyscraper160x600
Android (Kotlin)AdSize enumBANNER_320x50, MREC_300x250, LEADERBOARD_728x90, HALF_PAGE_300x600, WIDE_SKYSCRAPER_160x600
React Native (TS)AdSize string literal"320x50", "300x250", "728x90", "160x600", "300x600", "1x1"
Flutter (Dart)SellwildAdSize enumbanner320x50, mrec300x250, leaderboard728x90, halfPage300x600, wideSkyscraper160x600

Choosing Ad Sizes

DeviceRecommended Sizes
Phone (portrait)320x50 (banner), 300x250 (MREC)
Phone (landscape)320x50 (banner), 300x250 (MREC)
Tablet (portrait)728x90 (leaderboard), 300x250 (MREC)
Tablet (landscape)728x90 (leaderboard), 300x600 (half page)

Ad Refresh Configuration

The SDK supports automatic ad refresh -- after a successful impression, the ad slot re-auctions after a configurable interval.

Fields

FieldTypeDefaultDescription
adRefreshMaxMobileInt0 (disabled)Maximum number of refresh cycles per ad view instance on mobile. Set to 0 to disable ad refresh.
adRefreshMaxInt0Maximum refresh cycles for desktop/tablet widget layouts. adRefreshMaxMobile takes precedence on mobile when nonzero.
adRefreshIntervalDuration30 secondsTime between refresh cycles. IAB guidelines recommend a minimum of 30 seconds.
maxFailedAuctionsInt3Number of consecutive no-fill auctions before the SDK stops refreshing that ad slot.

Platform-Specific Types

PlatformadRefreshInterval TypeExample
iOSTimeInterval (seconds, Double)config.adRefreshInterval = 30.0
AndroidLong (milliseconds)adRefreshIntervalMs = 30_000L
React Nativenumber (seconds)adRefreshInterval: 30
FlutterDurationadRefreshInterval: Duration(seconds: 30)

Behavior

  1. The refresh timer starts after the first onAdImpression callback fires.
  2. Each cycle triggers a new Prebid Server auction for the same ad slot.
  3. Calling pause() cancels the pending refresh timer. Calling resume() does not restart it -- the next impression triggers a new cycle.
  4. Calling load() resets the internal refresh counter to zero.
  5. When maxFailedAuctions consecutive auctions return no fill, refresh stops for that ad slot.
  6. Each SellwildAdView / SellwildBanner instance has its own independent refresh counter.

Example

swift
// iOS -- refresh every 45 seconds, up to 8 times
config.adRefreshMaxMobile = 8
config.adRefreshInterval = 45.0
config.maxFailedAuctions = 5
kotlin
// Android -- refresh every 30 seconds, up to 10 times
config = SellwildConfig(
    partnerCode = "weatherbug",
    adRefreshMaxMobile = 10,
    adRefreshIntervalMs = 30_000L,
    maxFailedAuctions = 3,
    // ...
)

Remote Config

The first-class integration path. Each platform exposes a SellwildSDK.configure(partnerCode, slug) (TypeScript: configure(partnerCode, slug)) helper that fetches partner config from the Sellwild CDN at app launch and returns a fully-populated SellwildConfig. This lets your Sellwild contact change ad zones, refresh intervals, geo blocks, and waterfall partners without an app update.

URL pattern

https://widget.sellwild.com/app/{partnerCode}/{slug}.json

Your Sellwild contact provisions the slug in the CMS. The JSON uses CONSTANT_CASE keys (e.g. AD_REFRESH_MAX, HIDE_BANNER_TOP) which the SDK maps to the camelCase fields documented above.

Merge order

  1. SDK defaults
  2. Remote CDN config (overrides defaults)
  3. App-controlled overrides (the optional callback to configure())

Failure handling

If the fetch fails (network error, timeout, 404), the SDK falls back silently to a SellwildConfig(partnerCode:) with deterministic defaults, so ads still render even with the CDN offline. Remote config is additive, never blocking.

Usage

ts
import { configure } from '@sellwild/react-native-sdk';

const config = await configure('weatherbug', 'weatherbug-weatherbug');
swift
let config = await SellwildSDK.configure(
    partnerCode: "weatherbug",
    slug: "weatherbug-weatherbug"
) { c in
    c.appBundleId = Bundle.main.bundleIdentifier
}
kotlin
val config = SellwildSDK.configure(
    partnerCode = "weatherbug",
    slug = "weatherbug-weatherbug",
) { c -> c.copy(appBundleId = packageName) }
dart
final config = await SellwildSDK.configure(
  partnerCode: 'weatherbug',
  slug: 'weatherbug-weatherbug',
);

See the API Reference for full options.

CDN field reference

The CDN may carry any subset of these keys. Unknown keys are ignored, so the CMS can add fields without breaking the app.

CDN keyMaps to (camelCase)Type
CODEpartnerCodestring
SLUGslugstring
NAMEnamestring
TITLE, LINK_TEXT, BUY_NOW_TEXTtitle, linkText, buyNowTextstring
TITLE_COLOR, LINK_COLOR, FONT_COLOR, PRICE_COLOR, PRICE_FONT_COLORmatching camelCasestring
MARGIN_BOTTOMmarginBottomint
COLORScolorsstring[]
OVERLAY_TITLE, WATERMARKmatching camelCasebool
WATERMARK_TITLEwatermarkTitlestring
BANNER_ZID, BOTTOM_BANNER_ZID, MOBILE_BANNER_ZIDmatching camelCasestring
MOBILE_ZIDmobileZidsstring[]
HIDE_BANNER_TOP, HIDE_BANNER_BOTTOM, DISABLE_GPT, AD_DISABLE_DISPLAYmatching camelCasebool
GAMgamTagstring
AD_REFRESH_MAX, AD_REFRESH_MAX_MOBILE, MAX_FAILED_AUCTIONSmatching camelCaseint
AD_REFRESH_INTERVALadRefreshInterval (seconds)int
GPP_ENABLEDgppEnabledbool
TCF_VERSIONtcfVersionint
IAB_CATSiabCatsstring[]
ENABLE_INTERSTITIAL, ENABLE_FULLSCREEN_VIDEOmatching camelCasebool
INTERSTITIALS_PER_SESSION, VIDEO_TAKEOVERS_PER_SESSIONmatching camelCaseint
BOLTIVE, LOTAMEmatching camelCasebool
BOLTIVE_CLIENT_IDboltiveClientIdstring

Debug Mode

Enable verbose logging to diagnose integration issues.

swift
config.debug = true   // iOS
kotlin
SellwildConfig(debug = true, ...)   // Android
ts
buildConfig({ debug: true, ... })   // React Native
dart
SellwildConfig(debug: true, ...)    // Flutter

What Debug Mode Enables

FeatureDescription
Prebid Mobile debug outputEnables verbose logging in Prebid Mobile (auction events, bid values, errors).
GMA debug outputEnables verbose logging in the Google Mobile Ads SDK.
SDK lifecycle loggingPrints ad load, impression, click, error, and refresh events to the platform logger (print on iOS, Log.d on Android, console.log on RN, debugPrint on Flutter).
Response telemetryLogs per-bidder response times from ext.responsetimemillis after each auction.

Inspecting Native Logs

iOS: Use the Xcode console or Console.app filtered to your app's process. Prebid Mobile and GMA logs appear with Prebid / Google prefixes.

Android: Use adb logcat filtered by tag. Prebid Mobile uses tags starting with Prebid; GMA uses Ads.

React Native: Native logs surface in Xcode (iOS) or adb logcat (Android). The <SellwildBanner> onError event also reports load failures back to JS.

Flutter: Same as native -- inspect Xcode or adb logcat for the platform you're running on.

Production Warning

Do not ship with debug: true. Debug mode increases CPU usage, network logging, and exposes auction CPM values in the device log. Always set debug: false (or omit the field) for production builds.

Sellwild SDK Documentation