Overview
The Silkline integration connects purchasing workflows in Silkline with the Builds module in Epsilon3. Purchase orders can originate in either system. Epsilon3 owns receiving, purchase order closure, and cancellation, while Silkline reads receiving progress from Epsilon3 shipments. Vendors, existing parts, users, and locations are read from Epsilon3 into Silkline.
Find the Silkline integration in Epsilon3
In Epsilon3, open Settings and select Integrations. The Partner Integrations tab lists available third-party integrations. Locate Silkline, which is described as syncing purchase orders, vendors, parts, and shipments between Epsilon3 and Silkline.
Select Details to open information about the integration.
Before you begin
You need Administrator access to the Epsilon3 workspace you want to connect and an Epsilon3 workspace API key. The API key determines which Epsilon3 workspace Silkline can access.
You can also provide your Epsilon3 Team ID. The Team ID is optional for synchronization, but it allows Silkline to display "View in Epsilon3" links for synchronized orders, parts, and vendors.
Generate an Epsilon3 API key
In Epsilon3, open Settings, select Integrations, and then select the API tab.
Create a workspace API key for the workspace you want Silkline to connect to. Give the key a name that clearly identifies its purpose, such as Silkline, then generate the key.
Copy the generated key when it is displayed and store it securely. The API key is a credential that grants access to the Epsilon3 workspace, so do not share it outside the systems or administrators that require it.
If the Silkline connection is later replaced or removed, return to the API area in Epsilon3 and deactivate the key that was created for Silkline.
Creating a dedicated key for this integration makes it easier to rotate or revoke access without affecting other integrations.
Find your Epsilon3 Team ID
The Team ID is optional, but it enables direct "View in Epsilon3" links from synchronized Silkline records. Open the Epsilon3 workspace in your browser and look at the URL.
The Team ID is the value that follows /team/ in an Epsilon3 URL such as app.epsilon3.io/app/team/<team-id>/....
Copy that value if you want to enable Silkline deep links.
Create the Epsilon3 integration in Silkline
You will need to create the integration in Silkline. To do so, follow the instuctions in this Managing Integrations Silkline article.
In Silkline, create a new Epsilon3 integration using Silkline's integration management workflow. Open the integration and go to the Secrets section. Enter the Epsilon3 API key you generated, then use Test Connection to verify that Silkline can authenticate to the Epsilon3 workspace.
In the integration connection settings, enter the Team ID if you want "View in Epsilon3" links. You can also configure "Create Purchase Orders At" to control the Silkline order status at which a corresponding Epsilon3 purchase order is first created.
Choose when Silkline creates the Epsilon3 purchase order
By default, Silkline creates the Epsilon3 purchase order when the Silkline order reaches Open, and updates it on every change from then on.
To create it earlier, set Create Purchase Orders At in the integration's connection settings to Draft, Review, Approved, or Open. An order that hasn't reached that status is not pushed. Once the purchase order exists in Epsilon3, every subsequent Silkline change syncs to it. An order that is canceled or closed before ever reaching the threshold is never pushed.
If an order is canceled or closed before it ever reaches the configured threshold, Silkline does not create an Epsilon3 purchase order for it.
Deep Links (Team ID)
With a Team ID configured, synced orders, parts, and vendors show a "view in Epsilon3" link that opens the matching record in the Epsilon3 app. Without one, records still sync — the link just doesn't render.
How synchronization works
Purchase orders are synchronized in both directions. Purchase orders created in Epsilon3 are imported into Silkline as orders. Orders created in Silkline are automatically written to Epsilon3 when writeback is enabled and the configured creation threshold has been reached.
Epsilon3 does not close a purchase order automatically when it is fully received. Closing it explicitly in Epsilon3 closes the matching Silkline order on the next sync.
Silkline advances the purchase order forward only along Draft → In Review → Submitted. A Silkline order in Draft maps to Epsilon3 Draft, Review or Approved to In Review, and Open to Submitted. Silkline never moves a purchase order backward, and never sets Epsilon3's receiving or terminal states — receiving progress, closure, and cancellation are owned in Epsilon3.
Receiving
Receiving flows from Epsilon3 to Silkline. Silkline reads shipment data in Epsilon3 and uses accepted quantities to update the received quantities on the corresponding Silkline order.
Vendors, existing parts, users, and locations are read from Epsilon3 into Silkline. Silkline does not modify those existing Epsilon3 records. If an order written from Silkline contains a material that does not yet exist as an Epsilon3 part, Silkline can create the missing part during order writeback. Existing Epsilon3 parts are never modified by Silkline.
Data originating in Epsilon3 is pulled into Silkline on a regular schedule. Individual synchronized records can also be pulled on demand from their pages in Silkline.
Silkline order writeback is automatic when enabled; creating or editing a qualifying Silkline order pushes the change to Epsilon3 without a separate manual synchronization step.
Purchase order states
Epsilon3 purchase orders and Silkline orders use separate lifecycle states. When Silkline reads an Epsilon3 purchase order, Draft maps to Draft, In Review maps to Review, Submitted maps to Open, Partially Received maps to Open, Fully Received maps to Open, Closed maps to Closed, and Canceled maps to Canceled.
When Silkline writes an order to Epsilon3, it only advances the Epsilon3 purchase order forward through the purchasing workflow. Silkline Draft maps to Epsilon3 Draft. Silkline Review and Approved map to Epsilon3 In Review. Silkline Open maps to Epsilon3 Submitted.
Silkline does not move an Epsilon3 purchase order backward to an earlier state. It also does not set Epsilon3 receiving states or terminal states. Receiving progress, closure, and cancellation remain controlled in Epsilon3.
Epsilon3 does not automatically close a purchase order when it becomes fully received. Close the purchase order explicitly in Epsilon3 when appropriate. The matching Silkline order moves to Closed on the next synchronization.
Receiving
Receiving is performed in Epsilon3. Silkline reads Epsilon3 shipment records associated with the purchase order. Each shipment item's accepted units count toward the received quantity of the matching Silkline order line. Rejected units do not count as received in Silkline.
Because Epsilon3 can consider a purchase order Fully Received once every unit has been dispositioned as accepted or rejected, an Epsilon3 purchase order can show Fully Received while the corresponding Silkline order still shows fewer units received.
Shipment items reference the purchase order by part revision rather than by individual purchase order line. If several lines use the same part revision, accepted units are applied to those lines in line order, up to each line's ordered quantity. Any remaining quantity, including an over-receipt, is applied to the final matching line.
The received date for a line is the earliest accepted receipt for that part.
Orders with suppliers or parts that do not exist in Epsilon3
Silkline can write an order to Epsilon3 even when its supplier or some materials do not yet have an Epsilon3 counterpart.
If the supplier does not exist in Epsilon3, Silkline creates the purchase order without an Epsilon3 vendor and includes the supplier name in the purchase order notes. If that supplier is later matched to an Epsilon3 vendor, the vendor is attached to the purchase order the next time Silkline updates it.
If a material does not exist in Epsilon3, Silkline can automatically create the corresponding Epsilon3 part. If a part with the same part number already exists, the line links to that existing part instead. This gives the purchase order line an Epsilon3 part reference so it can be received in Epsilon3.
If part creation is disabled for the integration, a line whose material does not exist in Epsilon3 is omitted from the Epsilon3 purchase order. Silkline reports the missing line in the order Sync Status until the item is linked to an Epsilon3 part or part creation is enabled again.
Time, Date Time, Records, and Predefined List fields cannot be linked. Silkline has no matching field type for Time, Date Time, or Records, and Epsilon3 Predefined List options are not readable through the Epsilon3 API.
To link an Epsilon3 custom field in Silkline, open Settings, then Configurable Fields.
Open or create the appropriate configurable field and open its integration link for the Epsilon3 integration. Choose Custom Field as the link type, select the Epsilon3 field, and run a pull. For a linked list field, the available options fill from Epsilon3 and remain synchronized.
Options removed from Epsilon3 are removed or archived in Silkline.
Avoid leading or trailing spaces in Epsilon3 list options. Epsilon3 rejects an option value with leading or trailing spaces when it is sent through the API.
If synchronization reports this error, rename the option in Epsilon3 to remove the extra spaces and then pull the linked field options again.
Known Limitations
Orders carry a single user
An Epsilon3 purchase order records one user (its creator), which maps to the Silkline buyer. The Silkline requester is not set on imported orders, so they show a "requester" validation warning until one is assigned in Silkline.
Rejected units are not counted as received
Epsilon3 considers a purchase order "Fully Received" once every unit is dispositioned — accepted or rejected. Silkline counts only accepted units, so an order with rejections shows as partially received in Silkline while Epsilon3 shows it fully received.
Vendor addresses are free text
Epsilon3 stores a vendor's address as a single free-text value. Silkline splits out city/state/ZIP when the value ends in a recognizable US format; other formats (including international addresses) are kept as one address line rather than risk mis-structuring them.
Custom field values are not synced
A Configurable Field linked to an Epsilon3 custom field syncs its option list only. Field values on individual orders are not read from or written to Epsilon3.
Deactivated Epsilon3 users are not archived
Only active Epsilon3 users are imported. A user who is later deactivated in Epsilon3 stops syncing but is not automatically archived in Silkline — archive them in Silkline directly if needed.
Frequently Asked Questions
How often does the data sync?
Order writeback is automatic — editing an order in Silkline pushes it to Epsilon3 (when writeback is enabled). Data from Epsilon3 — orders, receiving progress, vendors, parts, users, locations — is pulled on a regular schedule, and any individual record can be pulled on demand from its page in Silkline.
Who assigns purchase order numbers?
Epsilon3 does. When Silkline creates a purchase order in Epsilon3, Epsilon3 assigns its PO code (e.g. PO-17), and Silkline displays that code as the order number.
What happens when an order is closed or canceled in Epsilon3?
The matching Silkline order moves to Closed or Canceled on the next sync. Silkline never closes or cancels the Epsilon3 purchase order itself.
Which system is the source of truth?
Orders can be created in either system. Orders created in Silkline are written to Epsilon3 and updated there on every Silkline change; orders created in Epsilon3 import into Silkline and pick up Epsilon3 changes on each scheduled pull. Receiving, closure, and cancellation always flow from Epsilon3. Vendors, parts, users, and locations are owned by Epsilon3 — Silkline reads them and never writes them back.








