The ad that knows
it's raining ☔
Signal serves a different creative for every moment — weather, weekday, time, place — resolved fresh on every single render. One link per size is all an operator or media outlet ever needs.
Three steps, zero setup
Drop your creatives
Bulk-upload every size at once — Signal detects dimensions, buckets by size, and two designs of the same size become an automatic A/B test.
Wire the moment
Drag ready-made conditions — raining, sunny, weekday, time, outlet — straight onto creative sets. If this, show that; else, fall down the chain. Watch it light up live.
Share one link per size
Screens and media outlets just load a URL or iframe. They register themselves on first request — no accounts, no SDKs, no meetings.
Every channel, one brain
The same rules decide what runs on a bus stop, a news site, and your paid social — so the message always matches the moment.
DOOH screens
Bus stops, gyms, LED boards. Image-URL mode for old controllers, an offline-capable HTML shell for the rest — cached creatives keep playing through outages.
signal.markend.is/c/…/1080x1920Media outlets
Email one link sheet: every size with its iframe embed, stamped with the outlet's name. Clicks, uniques, viewability and in-view % — measured per outlet, automatically.
<iframe src="…?outlet=mbl">Meta & Google Ads
Pre-upload variants once; Signal activates the ad matching current conditions and pauses the rest — with hysteresis, so weather flapping never thrashes delivery.
sync every 15 minBuilt for the whole loop
Fresh on every render
Each play is resolved server-side at request time — like loading a live image.
Weather at the viewer
Web ads evaluate rules at the visitor's estimated location. Rain in Akureyri ≠ rain in Reykjavík.
Guaranteed delivery
Every campaign has a Default that always serves. Missing size, dead API, no match — the chain falls one step and keeps playing.
Proof of play
Every render logged with its full signal snapshot: plays, uniques, CTR, viewability, in-view %, per campaign × outlet × city.
Simulate before you ship
Set hypothetical weather and time, see which rule wins per size — on your unsaved draft.
Bandwidth that costs nothing
A caching layer between screens and Cloudinary means each asset is fetched from origin roughly once, ever.