Personalizer
The Personalizer is an external service (personalization-service).
The in-repo code handles routing decisions: it determines whether a campaign’s content needs personalization (including RDS-based personalization) and publishes messages to the appropriate topics. The external personalization service performs the actual content rendering.
Routing
Messages arrive from the Aggregator (TX) or Chunker (batch) on these subscriptions:
-
sending-<batch|tx>-personalizer-<dg>-sub— non-RDS campaigns -
sending-<batch|tx>-personalizerrds-<dg>-sub— RDS campaigns
RDS and non-RDS campaigns are separated to avoid performance impact from slow RDS personalizations on regular campaigns.
If the personalizer detects that a campaign’s content contains no personalization at all, it skips the personalization service and assembles the message directly for the device mapper.
Output
After personalization, messages are published to:
-
sending-<batch|tx>-devicemapper-<dg>— for the Device Mapper
Contacts where personalization fails are reported as "not sent" to the data platform.
Dependencies
-
Pub/Sub:
-
Receives messages from personalizer subscriptions
-
Forwards personalized messages to the device mapper topic
-
Reports "not sent" to Data Platform
-
Transient errors use Pub/Sub Delay Service
-
Fatal errors go to
sending-mg-errors
-
-
Personalization Service: External service for content rendering (may use RDS)
-
me-push: Campaign information for assembling messages
Error Handling
-
Transient errors: Pub/Sub delay service with exponential backoff. When retries are exhausted, the message is dropped and "not sent" is reported for the contact.
-
Fatal errors: Published to
sending-mg-errors.
See Error Handling for the full retry policy.