How We Automated a Merchant’s Nightly Bundle Reports Into Their ERP
A merchant was manually uploading bundle CSVs to their ERP every morning. We automated the whole thing with a nightly scheduled job. Here's exactly how.
AI Product Bundle Builder
4 min read

A merchant came to us with a problem that had nothing to do with bundles and everything to do with their morning routine.
Every day, someone on their team did the same thing:
Exported bundle reports from our app
Opened their FTP client
Uploaded the file to a server so their ERP could pick it up
It worked. But it was a person doing the same five minutes of clicking every single day. And the day someone forgot, the ERP imported stale numbers and the whole day’s reports were wrong.
They didn’t want a new dashboard. They didn’t want to change their ERP. They wanted the manual step gone.

What the merchant actually needed
Their ERP reads from an FTP server every morning. Whatever file is sitting in that directory when the import runs becomes the day’s reporting data.
So the real requirement was narrow and specific. A correctly formatted CSV had to be in that folder before the ERP woke up, every day, with no human involved.
The file needed:
Bundle details
Bundle sales
Revenue generated by bundles
Units sold
A few performance fields their finance team tracked
Not complicated data. The hard part was the reliability, not the content.
What we built: a scheduled nightly export
We added a scheduled job that runs at 2:00 AM, well before their ERP’s morning import window.
When it runs, it does three things:
Pulls the latest bundle data and performance stats from the app
Builds a CSV in the exact column structure their ERP expects
Pushes it to their FTP server using their existing credentials
By the time anyone on their team is awake, the file is already there and the ERP has everything it needs.

Why the CSV column structure mattered
An ERP import is unforgiving. Name a header slightly wrong or put a column in the wrong position, and one of two things happens:
The import fails outright, or
Worse, it silently maps data to the wrong field and nobody notices until the numbers look off
So we matched their existing format exactly, rather than asking them to reconfigure their import mapping. Less work for them. Fewer ways for it to break.
The engineering details that aren’t obvious from the outside
This is where the real work lived. A few decisions that mattered:
The 2:00 AM slot was deliberate
Late enough that the day’s sales are settled. Early enough to clear before their import runs.
Silent failure was the real enemy
If the FTP upload fails, say the server is briefly unreachable, there’s a retry and an alert. A failed upload that nobody knows about turns into a wrong report that nobody questions. We designed against that specifically.
No new infrastructure
We used their existing FTP credentials and their existing server. Nothing new for their IT team to provision or sign off on.

Why we didn’t just say “export it each morning”
Because that’s how the problem started.
The whole point was to remove the human from a step that doesn’t need one. A report that depends on someone remembering to click a button is a report that will eventually be wrong.
Automating it meant the merchant stopped thinking about it entirely. That’s the goal with this kind of work. The best integration is the one nobody on the team has to remember exists.
When you need more than a standard app feature
AI Product Bundle Builder does what most merchants need out of the box. But “most” isn’t “all.”
Some businesses run an ERP, a warehouse system, or a reporting pipeline that the app has to fit into, not the other way around. We’ve built that kind of custom work before, whether you’re running Fixed Bundles, Build Your Box, or Buy X Get Y:
Scheduled data exports
Custom CSV report formats
FTP and SFTP integrations
ERP syncs
Business-specific reporting and workflow automation
The app is the starting point. What it connects to depends on what your business actually runs on.
Have a workflow like this?
If the app needs to talk to something outside Shopify an ERP, a warehouse system, anything tell us what your system expects and we’ll figure out how to feed it automatically.
Usually the repetitive task you’re doing by hand right now is the one worth removing first.
Building something on Shopify that needs custom work beyond the standard app? Get in touch.
