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

Personalizer Components & Dependencies

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.