The problem: your agents are guessing
A support agent opens a ticket and sees an email address. Nothing else. To answer "where is my order", "is this still under warranty", or "can I get a refund", they alt-tab into NetSuite, search the Customer record by a name that may not match, scroll the Sales Orders sublist, open the Item Fulfillment to find a tracking number, then go back and retype it all into the ticket. Every answer costs two systems and three minutes.
The return path is worse. When the agent decides a customer gets a replacement or a credit, that decision lives only in the ticket. Someone in finance or operations has to read it later and manually key a Return Authorization or a Credit Memo, usually from a spreadsheet of "tickets to process". Items get returned that were never authorised, credits get issued twice, and the revenue impact of support decisions never appears in NetSuite until month-end.
Meanwhile the support system holds data NetSuite needs — ticket volume per customer, SLA breaches, satisfaction, product defect patterns — and none of it is visible next to the Customer record where account managers and renewals actually work.
What ECOSIRE builds
ECOSIRE builds a bidirectional connector between your support desk and NetSuite as a set of SuiteScript 2.1 scripts and custom records deployed into your own account. It is not a pre-built product you download; it is scoped against your NetSuite configuration and built for you.
Context in the ticket
A RESTlet exposes a read-only, tokenised endpoint that the support desk calls when an agent opens a ticket. Given an email address, phone number, external ID or order number, it resolves the NetSuite Customer (or Contact, walking up to the parent Customer, and to the correct Subsidiary if you run OneWorld) and returns a context payload built from Saved Searches you can edit without touching code: open and recent Sales Orders with status and expected ship date, Item Fulfillment records with carrier and tracking number, open and paid Invoices with due dates and balance, Credit Memos, Return Authorizations already in flight, and entitlement rows drawn from whichever record you use for entitlement — contract line items, a Custom Record for warranty registration, serial/lot numbers on Inventory Detail, or the item's own Item Record warranty fields.
Because the read is driven by Saved Searches, adding a field to the agent view later is a saved-search edit, not a code change and not a new quote.
Actions from the ticket back into NetSuite
The same connector exposes write operations, each one a separate RESTlet action guarded by NetSuite Roles and Permissions so agents can only do what you allow:
- Create a Return Authorization from selected Sales Order lines, with the return reason mapped to a custom list and the ticket number written to a Custom Transaction Body Field on the RA.
- Create a Credit Memo, either standalone or applied against a specific Invoice, with an approval threshold — above your configured amount, the record is created in a pending state and routed through SuiteFlow for approval instead of being committed.
- Create a replacement Sales Order at zero price or at a configured RMA-replacement price level.
- Create or update a Case record in NetSuite mirroring the ticket, so support activity is visible to anyone working in NetSuite without a support-desk licence.
- Append a note to the Customer record or to a Custom Record activity log.
Every write is idempotent: the ticket ID plus action type is stored on the created transaction and checked before creation, so a retried webhook or a double-clicking agent cannot produce two credit memos.
Sync engine
A Map/Reduce script handles bulk and catch-up synchronisation — new and changed Customers pushed out to the support desk so agent lookups resolve, ticket summaries pulled back and rolled up onto Custom Fields on the Customer record (open ticket count, last ticket date, lifetime tickets, last CSAT). A Scheduled Script runs the incremental delta on your chosen cadence. A User Event script on Customer, Sales Order and Invoice fires near-real-time updates for the records that matter most.
All traffic is logged to a Custom Record with request, response, HTTP status and correlation ID, and a Saved Search gives you a failures-only view. Failed calls are retried with backoff by the Map/Reduce; anything that exhausts retries raises a NetSuite notification to an address you nominate.
Configuration, not hardcoding
A Custom Record holds the connector configuration: credentials (stored in NetSuite's encrypted fields), field mappings, status mappings between ticket states and Case statuses, subsidiary routing rules, the credit approval threshold, and which Saved Searches drive the agent context panel. Where your data model differs from the default — you use Custom Segments for product line, or entitlement lives on a custom record — that mapping is captured during scoping and configured here.
Who this is for
Companies running NetSuite as the system of record for orders, invoicing and inventory, with a separate support desk handling customer contact. It matters most when you ship physical goods with returns, when you sell warranties or service contracts, or when support agents are authorised to issue credits. OneWorld accounts with multiple subsidiaries and currencies are supported — subsidiary resolution is part of the scope.
How delivery works
1. Scoping call. We walk your NetSuite account: subsidiaries, item types, which records hold entitlement, your RA and credit approval process, your support desk's fields and automation surface, and volume. We agree exactly which fields appear in the agent panel and which write actions agents get. 2. Fixed quote. You receive a written scope and a fixed price before any code is written. Nothing starts until you approve it. 3. Build. Development happens against your sandbox account, delivered as an SDF project / unmanaged bundle that you own outright — you keep the source. 4. Install in test. Deployment to your sandbox or release-preview account first, with a joint test pass over real records: lookups, RA creation, credit approval routing, error handling and retry. 5. Production. Once you sign off in sandbox, we deploy to production, configure the live credentials and roles, and run the initial backfill. 6. Support. A warranty window covers defects, with the handover documentation and a training session so your admins can change mappings and saved searches themselves.
Build time is typically two to four weeks from approved scope, depending on how much of your entitlement and approval logic is custom.