Dotdigital Certification study materials
Dotdigital Certification study resources

Dotdigital Certification: Personalization: variables, dynamic blocks and safe fallbacks

Dotdigital Certification · Work through your exam, one topic at a time.

All guide sections

Personalization: variables, dynamic blocks and safe fallbacks

The Personalization domain tests how you use contact data and behaviour to change what a recipient sees - in subject lines, body content, product blocks and on-site experiences - without breaking the message for contacts whose data is missing or stale.

Variables and fallbacks

  • Personalization variables map to contact data fields and are resolved at render time, close to send.
  • Always set a fallback: a contact with an empty first name should read "Hi there", not "Hi ,".
  • Variables can be used in subject lines, preheaders, body copy, links and plain-text versions; in URLs, check that the substituted value is encoded correctly.
  • Preview against a real test contact rather than the default profile so empty fields and unusually long values are visible.

Dynamic content and recommendations

  • Dynamic content blocks serve different variants based on segment membership, rules or data field values; each recipient receives only the matching variant.
  • Variants are evaluated at send time, so segment membership must be correct before the send begins.
  • Recommendation blocks draw on order and browsing data to show viewed, related or best-selling products, and need sensible fallback content when data is thin.

Worked example

A retailer personalizes a subject line as "Hi @FIRSTNAME@, your @LAST_CATEGORY@ picks" and adds a dynamic block: VIPs see free next-day delivery, everyone else sees a 10% code. A contact named Alex has no last category recorded, so the fallback text renders; because she sits in the VIP segment, she receives only the delivery variant.

Reasoning: the fallback keeps the subject readable when the field is empty rather than producing a broken string. The dynamic block is resolved at send time against current segment membership, so yesterday's tier change is reflected, and only one variant is delivered - variants are not cumulative.

Traps that cost marks

  • Personalizing from fields that have not synced since the last ecommerce or CRM integration run.
  • Testing with a preview that is not a real contact, so empty-field behaviour is never observed.
  • Renaming a data field without updating the variable, which silently renders the placeholder blank.
  • Building a dynamic block with no default or else-branch, so unmatched contacts see nothing.