Data & Character Limitations
How many custom attributes can I add?
You can add up to 100 custom attributes and unlimited number of metrics. If you need to add more than 100 custom attributes, please let your Customer Success Manager know.
Are there character limitations for an attribute value?
Please see below the character limits for different set of attributes.
Attribute Type | Limit | Examples |
Core Attribute | 255 Characters | Title, External Id |
Custom Attribute | 64 Characters | Color, Size, Division, Department |
Historical Data
How much historical data is needed for validation?
Below are the recommended historical data for validation. This give Toolio enough sample set to iron out the kinks in your data.
Model | Duration |
Sale | 3 months |
Inventory | 3 months |
Purchase Order | Full Open POs |
Receipt | 3 months (based on receipt date) |
Product | Full |
Transfer Orders | Full Open TOs |
Transfer Receipts | 3 months (based on receipt date) |
How much historical data is needed for initial data import?
We recommend importing all the historical data that will be helpful to your future decisions. We suggest loading the following data durations into Toolio.
Model | Duration |
Sale | 2 years + Current Year |
Inventory | 2 years + Current Year |
Purchase Order | Full Open POs |
Receipt | 2 years + Current Year |
Product | Full |
Transfer Orders | Full Open TOs |
Transfer Receipts | 3 months (based on receipt date) |
Data Update Frequency
When and how frequently will the data be updated?
Data update frequency will depend on the needs of the business, but our suggested approach is sending data daily.
If daily is not an option, you can send it weekly, after the last day of the week on your retail calendar.
When you are updating data, you only need to send the relevant data, i.e. you don’t need to send a full data dump every week. Below are some rules of thumb on how much data to send every week.
Model | Data Span | Comments |
Sale | Incremental (i.e. updated since last time) If incremental not possible, send trailing 1 week | Sales information can change for a few weeks after the transaction. So please send the trailing 8 weeks |
Inventory | Today | Send BOP based on the current date sent |
Purchase Order | Incremental (i.e. updated since last time) If incremental not possible, send full feed | |
Receipt | Incremental (i.e. updated since last time) If incremental not possible, send trailing 1 week | |
Product | Incremental (i.e. updated since last time) If incremental not possible, send full feed | |
Transfer Order | Incremental (i.e. updated since last time) If incremental not possible, send full feed | |
Transfer Receipt | Incremental (i.e. updated since last time) If incremental not possible, send trailing 1 week |
What is a good time in the day for the integrations (or data sync) to be triggered at?
We recommend having the integrations or data feeds to be synced as early as possible within the day at a time after which you know the sources of record (e.g. ERP or Data Warehouse) are fully updated. A typical recommendation would be some time between 1-4AM in your organization local time.
Let's say that you have set up your data warehouse to be the source of truth for your Toolio integration. Review with your tech team, when your data warehouse is typically updated. We typically see the update process starting at midnight and taking a few hours. Accordingly, set the Toolio integration trigger time to be 30-60 mins after the time your database would be updated.
Multiple Data Sources
Can I connect more than one system to Toolio?
Yes. Toolio receives your data as separate feeds (Sale, Inventory, Purchase Order, Receipt, Product, and so on), and each feed can come from a different system. You don't need one system that covers everything. For example, many customers send Sales and Inventory from their ecom platform, and Purchase Orders, Receipts, and Product data from their ERP.
When deciding which system should send each feed, choose the system where that data is created or is most accurate.
Feed | Typical Source |
Sale | The system where the transaction happens, such as your ecom platform or POS |
Inventory | The system with the most reliable stock counts, such as your ERP or warehouse system |
Purchase Order / Receipt | Your ERP, since ecom platforms usually don't track POs or receipts |
Product | Your PLM or ERP, since it usually has more product attributes than a storefront catalog |
If your team already combines data from several systems in a data warehouse (e.g. Snowflake or BigQuery), you can send all feeds to Toolio from that one connection instead.
What happens if two systems send data for the same feed?
This is common during a system migration, or when sales come from more than one place (for example, ecom sales from one system and store sales from another). How Toolio handles it depends on what each system sends:
Different records: Toolio loads the records from both systems.
Different fields for the same record: Toolio combines the fields from both systems into one record. This requires each system's importer to be set up to update only the fields that system owns.
The same fields for the same record: The most recent import overwrites the earlier values. The values aren't added together, and Toolio doesn't flag the overlap.
Toolio decides whether two rows are the same record using the unique ID for that feed:
Feed | Unique ID |
Product | Variant ID (SKU) |
Location | Location ID |
Sale | Sale ID |
Inventory | Variant ID (SKU) + Location + Date |
Purchase Order | PO Line ID |
Receipt | Receipt Line ID |
Transfer Order | TO Line ID |
Transfer Receipt | TR Line ID |
Booking | Booking ID |
Every business's mix of systems is different. Your Implementation Specialist will work with you to map out what you need from each source and plan how to send it, so every system contributes its data without overwriting what another system sends. If you're already live and plan to add or change a source, reach out to your Customer Success Manager first.
Inventory FAQs
How does Toolio handle duplicates in the inventory feed?
Toolio defines a unique inventory record using the combination of:
Variant ID (SKU)
Timestamp (date)
Location
If duplicate records exist for the same combination, Toolio will take the latest value from the feed as the source of truth.
In some cases (though this is not the expected pattern), you may want to aggregate duplicate values instead of overwriting them. Toolio supports this through the organizational feature flag aggregateDuplicatesOnInventory, which combines duplicate values (e.g., units).
Why am I getting a "number of lines cannot exceed X" error in the inventory feed?
If the feature flag aggregateDuplicatesOnInventory is turned on, Toolio enforces a limit of 1,000,000 rows for each inventory feed upload.
When
aggregateDuplicatesOnInventoryis enabled, Toolio must load all data into memory to aggregate duplicates. To ensure performance and stability, we apply a hard cap of 1,000,000 rows on the inventory feed size.
If your feed exceeds this limit, you’ll need to:
Reduce the number of rows in each file (e.g., split the feed by location or date), or
Turn off the
aggregateDuplicatesOnInventoryflag if aggregation is not required.
Purchase Order FAQs
I am seeing past POs with On Order, even though these are no longer included on our Feed
This happens when you are sending POs incrementally and have deleted POs on your system vs. marking them as inactive on your end. To prevent these "stale POs", we can update your configuration to assume that you're sending all Open POs at any point, so that Toolio automatically deletes all POs that are not included in your latest PO feed.
If you would like to make this configuration change to allow "Full Purchase Order Import", please get in touch with us and we can make the change.
