Populate Custom Fields in Zuora
Zuora custom fields let you capture additional information on objects such as Accounts, Subscriptions, and Orders, tailored to your business requirements. These fields provide flexibility to store custom attributes that aren't available by default in Zuora.
Limio supports the automatic population of Zuora custom fields during key events, such as new orders, subscription switches, and cancellations, making it easier to pass data from the customer journey into Zuora.
There are three ways to populate custom fields in Zuora via Limio:
A. Catalog Configuration
Populate fields using metadata from a Page or Offer
No-code, via templates
B. Modular Checkout
Capture user input via Field subcomponents
No-code, via checkout config
C. General Settings
Map order data to Zuora fields per order type
No-code, via Settings UI
A. How to configure from your Limio Catalog configuration
1. Configure the custom field in Zuora
To enable Limio to populate custom fields, it's crucial to define them in Zuora first. Supported custom fields include those related to the following Zuora objects:
Subscriptions
Orders
Account
Consult the Zuora documentation for a step-by-step guide on setting up your custom fields.
It's important to note that custom fields populated by Limio or Limio for Salesforce should adhere to a specific API naming convention. The API Name must begin with ltm_ and have __c appended at the end. E.g. ltm_fieldName__c. Field Label in Zuora however has no restriction nor impact in Limio.
Custom field defined in Zuora
For detailed insights into the full use of ltm_ tags refer to our documentation on Configure Tracking in Salesforce and Zuora.
2. Sync the Zuora Product catalog
To ensure Limio includes the custom field in the order sent to Zuora, Limio must first be aware of the custom fields defined in Zuora, and which objects they are on.
Initiate the Catalog Sync process in the Limio app. For step-by-step instructions, refer to our guide on how to Sync Between Limio and Zuora Catalogs
For lmo and utm parameters, you are now done. lmo are always added via the URL. utm parameters will be added via the call to action on the referrer, for example via ?utm_content=page123.
For ltm parameters, do step 3 to 5.
3. (ltm parameters only) Add the custom attribute to the template
To define custom attributes in Limio, follow this guide on how to create new custom attributes. In order for the custom attribute to be passed to Zuora they must match the API without __c appended on the end. You do not need to put information about the Zuora object.
Please be mindful that these attributes are case-sensitive. Refer to the example below for clarification:
Custom field defined on the Limio Template
4. (ltm parameters only) Add the custom field to the page/offer
Once added to the relevant offer/page template, the new field will appear on offers/pages using that template. You can then simply enter the desired field value and save the page.
5. (ltm parameters only) Publish the page
Changes will only be reflected on new events after the relevant pages have been published.
OOTB custom fields
Some custom fields come pre-configured and don't require setup in Limio. As long as these fields are defined in Zuora, they will automatically be populated. Explore further details in our guide on Out-Of-The-Box Zuora Custom Fields.
Date type custom fields
To utilize date functionality as a custom field in Zuora for purposes like defining a delayed subscription start date, follow these steps:
Define the custom field in Zuora, selecting "Data Type: Date."
In the Limio template, define the custom field as "Type: string."
When specifying the custom field value, input a string in the format
YYYY-MM-DD.
By adhering to these steps, the custom field will be captured as a date in Zuora, displayed according to the format defined in your Zuora settings.
B. How to configure from your Limio Modular Checkout
Populating Zuora Subscription Fields
You will need to use a specific Subcomponent: Field in Limio's Modular Checkout and respect some naming conventions. Learn more Form Subcomponent: Field.
Populating default Zuora contact fields
In addition to custom fields, Limio also supports the automatic population of default Zuora contact fields, such as email, phone number, and address details. These can be updated during order submission to keep billing information accurate and up to date.
To learn how to configure and populate these standard fields using Limio's out-of-the-box components or custom SDK integrations, see our guide: Update Contact Details in Zuora
Populating any fields in Zuora (requires code)
As part of the Limio SDK, you can use the updateCustomField method to define a custom field and map it to Zuora. For example, if you want to map a custom field named UserID on the Zuora Account object, pass 'UserID.account' to this method.
➡️ Read more in the developer documentation
C. How to configure from General Settings
Use Settings > Zuora > Custom Attributes to map order data directly to Zuora custom fields. This method is useful when you need to:
Pass tracking data or order metadata to Zuora
Set static values on Zuora objects
Configure different mappings per order type (new, cancel, switch, etc.)
Prerequisites
Custom field must exist in Zuora (see Step 1 in Method A)
Catalog Sync must be completed (see Step 2 in Method A)
Configuration Structure
The setting is organised by Zuora object type:
Order Custom Attributes - Fields on the Zuora Order object
Subscription Custom Attributes - Fields on the Zuora Subscription object
Account Custom Attributes - Fields on the Zuora Account object
Each object type contains an array of configurations, one per order type.
Setting Up a Custom Attribute Mapping
Order Type
When this mapping applies
new, change_offer, cancel_subscription
Zuora ID
The custom field API name in Zuora
ltm_CampaignCode__c
Attribute Type
How to format the value
string, number, date
Use a path?
Extract from order data (true) or use static value (false)
true
Path
Dot-notation path to value in order
tracking.campaignCode
Value
Static value (when Use a path = false)
Limio
Supported Order Types
new
New subscription purchases
change_payment
Payment method updates
cancel_intent
When customer initiates cancellation
add_offer
Adding an additional subscription
change_address
Delivery/billing address changes
change_offer
Switching to a different offer
cancel_subscription
Full subscription cancellation
suspend
Pausing a subscription
resume
Resuming a paused subscription
Attribute Types
string
Text value
123
"123"
number
Integer
"42"
42
float
Decimal number
"3.14"
3.14
date
ISO date string
"2024-01-15"
Parsed date
null
Always null
any
null
any
Pass through unchanged
{ foo: "bar" }
{ foo: "bar" }
Example 1: Campaign Code from Tracking
Pass the campaign code from URL tracking to the subscription:
Configuration:
Order Type
new
Zuora ID
ltm_CampaignCode__c
Attribute Type
string
Use a path?
true
Path
tracking.campaignCode
Input order:
Result on Zuora Subscription: ltm_CampaignCode__c = "SUMMER2024"
Example 2: Static Source Value
Always set the source to "Limio" for new orders:
Configuration:
Order Type
new
Zuora ID
ltm_Source__c
Attribute Type
string
Use a path?
false
Value
Limio
Result: ltm_Source__c = "Limio"
Example 3: Account-Level Acquisition Date
Store the order creation date on the account:
Configuration:
Order Type
new
Zuora ID
ltm_AcquisitionDate__c
Attribute Type
date
Use a path?
true
Path
created
Common Paths Reference
tracking.campaignCode
Campaign code from URL
tracking.utm_source
UTM source parameter
tracking.utm_medium
UTM medium parameter
tracking.utm_campaign
UTM campaign parameter
created
Order creation timestamp
customer.email
Customer email
customer.firstName
Customer first name
billingAddress.country
Billing country
Automatic Attribute Extraction
In addition to the three configuration methods above, Limio automatically extracts certain custom fields from order data during processing.
From URL Tracking (order.tracking)
order.tracking)Fields matching these patterns are automatically included:
ltm_*__c
Limio tracking markers
utm_*__c
UTM parameters
lmo_*__c
Limio offer markers
From Offer Attributes
Fields matching ltm_*__c are automatically extracted from:
order.orderItems[].offer.data.attributes- for new ordersorder.offer.data.attributes- for offer changes
Validation
Automatic extraction only includes fields that exist as custom fields in your Zuora tenant (validated against the synced catalog).
Processing Flow
The diagram below shows how custom attributes flow from configuration to Zuora:
Caveats and Important Notes
Custom Fields Must Exist in Zuora First
The custom field (e.g., ltm_CampaignCode__c) must be created in Zuora and synced to Limio before use.
Naming Convention is Critical
API Name must start with
ltm_and end with__cNames are case-sensitive
Limio template attributes omit the
__csuffix
Path Must Be Valid (Method C)
If usePath: true and the path doesn't exist in the order, the attribute is omitted from the Zuora request.
Order Type Matching (Method C)
Configuration only applies when order.order_type matches exactly. Create separate configurations for each order type needed.
Type Conversion (Method C)
numberwith non-numeric input returnsNaNfloatwith non-numeric input returnsNaNdatewith invalid input returns invalid date
Merge Precedence
When the same field is configured via multiple methods, the precedence is:
Automatically extracted values (highest priority)
General Settings mappings
Catalog/Offer attributes
Troubleshooting
Attribute Not Appearing in Zuora
Verify the custom field exists in Zuora with correct naming (
ltm_*__c)Run a Catalog Sync in Limio
Check the
order_typematches your order (for Method C)Verify the path exists in order data (for Method C)
Publish any page/offer changes (for Method A)
Wrong Value Type
Ensure the attribute type setting matches what Zuora expects. Zuora may reject requests with incorrect types.
Missing Tracking Data
Tracking data (ltm_*, utm_*, lmo_*) is only available if:
Passed via URL parameters to the shop
Shop correctly captured it in
order.tracking
Last updated
Was this helpful?

