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:

Where Adhese fits in

Adhese acts as the ad server for your DOOH network. It decides what should play on each screen and provides the building blocks a player needs to run:

How an Adhese DOOH integration works

A typical DOOH setup involves the following components working together:

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.


Before you start

Make sure the following are in place before beginning the integration.

Adhese requirements

Player / CMS requirements

Your player or CMS must be able to:


The DOOH endpoints

There are two things a player fetches from Adhese:

  1. Assets: the creative files to download and cache in advance (optional).
  2. 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 (Heads-up) https://headsup-[customer].adhese.org/api/headsup/download-list/sl[positioncode]
Playlist - limited number of ads https://ads-[customer].adhese.com/m/stack/sl[positioncode]?max_ads=[amount]
Playlist - unlimited number of ads https://ads-[customer].adhese.com/e/stack/sl[positioncode]

Assets Download Endpoint (Heads-up)

The heads-up endpoint is optional. Use it to retrieve and cache all active creative assets for a DOOH position ahead of time. The response structure is fixed and cannot be customised.

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 heads-up endpoint is available here.

Playlist Endpoint

Adhese provides two stack endpoints for retrieving a playlist:

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"
        }
    ]
}

Detailed information on the stack endpoint is available here.


Targeting and reporting

Player ID target

You can add extra targeting information to a request by appending target sections to the URL, in the form /[prefix][value]/.

The player ID is one such target. It uses the prefix pi (as shown in the examples above) and can be used for:

Providing extra target / reporting data

Player and store location, plus any other custom metadata, can be supplied server-side by uploading a player → metadata mapping in Adhese.

Each metadata property is linked to its own target prefix. Adhese maps this data automatically to incoming requests based on the player ID, making it available for both targeting and reporting.

The player ID prefix - and any other target prefixes - must be configured by Adhese support.


Operational recommendations

Asset caching

Always cache assets locally to:

Offline mode

If connectivity is lost, players should keep playing using:


Troubleshooting

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


Revision #18
Created 2026-07-06 12:47:39 UTC by Kim Van Crombrugge
Updated 2026-07-15 07:47:13 UTC by Kim Van Crombrugge