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.

Try it:
☔Skjólið þitt er hér1080 × 1920 · live
300x250728x901080x1920300x600970x2501080x1080160x6001920x1080320x1001200x628
300x250728x901080x1920300x600970x2501080x1080160x6001920x1080320x1001200x628

Three steps, zero setup

🎨
STEP 1

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.

🌦️
STEP 2

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.

🔗
STEP 3

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/…/1080x1920
📰

Media 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 min

Built 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.

Rigning? Sól? Signal veit það.

Dynamic ad serving by Markend.

Open Signal →
signal · by Markend · markend.isweather by met.no