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 holdoutget_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