Marketing · Activity campaigns (programme grouping)

A lighter, multi-language campaign object used to group activities and proposals into a named programme with its own date range and status.

AreaMarketing
Routesmarketing.activity-campaigns · marketing.activity-campaigns.index · marketing.activity-campaigns.new · marketing.activity-campaigns.edit
Centre modulesmarketing · marketingActivityCampaigns
Staff levelsroot · admin · manager · scmanager · storeManager · crmmanager · weboperator
Modelsactivity-campaign · activity-campaign-language · campaign · language · proposal
UI labeltitle.header.marketing.activity-campaigns / menu.navbar.crm.activity-campaigns.index
Coverage3 use cases · 1 happy · 4 failure

Known issues (1)

Missing translations

These keys are used on this screen but do not exist in translations.json, so users see the raw key:

  • activityCampaign

How it works

Gated by a dedicated centre flag: activity-campaign#canAccess requires both an allowed role and center.hasMarketingActivityCampaigns, and the same flag is checked in the campaign editor, proposal editor and push-notification editor (hasMarketingActivityCampaigns) to decide whether the activity-campaign picker appears. Statuses mirror the activity statuses (planned/active/finished/closed) and gate canEdit/canDelete/canClose the same way. Start/end date changes run through onChangeStartDate/onChangeEndDate handlers.

Use cases

Why someone opens this (3)

  • Grouping a season’s activities and proposals under one umbrella programme.
  • Reporting on a programme rather than on individual activities.
  • Linking a push notification or proposal to a programme for attribution.

Path map

flowchart LR
    F(["Activity campaigns programme grouping"]):::feat
    F --> H1["Programme created and linked"]:::ok
    F -.-> X1["Centre flag off"]:::bad
    F -.-> X2["Closed or finished programme"]:::bad
    F -.-> X3["Missing translations"]:::bad
    F -.-> X4["Raw translation key on screen"]:::bad
    classDef feat fill:#b0432c,stroke:#b0432c,color:#ffffff,font-weight:bold
    classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e
    classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13

Happy paths

Programme created and linked

  1. User creates an activity campaign with a name and date range, translated per language.
  2. It is saved as planned and later becomes active.
  3. Activities, proposals and push notifications reference it from their own editors.

Failure paths

QA checklist

Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.

  • ✅ Programme created and linked
  • ⛔ Centre flag off
  • ⛔ Closed or finished programme
  • ⛔ Missing translations
  • ⛔ Raw translation key on screen

Implementation


Generated from doc/feature-inventory.json · id marketing-activity-campaigns · commit 276788ca6