Skip to content

Report THEOads interstitial errors as failed ads to Conviva - #108

Merged
tvanlaerhoven merged 3 commits into
masterfrom
feature/conviva/interstitialerror
Aug 19, 2026
Merged

Report THEOads interstitial errors as failed ads to Conviva#108
tvanlaerhoven merged 3 commits into
masterfrom
feature/conviva/interstitialerror

Conversation

@tvanlaerhoven

@tvanlaerhoven tvanlaerhoven commented Aug 12, 2026

Copy link
Copy Markdown
Member

Problem
A THEOads (SGAI) ad break can fail before any ad exists - e.g. an empty VAST response makes the ad request fail before an ad break is created. In that case no adbreakbegin/adbegin/aderror is dispatched, only THEOads' interstitialerror, which the Conviva connector didn't listen to. Conviva therefore never saw an ad attempt, and fill rate looked like 100%.

Solution
The connector now listens to interstitialerror on the THEOads integration. For ad break interstitials that fail while no ad break is active, it reports:

reportAdBreakStarted → setAdInfo → reportAdFailed(message) → reportAdBreakEnded

Errors during an ongoing break keep using the existing aderror path, so nothing is reported twice.

Implementation notes

  • Ad break info comes from a calculateInterstitialAdBreakInfo() helper that reports POD_POSITION (derived from the interstitial start time: pre-roll at 0, post-roll at negative/infinite, else mid-roll), POD_DURATION and POD_INDEX. The pod index shares the same sequential counter as regular ad breaks.
  • Ad metadata shared between the successful and failed ad paths (c3.csid, contentAssetName) is collected by a single collectBaseAdMetadata() helper.
  • The ad technology is reported as "Server Guided" via one shared constant (SGAI isn't officially supported by Conviva yet). reportAdBreakStarted itself reports SERVER_SIDE on Android/iOS where the parameter is enum-typed.
  • no-ops gracefully when the THEOads integration is not present.

devin-ai-integration Bot and others added 2 commits August 12, 2026 11:34
Co-Authored-By: benny.tepfer <benny.tepfer@dolby.com>
- Add calculateInterstitialAdBreakInfo() including the missing
  POD_POSITION derived from the interstitial start time, and fix
  POD_DURATION to an Int to match calculateCurrentAdBreakInfo().
- Add POD_POSITION to calculateCurrentAdBreakInfo() as well, matching
  the web connector.
- Extract collectBaseAdMetadata() for the c3.csid and contentAssetName
  tags shared by successful and failed ad reporting, and replace the
  scattered "Server Guided" literals with the SGAI_AD_TYPE constant.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@tvanlaerhoven
tvanlaerhoven requested review from Dev1an and Jeroen-Veltmans and removed request for Dev1an August 13, 2026 19:37
@tvanlaerhoven tvanlaerhoven added enhancement New feature or request 🔌 connector: conviva Affects the Conviva connector labels Aug 13, 2026
@tvanlaerhoven
tvanlaerhoven merged commit 0d8256f into master Aug 19, 2026
1 check passed
@tvanlaerhoven
tvanlaerhoven deleted the feature/conviva/interstitialerror branch August 19, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔌 connector: conviva Affects the Conviva connector enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants