Skip to content

Campaign Associations

File: app/core/models/campaign_associations.py

Represents chronological relationships between campaigns -- particularly holdout experiments promoted to full-send campaigns.

Key fields

Field Description
id Primary key
campaign_id Parent/earlier campaign (e.g., original holdout)
associated_campaign_id Child/later campaign (e.g., follow-up full-send)
association_type Relationship type enum
metadata Flexible JSON for additional context

Association types

  • HoldoutToFull: Links original holdout experiment to its follow-up full-send campaign.

Key operations

  • get_holdout_parent_campaign(): Returns original experiment if given campaign is promoted full-send (cached 1h)
  • get_full_send_campaign(): Returns follow-up if given campaign is holdout
  • get_previous_experiment(): Retrieves parent's experiment results for attribution analysis

Creation trigger

Automatically created in methods/experiment_promotion.py when promoting a holdout to full-send. Clones campaign/templates and marks original as Completed.

Key files

  • Model: core/models/campaign_associations.py
  • Methods: methods/campaign_associations.py
  • Promotion: methods/experiment_promotion.py
  • Routes: routes/campaign_association_routes.py