Skip to main content

Test PIDs and Configurations

Production warning

These are development and testing values only. Never ship them.

The widget ID selects the ad format

widgetId values are not interchangeable between placements. Pointing Banner or Interstitial at Feed's MB_1 serves a feed — which renders as a wrong-looking or apparently broken placement, and is one of the most common false bug reports.

Use the ID that belongs to the placement you are testing.

Media Placement​

MediaPlacementConfig.pid is an int. Each test PID exercises a different creative format:

PIDCreative format
84242Landscape video only
127546Vertical video only
127547Square video only
128779Carousel only
128780Multiple sizes and formats — the broadest test
MediaPlacement(
config: MediaPlacementConfig(
pid: 84242,
articleUrl: 'https://example.com/article/123',
),
)

Validation mode​

Forces a test creative, so the placement renders with no live campaign — useful for verifying layout and sizing:

MediaPlacementConfig(pid: 84242, enableValidationMode: true)

Feed Placement​

ParameterValue
widgetIdMB_1
installationKeyNANOWDGT01
articleUrlhttps://mobile-demo.outbrain.com/
widgetIndex0
FeedPlacement(
config: FeedPlacementConfig(
widgetId: 'MB_1',
installationKey: 'NANOWDGT01',
articleUrl: 'https://mobile-demo.outbrain.com/',
widgetIndex: 0,
),
)

Other test widget IDs — MB_2 and TEST_FEED, with NANOWDGT01 or TESTKEY01 — also serve feeds, and are useful when testing two Feed placements on one page.

A second Feed needs the first

A placement with a non-zero widgetIndex only loads if a widgetIndex: 0 placement loads on the same page. Testing widgetIndex: 1 alone shows an ad that never arrives and no error. See the Integration Guide.

ParameterValue
widgetIdMB_10
installationKeyNANOWDGT01
articleUrlhttps://mobile-demo.outbrain.com/
BannerPlacement(
config: BannerPlacementConfig(
widgetId: 'MB_10',
installationKey: 'NANOWDGT01',
articleUrl: 'https://mobile-demo.outbrain.com/',
),
)

testDisplay: true forces a test creative for Banner and Feed, the way enableValidationMode does for Media.

Interstitial Placement​

ParameterValue
widgetIdINT_MW_1
installationKeyNANOWDGT01
articleUrlhttps://mobile-demo.outbrain.com
final interstitial = await InterstitialPlacement.create(
config: InterstitialPlacementConfig(
widgetId: 'INT_MW_1',
installationKey: 'NANOWDGT01',
articleUrl: 'https://mobile-demo.outbrain.com',
),
);
await interstitial.load();
if (await interstitial.isReady) await interstitial.show();

Recommendations​

ParameterValue
widgetIdSDK_1, RECS_1 or TEST_RECS
articleUrlhttps://test-demo.outbrain.com
final recommendations = await Recommendations.fetch(
RecommendationsPlacementConfig.url(
widgetId: 'SDK_1',
articleUrl: 'https://test-demo.outbrain.com',
),
);
debugPrint('Got ${recommendations.length} recommendations');

Quick Reference​

PlacementTest IDInstallation key
Mediapid: 84242— (uses your app key)
FeedMB_1NANOWDGT01
BannerMB_10NANOWDGT01
InterstitialINT_MW_1NANOWDGT01
RecommendationsSDK_1— (uses your app key)
note

These are the same defaults the native iOS and Android demo apps use. They demonstrate the integration, but are not guaranteed to return a live creative in every environment — an empty result from a test ID is not necessarily an integration fault.

Testing Best Practices​

During development​

  1. Match the PID to the format you're laying out — test vertical creatives against 127546, not 84242, if that is what your slot must accommodate
  2. Use 128780 for a broad sweep of sizes through one slot
  3. Turn up logging: TeadsLog.level = LogLevel.debug — see Logging
  4. Enable validation mode while checking sizing, then remove it

Validation​

  1. Confirm placements are fully visible and clickable, with nothing overlaying them
  2. Confirm event callbacks fire
  3. Exercise Feed pagination by scrolling to the end
  4. Enter and exit Feed fullscreen video
  5. Rotate the device — on iOS, only if you have forwarded viewWillTransition

Pre-production checklist​

  • All test PIDs and widget IDs replaced with production values
  • enableValidationMode removed from every MediaPlacementConfig
  • testDisplay removed from every Feed and Banner config
  • TeadsLog.level back to its default, or your own level
  • articleUrl points at real content
  • app-ads.txt verified
  • Privacy compliance verified

Common Testing Issues​

No ads loading​

  1. Confirm TeadsSdk.configure() ran and did not throw
  2. Confirm the ID belongs to the placement you're testing
  3. Check connectivity — and on an Android emulator, see the DNS note in the Troubleshooting Guide
  4. Raise the log level and look for an error

A feed appears where a banner should be​

You are using a Feed widget ID for Banner or Interstitial. Use MB_10 or INT_MW_1.

An ad loads on one screen but not another​

If the failing screen has a Feed placement with a non-zero widgetIndex and no widgetIndex: 0 placement, that is the cause.