DOOH: Digital Out Of Home
What is Digital Out of Home?
Digital Out of Home (DOOH) is digital advertising shown on screens in physical, public spaces - think digital billboards along a motorway, screens in shopping malls and supermarkets, displays in lifts and lobbies, transit and airport panels, and menu boards in quick-service restaurants.
It's the digital evolution of traditional "out of home" advertising (printed billboards and posters). Instead of a static printed sheet, content is delivered electronically to a screen, so it can be scheduled, rotated, and updated remotely.
DOOH works quite differently from web or in-app advertising, and those differences shape how the integration below is built:
ArchitectureWhere OverviewAdhese fits in
Adhese supportsacts as the ad server for your DOOH throughnetwork. dedicatedIt endpoints,decides whichwhat allow:should play on each screen and provides the building blocks a player needs to run:
- Media asset
distributiondistribution: delivering the video and image files to be played. - Playlist
generationgeneration:fortellingscreens/playerseach screen or player what to play, and in what order. - Proof-of-play
trackingtracking: recording that each creative was shown. - Player-level targeting and
reportingreporting: targeting and measuring by individual screen or location.
How an Adhese DOOH integration works
A typical DOOH setup containsinvolves the following components:components working together:
ScreensScreens: the physical displays that show the ads.- Digital Signage CMS /
Player
Player: the software driving the screens; it fetches content from Adhese and plays it. - Adhese Ad
ServerServer: decides what plays and serves assets, playlists, and tracking URLs. - Server-side data
mappingmapping: links each player to metadata (such as its store or location) for targeting and reporting. - Reporting and Proof-of-Play
Trackingtracking: captures what actually played, for measurement and billing.
In short: the player asks Adhese for a playlist, Adhese responds with the ads to show, the player plays them from its local cache, and it fires tracking URLs back to confirm each play.
Implementation
Before prerequisites
you start
BeforeMake starting, ensure thatsure the following are available:in place before beginning the integration.
Adhese Requirements
requirements
ActiveAn active Adheseaccountaccount.- The DOOH feature enabled by Adhese
supportsupport. - Configured
Inventoryinventory&andtemplatestemplates. ConfiguredA configured player IDtarget
target.
Player / CMS Requirements
requirements
Your player or CMS must be able to:
Ability to performPerform HTTPGETrequestsrequests.JSONParseparsing supportJSON.LocalCacheassetassetscaching supportlocally.Video/imagePlayplaybackbacksupportvideo and images.Ability to fireFire trackingURLsURLs.
Adhese
The DOOH endpoints
AdheseThere hasare threetwo endpointsthings ina placeplayer forfetches DOOHfrom integrations:Adhese:
- Assets: the creative files to download and cache in advance (optional).
https://headsup-[customer].adhese.org/api/headsup/download-list/sl[positioncode]
Playlist https://ads-[customer].adhese.com/m/stack/sl[positioncode]?max_ads=[amount]
Playlist https://ads-[customer].adhese.com/e/stack/sl[positioncode]
Assets Download Endpoint (Heads-up)
Ensure that the Use in headsup setting is activated for all your DOOH formats. You can perform this action in the admin UI.
The heads-up endpoint is optional. andUse can be usedit to retrieve and cache all active creative assets for a DOOH position.position ahead of time. The response structure is fixed and cannot be customized.customised.
Before using it: make sure the Use in heads-up setting is activated for all your DOOH formats. You can do this in the admin UI. 
Request example
https://headsup-[customer].adhese.org/api/headsup/download-list/sl[positioncode]
Response example
{
"media": [
{
"ad": {
"id": "https://pool-demo.adhese.com/pool/lib/ad1.mp4",
"mime": "video/mp4",
"curl": "https://pool-demo.adhese.com/pool/lib/ad1.mp4",
"checksum": "abc123"
}
}
]
}
Detailed information on the headsupheads-up endpoint canis be foundavailable here.
Playlist Endpoint
Adhese provides two stack endpoints for retrieving a playlist.playlist:
The/m/stack/:endpoint, which retrievesreturns a list with a limit on the number of adsin the response(max_ads).The/e/stack/:endpoint, which doesn't havereturns a list with no predefined limit.
Request example
/m/stack/: https://ads-[customer].adhese.com/m/stack/sl[positioncode]/pi[player ID]?max_ads=[amount]
/e/stack/: https://ads-[customer].adhese.com/e/stack/sl[positioncode]/pi[player ID]
Response example
{
"ads":
[
{
"id":"https://pool-demo.adhese.com/pool/lib/562_2nd_1.mp4",
"dur":28.07,
"proofOfPlay":"https://ads-demo.adhese.com/track/3474/sl357/tlnone/piplayer_id/A2?1746011926824",
"error":"https://ads-demo.adhese.com/track/3474-PLAY_ERROR_[ERRORCODE]/sl357/tlnone/piplayer_id/A2/?1746011926824"
},
{
"id":"https://pool-demo.adhese.com/pool/lib/561_2nd_1.mp4",
"dur":11.45,
"proofOfPlay":"https://ads-demo.adhese.com/track/3444/sl357/tlnone/piplayer_id/A2?1746011926824",
"error":"https://ads-demo.adhese.com/track/3444-PLAY_ERROR_[ERRORCODE]/sl357/tlnone/piplayer_id/A2/?1746011926824"
},
{
"id":"https://pool-demo.adhese.com/pool/lib/560_2nd_1.mp4",
"dur":18.85,
"proofOfPlay":"https://ads-demo.adhese.com/track/3455/sl357/tlnone/piplayer_id/A2?1746011926824",
"error":"https://ads-demo.adhese.com/track/3455-PLAY_ERROR_[ERRORCODE]/sl357/tlnone/piplayer_id/A2/?1746011926824"
}
]
}
The response structure consists ofis an array of ads, each containing several objects.fields. The exact object structure is linkeddefined toby the Advar template that was used to create the campaigns. This template is maintained either in Adhese itself or in the configured GitHub repository configured for your account.
Detailed information on the stack endpoint canis be foundavailable here.
Targeting and reporting
Player ID target
You can provideadd extra targettargeting information throughto thea request by adding extraappending target sections to the URL:URL, in the form /[prefix][value]/.
The player IDOne exampleis ofone such atarget. targetIt is the player ID, which hasuses the prefix 'pi',pi (as shown in the aboveexamples example.above) This IDand can be used for:
Player/screenPlayer / screen-level targeting andreportingreporting.- Location-based targeting and
reporting
reporting.
Providing extra target / reporting data
Player /and store locationlocation, andplus any other custom metadatametadata, can be providedsupplied server-side by uploading a player =>→ metadata mapping in Adhese.
Each metadata property will beis linked to its own target prefix. ThisAdhese maps this data will be mapped automatically to incoming requests based on the player IDID, andmaking will becomeit available for both targeting and reporting purposes. reporting.
Adhese requires theThe player ID prefix - orand any other target prefixes - tomust be configured by Adhese support.
Operational recommendations
Operational Recommendations
Asset Caching
caching
Always cache assets locally to:
- Reduce bandwidth usage.
- Avoid playback
interruptionsinterruptions. - Improve offline
resilienceresilience.
Offline Mode
mode
PlayersIf connectivity is lost, players should continuekeep playbackplaying using:
LastThe last validplaylistplaylist.- Cached
creativescreatives.
Troubleshooting
| Issue | Possible |
|---|