0065: [Replace app-groups with offer-placements]
STATUS
[Deferred]
CONTEXT
Currently, we offer some publishers the ability to use app-groups allowing them to create a new application(s) via AdGem dashboard to have a different set of offer placement (display our offers in a different part of their app), offer targeting (display a set of offers distinct in type or target player), language (I.E. Shopback multilang app), or integration type. This approach creates several significant problems:
- Tracking Issues: An
AdGem UIDdoes not have a one-to-one relationship with the player-app combination, resulting in multiple AdTracking Players with differentAdGem UIDs. One for each application in the app-group. - AdGem Database Malpractice: Since the app-groups are not represented on the Database schema, we're breaking the 2NF. See Reference.
- Complex Reward Management: Working with player rewards and transactions with app-groups is brittle because the system must depend on external factors like Player ID (externalPlayerId) instead of a single unified identifier managed by AdGem.
- Inefficient Requests: Multiple AdTracking Players per application lead to redundant API calls and complicated tracking logic.
- Manual Feature Management: As of now, the publisher doesn't have either access or awareness of the app-groups functionality, which is manually activated by an AdGem Admin.
The system needs a more streamlined approach that maintains a one-to-one relationship between a player and their identity within an application, while still allowing flexibility in displaying offers with different currencies, multipliers, languages, and campaign types.
Current Architecture (App-Groups)
Problems Illustrated: - One player creates multiple AdGem UIDs (4 different identities) - Each configuration change requires a new application - Database shows 4 separate player records for the same person - No schema representation of the app-groups relationship - Complex reward tracking across multiple UIDs
Considered Options
Option 1: Continue with Current App-Groups Model
- Maintain the existing structure where each configuration variation requires a new application.
- Implement workarounds to handle the multiple AdGem UID per player issue.
- Pros: No migration effort required, familiar to current admins and publishers.
- Cons: Continues to create tracking problems, database complications, legacy support for new services, and inefficient usage.
Option 2: Introduce Offer Placements as Children of Applications - Create a new "placements" concept that functions as a child of applications - Each application contains multiple placements that handle currency, multiplier, integration type, offer limit, targeting, and logo configurations. - Players maintain a single ID per application and can navigate between different placements seamlessly. - Move offerwall fields to the application level, with placement-specific configurations handled by placements. - Deprecate the offerwall-app 1:1 concept and adopt the new 1:n app-placements. - Pros: Simplifies tracking, reduces database complexity, enables one-to-one player-to-app relationship, and encourages publishers to display more AdGem offers in their apps with less friction. - Cons: Requires significant architectural changes and migration effort.
Option 3: Enhance App-Groups with Virtual Grouping - Create a virtual grouping layer that links multiple applications together. - Maintain separate applications but add metadata to associate them as variants of the same base app. - Pros: Less disruptive to the current structure. - Cons: Does not fundamentally solve the tracking and ID proliferation issues, adds complexity without addressing root causes.
DECISION
Option 2: Implement Offer Placements as Children of Applications
We will replace the multiple application creation pattern with a placement-based architecture where:
- Application Structure: Applications will serve as the parent entity containing multiple placements at the publisher's convenience.
- Placement Functionality: Placements will replace the offerwall functionality by managing:
- Currency configuration.
- Multiplier settings.
- Integration type.
- Targeted offers.
- White labeling.
- Language preferences.
- Field Migration: Offerwall fields will be moved to the application level where appropriate, with placement-specific configurations handled by individual placements.
- Targeting Changes: Campaign targeting should be maintained at the application level, but it also allows pubs to control the placement-level, including:
- Offer limits managed per placement instead of per application.
- Campaign filtering based on placement configurations.
- Unified Player Identity: Each player will have a single
AdGem UIDper application, enabling them to navigate between placements to view offers, earn coins, and access different languages without creating multiple identities. - Match 1:1 Representation with Publisher's apps: The multi-app setup should be maintained, this way publishers with more than one app can have one AdGem App for each application they have.
Proposed Architecture (Placements)
Key Improvements: - One player → One AdGem UID per application - Single player record in AdTracking. - Multiple placements as children of one application. - Player seamlessly navigates between placements. - Simplified reward and transaction management. - Proper database schema representation (2NF compliant). - Placement-level targeting without identity fragmentation.
Implementation Flow
Flow Benefits: - Single UID creation and reuse across all placements. - Placement context passed in each API call. - No external Player ID dependency for tracking. - Simplified reward calculation with placement-specific multipliers. - Consistent player identity across all interactions.
CONSEQUENCES
Positive Outcomes
- Improved Tracking Accuracy: With a one-to-one relationship between players and applications, tracking becomes more reliable and accurate.
- Simplified Player Identity Management: A single
AdGem UIDper application eliminates confusion and reduces database complexity. - Better Reward Management: Easier to track and manage player rewards and transactions without relying on external factors.
- Reduced API Complexity: Fewer redundant API calls and simpler request/response handling.
- Enhanced Flexibility: Publishers can create multiple placements for different use cases without fragmenting player identity.
- Scalability: The new structure scales better as it doesn't create database records exponentially with configuration variations.
Negative Outcomes
- Migration Effort: Existing applications and app-groups will need to be migrated to the new placement structure.
- Breaking Changes: Current API integrations may need updates to work with the new placement-based model.
- Learning Curve: Publishers and internal teams will need to learn the new placement concept and adjust their workflows. This also applies to the campaign team and the way they target campaigns to apps.
- Backward Compatibility: May need to maintain legacy support during transition period, increasing temporary complexity.
- Campaign Targeting Adjustments: Existing campaigns targeted at the application level will need reconfiguration for placement-level targeting.
Risks
-
Data Migration Complexity: Risk of data loss or corruption during migration from app-groups to placements. Mitigation: Implement comprehensive migration scripts with rollback capabilities and extensive testing.
-
Publisher Adoption: Publishers may resist the change or struggle with the new model. Mitigation: Provide comprehensive documentation, migration guides, and support during transition.
-
Performance Impact: New placement lookup logic could impact API response times. Mitigation: Optimize AdGem PostgreSQL database queries and implement appropriate caching strategies.
-
Integration Breakage: Third-party integrations relying on the current app-group structure may break. Mitigation: Provide deprecation notices, maintain a backward compatibility layer, and offer migration support.
-
Incomplete Feature Parity: Placements may initially lack some functionality available in app-groups. Mitigation: Conduct thorough feature mapping and implement all critical features before migration.
-
Tracking Gaps During Transition: Potential for tracking inconsistencies during the migration period. Mitigation: Implement dual-tracking temporarily and validate data integrity before fully transitioning.
NOTES
- 2026/02/23
- Deferred for other priorities and its inherent complexity.
- This would be revisited when the new Publisher self-service portal starts to be developed.
References
Original Author
M Cornejo Q Soto