Mailhook, FTP and NetSuite: Emailed Catalog Intake Template
When a supplier emails a catalog file to a Spojit mailhook address, archive the file to your FTP server and upsert the items into NetSuite.
What It Builds
This template starts from a Mailhook trigger that receives supplier catalog emails at a unique Spojit address. An Attachment node pulls the catalog file (a CSV or spreadsheet) out of the email, a Connector node on the ftp connector uploads a dated copy to your archive folder, and a Connector node on the netsuite connector upserts each catalog row into your item records. The result is a hands-off intake that keeps a permanent file copy on FTP and a current item list in NetSuite every time a supplier sends an update.
The Prompt
Paste this into Miraxa and it builds the workflow, connecting the tools for you:
Build a workflow that triggers from a mailhook when a supplier emails a catalog file. Fetch the catalog attachment, upload a copy to FTP under /catalogs with a date-stamped filename, parse the rows, then upsert each item into NetSuite using the supplier SKU as the match key. Send a confirmation email to the sender with how many items were processed.
Connectors Used
- Mailhook trigger - supplies the supplier email and its
attachments[]references; the run starts seconds after mail arrives. - Attachment node - fetches the catalog file bytes referenced by the Mailhook trigger (only valid in Mailhook workflows).
- ftp -
upload-filewrites the archived copy;create-directorycan ensure the target folder exists. - netsuite -
upsert-recordcreates or updates each item;get-itemcan confirm a match before writing. - Send Email node - replies to
{{ input.replyTo }}with the processed count (no connection needed).
Customize It
Change /catalogs to your real archive path and adjust the filename pattern (for example include the supplier name from {{ input.from }}). Swap the NetSuite match key from supplier SKU to your internal item ID if that is how your records are keyed. To only accept files from known suppliers, add a From allowlist on the Mailhook trigger, and set a Filename pattern like *.csv on the Attachment node so non-catalog attachments are ignored.
Tips
- Use the Attachment node in
Singlemode with aFilename patternof*.csvwhen each email carries one catalog; switch toMultiplemode and a Loop if suppliers send several files per email. - Keep the NetSuite step in Direct mode with
upsert-record: the input is predictable and Direct mode costs no AI credits. Reserve Agent mode for messy catalogs that need column mapping decided on the fly. - Mailhook attachments default to a 10 MB per-file and 25 MB per-run limit, and received emails are retained for 30 days, so archive promptly to FTP rather than relying on the inbox.
Common Pitfalls
- The designer refuses to save an Attachment node without a Mailhook trigger, so build the trigger first.
- If
upsert-recordcreates duplicates, your match key is not unique in NetSuite. Confirm the field you upsert on is set up as an external ID or unique reference for the item record. - FTP uploads fail silently when the target folder does not exist. Add an
ftpcreate-directorystep (or verify the path) beforeupload-file.
Related
- How to Create Shopify Orders from PO PDFs Emailed to a Mailhook for a step-by-step Mailhook plus Attachment build.
- How to Create NetSuite Sales Orders from Emailed PO PDFs for emailed-document intake into NetSuite.
- FTP/SFTP connector reference for the upload and directory tools used here.