> For the complete documentation index, see [llms.txt](https://docs.limio.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.limio.com/integrations/using-limio-for-salesforce/subscriptions-table-columns.md).

# Subscriptions Table Columns

The table of customer subscriptions loaded at the start of the flow consists of the following, hardcoded columns.

<figure><img src="/files/AwGQbbqIswZhDoX6FI3h" alt=""><figcaption></figcaption></figure>

The list of columns to display and its order is driven by the apex class "Get Subscriptions Table Columns".

<figure><img src="/files/D2XPGYS3UPcrDzSlFVwY" alt=""><figcaption></figcaption></figure>

### How to configure your subscription table columns

In Limio release **v12.29**, a no-code tool became available to our users. It allows to modify a set of columns, reorder and relabel them, learn more about it in [No-Code Tool to Customise Subscriptions Table Columns](/integrations/using-limio-for-salesforce/subscriptions-table-columns/customise-subscriptions-table.md).

More complex customisation might still require some Apex. **Get Subscriptions Table Columns** in the flow can be replaced with a custom apex class to return an updated set of columns. The output generated by the new class must be of the following type:

`List<i42as.DatatableColumn>`

where i42as is the namespace for Limio for Salesforce. The DatatableColumn apex class is a global class with the following properties.

<figure><img src="/files/NShO1LN75Kog0TJ44ULx" alt=""><figcaption></figcaption></figure>

The first constructor is a pair column label-column name, formatted as generic string.

The second constructor allows to pass columns with specific formatting, such as date and currency.

All possible fields that can be selected as columns map to the properties of the [SubscriptionRefined Apex Class](/integrations/setting-up-limio-for-salesforce/apex-classes/apex-subscriptionrefined.md).

### Build your own columns

Below is an example that returns the list of columns currently displayed

```
List<i42as.DatatableColumn> columns = new List<i42as.DatatableColumn>();

columns.add(new i42as.DatatableColumn('Name', 'subscriptionName'));
columns.add(new i42as.DatatableColumn('Status', 'status'));
columns.add(new i42as.DatatableColumn('Offer', 'offerName'));
columns.add(new i42as.DatatableColumn('Start Date', 'startDate', 'date'));
columns.add(new i42as.DatatableColumn('End Date', 'endDate', 'date'));
columns.add(new i42as.DatatableColumn('Latest Schedule Date', 'billingPeriodStart', 'date'));
columns.add(new i42as.DatatableColumn('Latest Charge', 'latestCharge', 'currency'));
columns.add(new i42as.DatatableColumn('Next Schedule Date', 'billingPeriodEnd', 'date'));
columns.add(new i42as.DatatableColumn('Next Charge','nextCharge', 'currency'));
columns.add(new i42as.DatatableColumn('action'));

return new List<List<i42as.DatatableColumn>>{ columns };
```

NOTE: if implemented as a Salesforce flow @InvocableMethod, the return type must be of type

`List<List<i42as.DatatableColumn>>.`

The generated output can be stored on the Table\_Columns variable of the flow, that is of the same type.

<figure><img src="/files/hq31Gax93ReZ1Jr3c4b8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ve40yStzgD1Zi9TVDCkx" alt=""><figcaption></figcaption></figure>

## Tips

* for properties of type **List** (offerAllowedCountries, offerProducts) use type **"arrayToString"**
* for offerTerm - use type **"nestedObjectProperty"**

Examples:\
new i42as.DatatableColumn('Renewal Term Type', 'offerTerm', 'nestedObjectProperty');

new i42as.DatatableColumn('Products', 'offerProducts', 'arrayToString');


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.limio.com/integrations/using-limio-for-salesforce/subscriptions-table-columns.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
