🔍 Overview
The Voluum integration provides a thin abstraction over the Voluum API and a Redis-backed mapping used for bulk updates.
It is used to:
- update landers and offers when switching Links
- update campaigns when switching tracking domains (see Tracking Domain Pipelines)
📦 Main components
1. VoluumAPIClient
Low-level API client for Voluum.
Supported resources:
- landers
- offers
- campaigns
2. BaseVoluumManager
Abstract manager that:
- loads a
{resource -> [ids...]}map from Voluum - stores it in Redis under a model-specific key
- updates all matching items by IDs
3. Managers
| Manager | Redis key | Purpose |
|---|---|---|
LandersVoluumManager | voluum_landers_map | Updates landers by url. |
OffersVoluumManager | voluum_offers_map | Updates offers by url. |
CampaignsVoluumManager | voluum_campaigns_map | Updates campaigns by tracking domain (preferredTrackingDomain). |
4. VoluumController
Orchestrates loading and updates.
🧩 Methods
| Method | Description |
|---|---|
load_data(landers=True, offers=True, campaigns=True) | Loads selected maps into Redis. |
update_link(old_link, new_link, landers=True, offers=True) | Updates landers/offers URLs for a link switch. |
update_tracking_domain(old_domain, new_domain) | Updates campaigns to use the new tracking domain. |
🔄 How switching uses Voluum
- When a link is blocked and a backup exists, MirrorRule calls
VoluumController.update_link(old_link, new_link). - When a tracking domain pipeline switches domains (with
with_update_voluum=True), it callsVoluumController.update_tracking_domain(old_domain, new_domain).