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.
Product & Cart
Section titled “Product & Cart”| Surface | applies_to value | Storage |
|---|---|---|
| Product detail page | product_page | quote_item_option.additional_options (Magento native — auto-renders in cart line items, order emails, PDF) |
| Cart page | cart_page | cda_custom_field_quote_value → cda_custom_field_order_value after place-order |
Checkout (3 separate steps)
Section titled “Checkout (3 separate steps)”| Surface | applies_to value | Storage |
|---|---|---|
| Checkout — Shipping | checkout_step:shipping | cda_custom_field_quote_value |
| Checkout — Payment | checkout_step:payment | cda_custom_field_quote_value |
| Checkout — Review & Place Order | checkout_step:review | cda_custom_field_quote_value |
Customer account
Section titled “Customer account”| Surface | applies_to value | Storage |
|---|---|---|
| Customer Registration | customer_account:registration | cda_custom_field_customer_value |
| Customer Account Profile | customer_account:profile | cda_custom_field_customer_value |
| Address Book (per-address) | customer_account:address | cda_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.
Marketing & support surfaces
Section titled “Marketing & support surfaces”| Surface | applies_to value | Storage |
|---|---|---|
| Contact Us form | contact_form | cda_custom_field_contact_value (audit log) + appended to admin email body |
| Product Review form | product_review | cda_custom_field_review_value |
| Newsletter Signup | newsletter | cda_custom_field_subscriber_value |
| Wishlist (per-item) | wishlist_item | cda_custom_field_wishlist_item_value |
Quote → Order denormalisation
Section titled “Quote → Order denormalisation”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.
Adding a field to multiple surfaces
Section titled “Adding a field to multiple surfaces”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.
Layout Builder
Section titled “Layout Builder”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.