Global WatchGW Docs
Features

Campaigns

Campaigns

Campaigns let you display promotional banners across multiple surfaces within a location (project). Banners rotate automatically based on priority and weight, and every impression and click is tracked for analytics.

Overview

  • 25 placement slots across 6 surfaces: asset profiles, adoption wizard, mobile public profiles, map app, email certificates, and email marketing.
  • State machine: Draft → Scheduled → Active → Paused → Expired → Archived.
  • Weighted rotation: among campaigns sharing a slot, higher weight means more frequent display. Priority tiers override weight (highest priority always wins).
  • Targeting: restrict by locale, device type, or asset category — or leave empty to show everywhere.
  • Analytics: inline impression/click counters + a detailed event log for drill-down.

Creating a Campaign

  1. Navigate to your location, then open the Campaigns tab (Marketing section).
  2. Click Create Campaign.
  3. Fill in the form sections:
    • Basics — name, description, destination URL.
    • Creative — upload a banner image (1200×628 px recommended, up to 2 MB).
    • Lifecycle — start date, end date (optional).
    • Rotation — weight (1–100) and priority.
    • Placements — choose which slots to occupy.
    • Targeting — optionally filter by language, device, or asset category.
  4. Save. The campaign starts in Draft until the start date arrives (then auto-transitions to Active).

Campaign States

StateDescription
DraftNot yet visible. Edit freely.
ScheduledStart date is in the future. Will auto-activate.
ActiveCurrently serving impressions.
PausedTemporarily halted (resume anytime).
ExpiredEnd date passed. No longer serving.
ArchivedSoft-deleted. Can be restored to Draft.

Placements

Placements define where a banner appears. A campaign can occupy multiple slots simultaneously.

Surfaces

SurfaceSlots
Asset profileHeader, Sidebar top, Sidebar bottom, Inline (mid), Footer
Adoption wizardIntro, Personal, Photo, Message, Map, Celebration
Mobile public profileCover, Map, Catalog info, Team & location, Inspections
Map appOverlay top-right, Overlay bottom-left, Sidebar top, Drawer bottom
Email certificateHeader, Inline, Footer
Email marketingAdoption confirmation, Welcome (post sign-up)

Rotation Logic

When multiple active campaigns target the same slot:

  1. The system resolves priority tiers — only the highest-priority campaigns compete.
  2. Among equal-priority campaigns, one is chosen via weighted random selection (weight / sum of weights).
  3. Targeting filters (locale, device, asset category) narrow the pool before selection.

Analytics

Each campaign tracks:

  • Impressions — how many times the banner was served.
  • Clicks — how many times users clicked through.
  • CTR — clicks ÷ impressions (computed client-side).

Raw events (with slot, device, locale, session hash) are stored for deeper analysis.

Permissions

PermissionDescription
campaigns.readView campaigns list and analytics
campaigns.createCreate new campaigns
campaigns.editEdit existing campaigns
campaigns.deleteSoft-delete campaigns
campaigns.view_analyticsAccess detailed event data

Feature Flag

Campaigns are gated by NEXT_PUBLIC_ENABLE_CAMPAIGNS. Set to true in your environment to enable the module.

On this page