Skip to main content
Notifications surface things that happen while you aren’t looking: a campaign turns unhealthy, a seller approves a change, a media buy is waiting for your approval. Each one lands in your in-app feed (the bell), and some also arrive by email. Notifications are per person. Reading or acknowledging one changes only your own feed.

Event types

Types follow a resource.action pattern, so agents can build on stable names. Each notification has a status of success, error, warning or info, a messagePreview, an actionUrl when there’s somewhere to go, read and acknowledged flags, and a data object with the ids involved.

Always on

Three types can’t be switched off: media_buy.approval_requested, assistant_room.mentioned and ask.resolved.

Choose what you get

There are two channels, in_app and email. By default the more urgent types also send an email: media_buy.approval_requested, media_buy.forward_failed, media_buy.stuck, creative.review_requested, creative.rejected, campaign.unhealthy, campaign.completed, storefront.liveness_degraded, storefront.composition_paused, inventory_source.unhealthy, assistant_room.mentioned and ask.resolved. The rest are in-app unless you opt in. Ask Semi (“stop emailing me about completed campaigns”), or call save_notification_config:
save_notification_config
Each cell names one notificationType or a whole category (every type in that family), an optional channel (leave it out for both) and enabled. The result lists the cells now in effect and any always-on types that stayed on.

REST

All paths are under https://api.semicola.com/api/v2. Release history lives separately in Release notes (open_page with page: "release_notes", GET /release-updates).

Not available yet

  • Slack delivery, including source-health alerts and product updates to a Slack channel. It needs a Slack app registration first.
  • Webhook delivery of notifications. Buyer webhooks carry only discovery.revision.