Skip to content

Storefront surfaces

A “surface” is anywhere on the storefront where a customer leaves data. CDA wires into all 18 of them. Pick Applies To on the field form to choose which surface renders your field.

Surfaceapplies_to valueStorage
Product detail pageproduct_pagequote_item_option.additional_options (Magento native — auto-renders in cart line items, order emails, PDF)
Cart pagecart_pagecda_custom_field_quote_valuecda_custom_field_order_value after place-order
Surfaceapplies_to valueStorage
Checkout — Shippingcheckout_step:shippingcda_custom_field_quote_value
Checkout — Paymentcheckout_step:paymentcda_custom_field_quote_value
Checkout — Review & Place Ordercheckout_step:reviewcda_custom_field_quote_value
Surfaceapplies_to valueStorage
Customer Registrationcustomer_account:registrationcda_custom_field_customer_value
Customer Account Profilecustomer_account:profilecda_custom_field_customer_value
Address Book (per-address)customer_account:addresscda_custom_field_address_value

Per-address means each address (billing default, shipping default, additional) has its OWN value. Customer’s billing address can have one VAT ID while their shipping address has another.

Surfaceapplies_to valueStorage
Contact Us formcontact_formcda_custom_field_contact_value (audit log) + appended to admin email body
Product Review formproduct_reviewcda_custom_field_review_value
Newsletter Signupnewslettercda_custom_field_subscriber_value
Wishlist (per-item)wishlist_itemcda_custom_field_wishlist_item_value

When a customer places an order, an observer fires (sales_model_service_quote_submit_success) that copies values from cda_custom_field_quote_value into cda_custom_field_order_value. This means:

  • Your historical order data is preserved even if you later delete a field definition.
  • Order-level reporting queries don’t need to join through the quote table.
  • Refunds and credit memos can still reference the value that was on the original order.

A single field row maps to exactly one applies_to. To have, say, “Gift message” on both the cart AND the product page, create two field definitions with the same code (or distinct codes — your choice). Magento doesn’t natively offer shared field instances; each surface owns its own values.

Visual surface management lives under CDA Custom Fields → Layout Builder. Drag fields between columns to change applies_to and sort_order without re-editing each field by hand. Magento native fields (first name, email, etc.) render in grey as locked context so you can see what already exists on each surface.