Skip to main content

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:

    There's no browser, cookie, or logged-in user. Ads are targeted to a screen (and its location), not to an individual person. Content is played, not clicked. Success is measured by proof-of-play - confirmation that a creative actually appeared on screen - instead of clicks or impressions in regular advertising. The network can be unreliable. A screen in a lift or a remote billboard may lose connectivity, so players are expected to cache content and keep running offline.

    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: fortelling screens/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 Adhese accountaccount.
    • The DOOH feature enabled by Adhese supportsupport.
    • Configured Inventoryinventory &and templatestemplates.
    • ConfiguredA configured player ID target
      target.

    Player / CMS Requirements

    requirements

    Your player or CMS must be able to:

    • Ability to performPerform HTTP GET requestsrequests.
    • JSONParse parsing supportJSON.
    • LocalCache assetassets caching supportlocally.
    • Video/imagePlay playbackback supportvideo and images.
    • Ability to fireFire tracking URLsURLs.

    Adhese

    The DOOH endpoints

    AdheseThere hasare threetwo endpointsthings ina placeplayer forfetches DOOHfrom integrations:Adhese:

    1. Assets: the creative files to download and cache in advance (optional).
    A playlist: the list of ads to play (required). The playlist comes in two variants: one with a capped number of ads, and one with no cap.
    Purpose Endpoint Assets Download Endpointdownload (akaHeads-up) Headsup request)
    https://headsup-[customer].adhese.org/api/headsup/download-list/sl[positioncode]

    Playlist Endpoint with a- limited number of ads
    https://ads-[customer].adhese.com/m/stack/sl[positioncode]?max_ads=[amount]

    Playlist Endpoint with- unlimited amountnumber of ads
    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.
    image.png

    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.   image.png

    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 ads in 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 and reportingreporting.
    • 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 valid playlistplaylist.
    • Cached creativescreatives.

    Troubleshooting

    Issue Possible Cause
    cause Empty media array No active campaignscampaigns, or a targeting-related issuesissue Endpoint redirects DOOH endpoints not enabled HeadsupHeads-up endpoint empty No active campaignscampaigns, or Use in heads-up format config disabled Playback errors Unsupported codec or corrupt file No reporting Proof-of-play URL not triggered