Master CPQ Twin Fields in Salesforce through practical examples and unlock greater flexibility and efficiency in your data management process.
December 3, 2021
May 26, 2023
In this article, we’ll introduce you to a powerful but often overlooked feature of Salesforce CPQ: Twin Fields. Through practical examples, we'll explore how Twin Fields and Special Fields in Salesforce CPQ can provide greater flexibility and efficiency in data management, replicating values between different objects and unlocking advanced package features.
Here are our 5 key takeaways:
Twin Fields in Salesforce CPQ allow the transfer of custom field values between paired objects upon the creation of the second object, which surpasses the capabilities of Quote Sync.
These features are particularly useful in large data organizations, allow for data mapping across supported objects and reducing the need for customizations.
Twin Fields have certain limitations, including the inability to map Standard Fields and the necessity for exact API names and matching field types.
Special Fields, another feature of Salesforce CPQ, can be created to unlock advanced package features, allowing for more customization.
Twin Fields and Special Fields are valuable tools for data mapping, but require understanding and careful implementation to fully leverage their capabilities.
Table of Contents
Twin Fields vs. Quote Sync
Today we are going to talk about one of the most underrated features CPQ has that people should know more about: Twin Fields. We’re also going to mention their cousin: Special Fields.
When we first heard about this feature it reminded us of Quote Sync on Sales Cloud. In fact, Twin Fields and Special Fields bring much more features to what Quote Sync supports. Normally, Quote syncing copies values and products from the Opportunity record it was created from in terms of standard fields and line items.
Understanding the Limitations of Quote Sync
However since you can have more than one Quote linked to an Opportunity record, you can only sync one Quote at a time and you cannot sync custom line item fields as of yet. (By the way, you can vote for this feature here).
You also cannot sync products that have an inactive list price or Pricebook or Product. You would need to edit them as active or delete them if they’re selected as archived. One common error is having an inactive currency left in a multi-currency org and sync a record with that currency. If you have any approval processes currently pending on a quote, you cannot sync another one until the process interview finishes executing.
The Mechanism of Salesforce CPQ Twin Fields
In CPQ, certain pairs of CPQ objects pass custom field values from the first object to the second object when the second object is created. The values pass if the custom fields are editable, have matching field types, and have matching API names. We call these field pairs “twin fields.” You can one way map these values between supported objects, including custom fields. You would need to have a Read access on the source field and Edit access on the target field. Standard fields can’t be mapped between objects.
The Functionality of Twin Fields with Different Objects
Objects in Column 1 of this table pass field values to custom fields with matching types and API names from the objects in column 2.
Opportunities made from amending or renewing the contract
Opportunities made from amending or renewing the service contract
Salesforce CPQ maps from opportunity products to quote lines only for
standalone products and only when opportunity products have been created before a sales rep
creates the opportunity’s first primary quote.
If a product and product option both have the same field as a related
quote line, the quote line field inherits the value of the product option
The quote’s Payment Terms field is an editable picklist field, while the
order’s Payment Term field is restricted to a global picklist value set. If an admin adds a
custom picklist value to the quote’s Payment Term field, and then a sales rep order the
quote, Salesforce CPQ encounters an error.
Salesforce CPQ maps twin field values from the quote line to the
opportunity product when the quote line is created and any time that the quote line record
Contract Line Item
On amendment quotes, quote lines inherit twin field values from the first
subscription record, not any amended subscriptions made from that record.
Contract Line Item
Salesforce CPQ maps from the asset back to the quote line only during
amendment and renewal processes when quote lines are generated from assets.
Utilizing Twin Fields in Data Management
In terms of where you would need to use Twin Fields depends on if you regularly update the same values from an object via automation or with Apex in Salesforce. Instead of building these customizations you can use Twin Fields to map data across supported objects and yourself platform resources. This feature can especially be a lifesaver in a large volume data org. A great example of using a Twin field is when you have a field value copied from a Product copied across all Quote Line Items it’s generated from. This feature also does not require you to activate it on setup. You can simply use it by following the conditions listed above.
Understanding the Limitations of Twin Fields
The potential drawbacks for this mapping is that you need to work with standard objects since Custom Objects are not supported and check the objects you will be using are supported. You need to also have the exact API name, not the labels. One common mistake is to have different field types since this is also not supported.
Salesforce CPQ Twin Fields and Bundle Configuration
When a bundle is configured, objects in Column 1 transfer their values to the emerging new quote lines. When you access the configurator to reconfigure the bundle, Salesforce CPQ sets product options and configuration attribute values based on matching field values from their related quote lines.
Note: If you mark a bundle a Favorite and then add that favorite bundle to the quote line editor, it won't seize any twin field values.
Twin Fields Troubleshooting
Tip: If your twin fields are not mapping from one object to another, go to Setup>Quick Find>Installed Packages and click the Configure link next to the Salesforce CPQ package. Then, go to the Additional Settings tab and try taking the "Post Install Steps" by clicking Execute Scripts and retesting your twin fields. Source: (Also shoutout to John Garvens!)
Another key point is that twin fields are populated only upon record creation, so editing the source will not copy the value to it’s target.
The below diagram shows the mapping direction between Twin Fields on various objects that happen in Salesforce CPQ and Salesforce Billing at certain automation.
Special Fields in Salesforce CPQ
We also need to talk about Special Fields here which are fields you can create to unlock advanced features of the CPQ package. Here’s a list of CPQ Special Fields you can use to aid your CPQ implementation.
Configuring Special Fields for Quote Customization
For example you want to customize Quote fields in the Quote Line Editor for different users: Can the 'Line Editor' field set on Quote be customized for different users? This is for Quote, not Quote Lines. The desired outcome is one group of users see a certain set of Quote fields, whereas another group see different Quote fields when configuring a Quote.
The answer is yes: With the Salesforce CPQ Special Field, HeaderFieldSetName, you can create a field on the quote object to dynamically display a specific quote field in the quote line editor. You can choose to control the quote field set that is displayed by using a formula field or you can allow users to make their own selection by using a picklist field.
Here are the necessary steps:
Navigate to the Quote Object.
Create new Field Sets as necessary.
Create a New Picklist Field on the Quote Object.
Set a Field Label.
Set Field Name to HeaderFieldSetName.
Input picklist values, these must be the API names of the Field Sets you created on the Quote Object (Remember: Field Set API Names do not contain "__c").
Return to the Quote Object.
Edit the Line Editor Field Set and include the new field.
Include the HeaderFieldSetName field on all field sets in the picklist.
Click Quick Save. Notice the Field Set has changed.
"Quick Save" must be clicked in order for the user to see the change of the quote line Quote fields. In addition, setting the picklist value back to "--None--" and clicking "Quick Save" will return the UI to the "Line Editor" Field Set.
If the HeaderFieldSetName field is not selected in the field sets or displayed in the quote line editor, the value can be edited from the quote record.
Invalid field values used in the HeaderFieldSetName will result in zero fields displayed in the quote line editor.
Allows you to populate with a Salesforce ID from an account that contains a Contracted Price you would like to use (generally using a Workflow Rule). For example: if you want to set up logic that says "no matter if this Quote is direct or channel, use the direct Contracted Price", this is how you accomplish that.
Create a text formula that returns a currency symbol based on the Currency ISO code to display the desired symbol instead of the ISO code in the document output. For example: CASE(CurrencyIsoCode, "EUR","€", "GBP","£", "$").
Dynamically displays different columns for fields in the Edit Lines page based on type of user or quote. See Dynamic Edit Lines Page for instructions. If you want different users to see different fields or columns on the Edit Lines page based on the type of user or type of quote, set up the EditLinesFieldSetName field to apply different field sets in different scenarios.
Dynamically displays quote fields on the quote line editor based on the type of user or quote. See Dynamic Display Salesforce CPQ Quote Fields in the Quote line Editor for instructions. To show different quote fields based on the type of user or type of quote, set up the HeaderFieldSetName field to apply different field sets in different scenarios.
NOTE: Dynamic display of Quote fields using HeaderFieldSetName must have the field type as picklist or formula. The feature doesn't work with field type set as Rich Text Area.
Allows you to enter an overage rate for block prices, which is added on top of the block price selected and calculated by taking the difference between the minimum quantity for the block and the quantity entered for that line item.
Allows you to configure quotes to have the total quote amount represent discount per unit of quantity and discount per unit of term. For example, you may want to apply an annual discount to a subscribed product that has 6 months remaining on the term.
Salesforce CPQ designates the Quote-level Primary Partner record by looking at the Partner record marked Primary in the partner Opportunity's Partner Roles related list. If QuotePrimaryPartner contains a Partner record ID, Salesforce CPQ will use that value instead for copying to the Quote's Primary Partner field.
Provides the ability to override the Unit Price of an Order Item.
NOTE: This special field is not supported for Salesforce Billing.
Maximizing Efficiency with Salesforce CPQ Twin Fields
As you've seen across this article, Salesforce CPQ Twin Fields and Special Fields offer significant data mapping capabilities and customization options that can be game-changers in data management. However, their effective utilization necessitates careful understanding of their constraints.
As you become more and more familiar with the extent of CPQ capabilities, we also recommend you look into tooling that can help you deploy and synch CPQ data across your various Salesforce organizations. At Blue Canvas we offer a dedicated Salesforce CPQ Deployer that helps you compare and synch CPQ across sandboxes in minutes! For further assistance with implementation or to learn more about these features, don't hesitate to reach out to our team at Blue Canvas today.
What are Twin Fields in Salesforce CPQ?
Twin Fields in Salesforce CPQ facilitate the transfer of custom field values between paired objects upon the creation of the second object. This feature surpasses the capabilities of Quote Sync, as it allows for data mapping across supported objects, reducing the need for customizations.
In what scenarios are Twin Fields beneficial?
Twin Fields are particularly useful in large data organizations. For example, if you regularly update the same values from an object via automation or with Apex in Salesforce, Twin Fields can help map data across supported objects, saving platform resources. A common use case is copying a field value from a Product across all Quote Line Items it’s generated from.
What are the limitations of Twin Fields in Salesforce CPQ?
Twin Fields can't map Standard Fields. They also require exact API names and matching field types for successful mapping. Custom Objects are not supported, and it's important to ensure the objects you will be using are supported by Twin Fields.
What are Special Fields in Salesforce CPQ?
Special Fields are fields you create in Salesforce CPQ to unlock advanced package features. They can aid your CPQ implementation by allowing more customization. For instance, using the Special Field 'HeaderFieldSetName', you can dynamically display a specific quote field in the quote line editor based on the user.
Can the 'Line Editor' field set on Quote be customized for different users?
Yes, with the Salesforce CPQ Special Field, 'HeaderFieldSetName', you can create a field on the quote object to dynamically display a specific quote field in the quote line editor. This can be controlled by using a formula field or you can allow users to make their own selection by using a picklist field.
What precautions should I take when implementing Twin Fields and Special Fields?
Twin Fields and Special Fields require careful implementation to fully leverage their capabilities. Make sure the API names are exact and the field types match. Also, remember that Twin Fields are populated only upon record creation, so editing the source will not copy the value to its target. Similarly, ensure that Special Fields are implemented correctly to unlock advanced features as desired.