# DSW Account Integration

## Overview

[DSW](https://www.dsw.com/) is an American footwear retailer that sells discounted brand-name footwear, operating over 500 stores and a highly popular website. They offer a dropship vendor program, where you can supply inventory for listings on their website, and customer purchases are forwarded to you for fulfillment. Integrating DSW into your Sellercloud account allows you to seamlessly import orders, upload tracking information, and ensure your listings are always up-to-date with the latest inventory data. This integration works through API, transmitting information between the two services via plugins and [Scheduled Tasks](https://descartessystems.aha.io/pages/7630838715868958891). The communication is facilitated through [DSCO](https://www.dsco.io/), a third-party platform. If necessary, you can open a ticket with [Sellercloud Support](https://descartessystems.aha.io/pages/7630831494839563427) to request additional customizations or other plugins for this integration. Any such modifications will be billable.

DSCO may require testing before you can go into production. To have a dedicated representative complete the testing for your account and ensure that the setup is configured correctly, opt in for [Premium Support](/content/premium-support/index.html).

## Prerequisites

Before you can integrate DSW through DSCO, complete the following requirements.

We recommend creating a [Company](https://descartessystems.aha.io/pages/7630838368529930257) where you will set up the [Custom Company Settings](https://descartessystems.aha.io/pages/7630848929259288263) and [Scheduled Tasks](https://descartessystems.aha.io/pages/7630838715868958891) for this integration.

Sellercloud imports DSCO orders as **Website**. Due to this, we generally do not recommend more than one plugin integration per company, as it may be difficult to differentiate orders coming in from multiple sales channels.

Alternatively, you can use the [Plugin Wizard](https://descartessystems.aha.io/pages/7630837906940475639) to simplify the setup of [Channel Plugin Integrations through Scheduled Tasks](https://descartessystems.aha.io/pages/7630858469048870054). The wizard guides you through the required steps and helps you create:

- A dedicated [Company](https://descartessystems.aha.io/pages/7630838368529930257).
- [Custom Company Settings](https://descartessystems.aha.io/pages/7630848929259288263).
- [Saved Views](https://descartessystems.aha.io/pages/7630838405969463824) to target specific products and orders.
- [Scheduled Tasks](https://descartessystems.aha.io/pages/7630838715868958891) to run the plugins automatically.

Once configured, you can manage all integrations created through the wizard on the [Manage Plugin Channels](https://descartessystems.aha.io/pages/7630838046534405796) page. The workflow outlined below describes the manual configuration process, which does **not** create a plugin channel on the **Manage Plugin Channels** page.

### DSCO Support

Contact [DSCO Support](https://support.dsco.io/hc/en-us) to request your:

- **Supplier ID**
- **API Token**
- **Client ID**
- **Client Secret**
- **Warehouse Supplier Code**

Send an email to support@dsco.io titled 'Create Client Credentials.' In the email, include the name and ID of the DSCO account and the user name with which the client credentials will be associated. When ready, DSCO’s support team will send the client credentials to you. Be sure to store them securely. To get a **Warehouse Supplier code**, you must set up a warehouse in DSCO.

1. Contact the DSCO Integrations team and log into your DSCO account.
2. Click **CONNECTING: Step 1** and continue through the onboarding and testing processes. You choose the **Warehouse Supplier Code** during the onboarding process. You can create it on your [Warehouse Manager](https://app.dsco.io/account/warehouse-manager) page in the DSCO portal.

You will use these credentials and Warehouse Codes to populate the Custom Company Settings outlined below.

### Sellercloud Support

Open a ticket with [Sellercloud Support](https://descartessystems.aha.io/pages/7630831494839563427) and request that the following plugins be installed on your server:

- **DSCO API v3 Order Import**
- **DSCO API v3 Tracking Export**
- **DSCO API v3 Invoice Export**
- **DSCO API v3 Inventory Export**

### Company Settings

Create the following [Custom Company Settings](https://descartessystems.aha.io/pages/7630848929259288263) on the company created for the integration: **Custom Company Settings for old accounts without Stream API**

- **DSCO_Token** - Enter the API Token from DSCO here.
- **DSCO_SupplierId** - Your Supplier ID, also provided by DSCO.

**Custom Company Settings for new accounts with Stream API**

- **DSCO_ClientID** - From DSCO support.
- **DSCO_ClientSecret** - From DSCO support.
- **DSCO_StreamID** - You can leave it empty. Populates automatically for the Stream API.
- **DSCO_StreamPosition** - You can leave it empty. Populates automatically for the Stream API.

**Optional Custom Company Settings**

- **Consider replenishable products** - True or False. Defaults to False. When True, works with **Replenishable qty**.
- **Replenishable qty** - Quantity that will be exported if **Available Quantity** is 0 or less. Only works if the **Consider replenishable products** setting is True.
- **DSCOUseExpectedDeliveryDate** - True or False, defaults to False. When True, exports custom column **DSCOEXPECTEDDELIVERYDATE**. If missing or disabled, the exported date will be a week ahead.
- **DSCO_WarehouseCode** - DSCO warehouse code used by default when the **DSCO_WarehouseCodes** setting has no value.
- **DSCO_WarehouseCodes** - List of Sellercloud WarehouseIDs and DSCO warehouse codes (connected by a hyphen), separated by a comma. Example: **Sellercloud warehouseID-DSCOWarehouseCode**, 123-Lakewood, 245-BostonWH.
- **DSCO_DontSendItemID** - True or False, defaults to False. When set to true, inventory updates will not include **ItemID**, and DSCO will match the **SKU** instead.
- **DSCOSendCost** - True or False, defaults to False. When True, sends custom column **DSCOCost**.
- **DSCO_SendDiscontinued** - True or False, defaults to False. When True, it sends the custom column **DSCOIsDiscontinued**. Products must be discontinued in Sellercloud
- **DSCO_SendUPC** - True or False, defaults to False. When True, sends UPC with the inventory export.
- **DSCO_ExportSsccCode** - True or False. If True, exports the **SSCC code** with the tracking.
- **DSCO_StandardWarehouseCode** - DSCO’s standard Warehouse code exported by the tracking export plugin.
- **DSCO_IncludeWarehouseCodeInTracking** - True or False, if True, sends the DSCO standard warehouse code from the custom setting **DSCO_StandardWarehouseCode.**
- **DSCO_SendOnePackagePerKitParent** - True or False. If True, each kit parent will be in a separate package.
- **DSCO_SendKitParentOnly** - True or False. If True, only sends the parent SKU with the tracking without the components.
- **DSCO_SendShipFromInfo** - True or False. If True, sends the orders’ **Ship From** information with the tracking export.
- **DSCO_SendPackageWeight** - True or False. If True, sends the package weights with the tracking export.
- **DSCO_SendInvoiceDate** - True or False, set to True to send Invoice Date.
- **DSCO_SendCurrencyCode** - True or False, set to True to send the exported order's **Currency Code**.
- **DSCO_NetTermDays** - Numeric only, sends **NetTermDays** with the invoice export.
- **DSCO_NetTermType** - Exported when **DSCO_NetTermDays** exists and isn’t 0.
- **DSCO_SendShipToInfo** - True or False. If True, sends the orders’ **Ship To** information with the invoice export.
- **DSCO_SendSubtotal** - True or False. If True, enables exporting **Order Line Subtotal** with the invoice export.
- **DSCO_SendCreditPerQty** - Multiplied by the total quantity and added to the total of the order plus an entry in the credits array in the request.
- **DSCO_IntegrationName** - Can be set to DSW to have the **Order Source** on orders appear as DSW.
- **DSCO_MarkOrdersUnpaid** - True or False. If True, sets the order as **Unpaid**.
- **DSCO_LockShippingMethod** - True or False. If True, does not allow shipping methods on orders to be changed.
- **DSCO_IncludeWarehouseCodesInOrderImport** - True or False. If True, sets the Ship From warehouse with the order import and checks the setting **DSCO_WarehouseCodes** for the codes.
- **DSCO_ShippingRequiresThirdPartyBilling** - If True, the orders’ **ShippingRequiresThirdParty** will be set to True.
- **DSCO_AllowShippingUSPS** - True or False. If True, and **DSCO_ShippingRequiresThirdPartyBilling** is True, and the order's carrier is USPS, we will NOT set **ShippingRequiresThirdParty** to True.
- **DSCO_AllowShippingUPS** - True or False. If True, and **DSCO_ShippingRequiresThirdPartyBilling** is True, and the order's carrier is UPS, we will NOT set **ShippingRequiresThirdParty** to True.
- **DSCO_CreatePayments** - Type Boolean, defaults to True if missing. Determines if an order payment will be imported or not based on the setting value for the order channel. Defaults to **Website**, but can be changed by using the company setting **DSCO_IntegrationName**.
- **DSCO_CoopFeePercentage** - Defaults to 0. This is the [CoOp Fee](https://descartessystems.aha.io/pages/7630870791118971578) percentage to be applied when creating order items. 2.5 would denote 2.5% to be added to each order item's CoOp fee.

### Custom Order Columns

Create the following [Custom Order Columns](https://descartessystems.aha.io/pages/7630852553944422166):

- **DSCOInvoiceId** - The invoice number.
- **DSCOConsumerOrderNumber** - The imported consumer order number from DSCO is saved here.
- **DSCO_Coupons** - Imports the coupons here.
- **DSCO_Email** - Imports the shipping address email.
- **DSCO_Channel** - Saves the name of the order’s channel. Type string.

### Custom Product Columns

Create the following [Custom Product Columns](https://descartessystems.aha.io/pages/7630852553944422166): **Required Custom Product Columns**

- **DSCOItemID** - Conditionally required **String**. This should match the SKU of your listing. You can find it on the **Products** page in DSCO. If left empty for a product, that SKU will be skipped in the inventory update. However, if the custom setting **DSCO_DontSendItemID** is True, we will send the Sellercloud SKU instead.
- **DSCOSafetyQty** - Sets a [Safety Quantity](https://descartessystems.aha.io/pages/7630840614112309363) on the product level.
- **DSCOIsDiscontinued** - True or False, defaults to False. When set to True, exports the item with a **Discontinued** status.
- **DSCO_MerchantSKU** - Product identifiers used when sending a request to DSCO. If not present, the integration will use ProductIDs. Type string.

**Optional Custom Product Columns**

- **DSW_Enabled** – Optional, type **Boolean**. Used to enable only specific products for DSW. Set to True for any products you want to send with the Inventory Export plugin.
- **DSCOEXPECTEDDELIVERYDATE** - Used when the company setting **DSCOUseExpectedDeliveryDate** is enabled. Exports a date that's a week ahead when missing or disabled. Sellercloud will follow the entered date. If no date is entered, 7 days from the current date will be sent.
- **DSCOCost** - Sent when the company setting **DSCOSendCost** is set to True.
- **DSCOPartnerSKU** - If this column exists and is populated, it is sent as a partner SKU.

## Order Import

The Order Import plugin:

- Gets all new DSW orders from DSCO and imports them to Sellercloud via API.
- Imports orders as paid for the user **DSCO_<CompanyID>@sellercloud.com**.
- Acknowledges each order after it is created, so it will be moved to Shipment Pending in DSCO and will no longer be included in the new orders download.
- Checks for products by matching:
  - DSCO **SKU** to Sellercloud **UPC**
  - DSCO **SKU** to Sellercloud **Product ID**
  - DSCO **UPC** to Sellercloud **UPC**
  - DSCO **Item ID** to the Sellercloud custom column **DSCOItemID**
  - DSCO **Partner SKU** to **Sellercloud Product ID**

As of version 1.0.1.5, the plugin now supports both the **Stream API** and the old method to get orders. The only differences are a few custom settings and credentials. The old method will continue to be used by default, where only **DSCO_Token** is required, as long as the **Stream API** settings don't exist or aren't populated. If you need to reset the date, use the following **DSCO_StreamPosition**:

- Format: z/yyyy/mm/dd/HH/mm/000
- Example: z/2022/09/26/20/19/000

### Automate Order Import

To create a [Scheduled Task](https://descartessystems.aha.io/pages/7630838715868958891) that regularly imports DSW orders from DSCO to Sellercloud:

01. Navigate to **Settings** \> **Scheduled Tasks** \> **Manage Scheduled Tasks**.
02. Click the green + icon: **Create New Scheduled Task.**
03. Complete as follows:
    1. Click **Task Type** and select **Import Orders**.
    2. Set the **Task Name**.
    3. Select the **Company**.
    4. Select the **Start Time**.
04. Click **Create**, and the new **Scheduled Task** page will load on your screen.
05. Click the **Edit** button on the top right.
06. In the **Details** panel:
    1. Under **Create Orders for Company**, select your DSW company.
    2. Click the **Plugin** menu and select **DSCO API v3 Order Import**.
07. In the **Import Options** panel, set **Import From** to **None**.
08. In the **Frequency** panel, specify the task frequency. For optimal performance, select a range between thirty minutes and one hour.
09. In the **General** panel, click the **Enable** toggle button.
10. Click **Save** on the top right.

## Tracking Export

This plugin sends tracking information for DSW orders to DSCO via API. Before you move on, create a [Saved Search](https://descartessystems.aha.io/pages/7630838405969463824) for orders filtered by:

- **Company** – The company you created for the integration
- **Order Status** - InProcess or Completed
- **Payment Status** - Charged
- **Shipping Status** - Fully Shipped
- **Tracking Uploaded** - No

### Automate Tracking Export

To create a [Scheduled Task](https://descartessystems.aha.io/pages/7630838715868958891) that regularly exports order tracking from Sellercloud to DSW through DSCO:

01. Navigate to **Settings** \> **Scheduled Tasks** \> **Manage Scheduled Tasks**.
02. Click the green + icon: **Create New Scheduled Task.**
03. Complete as follows:
    1. Click **Task Type** and select **Export Orders**.
    2. Set the **Task Name**.
    3. Select the **Company**.
    4. Select the **Start Time**.
04. Click **Create**, and the new **Scheduled Task** page will load on your screen.
05. Click the **Edit** button on the top right.
06. In the **Details** panel:
    1. Click the **User ID** menu and select your ID.
    2. Click the **Saved Search** menu and select the saved search you created earlier.
    3. Click the **Export Via** menu and select **DSCO API v3 Tracking Order Export**.
    4. Check **This Is Tracking Export**.
07. In the **Export Options** panel, set **Export To** to **None**.
08. In the **Frequency** panel, specify the task frequency. For optimal performance, select a range between thirty minutes and one hour.
09. In the **General** panel, click the **Enable** toggle button.
10. Click **Save** on the top right.

## Invoice Export

This plugin creates invoices for DSW orders via API. It also saves the InvoiceID to a custom column.

The plugin can also process [Split Orders](https://descartessystems.aha.io/pages/7630852324897495961). Make sure the Saved Search only includes the parent order and that all the child orders are Fully Shipped. Contact [Sellercloud Support](https://descartessystems.aha.io/pages/7630831494839563427) for assistance.

Before you move on, create a [Saved Search](https://descartessystems.aha.io/pages/7630838405969463824) for orders filtered by:

- **Company** - The company you created for the integration
- **Shipping Status** - Fully Shipped
- **Order Status** - InProcess Or Completed
- **Invoice Uploaded** - No
- **Tracking Uploaded** - Yes

### Automate Invoice Export

To create a [Scheduled Task](https://descartessystems.aha.io/pages/7630838715868958891) that regularly exports invoices from Sellercloud to DSW through DSCO:

## Inventory Export

This plugin exports inventory to DSW through DSCO using API. However, note:

- Products must exist in DSCO in order to be exported.
- You can use the custom product column **DSCOSafetyQty** to set a [Safety Quantity](https://descartessystems.aha.io/pages/7630840614112309363) on the product level.
- **DSCOItemID** is conditionally required - if empty for a SKU, the SKU will be skipped in the update unless the custom setting **DSCO_DontSendItemID** is True. The **DSCOItemID** should match the SKU of your listing found on the DSCO **Products** page.

Prices are not included in inventory export updates.

Before you move on, create a [Saved Search](https://descartessystems.aha.io/pages/7630838405969463824) for products filtered by:

- **Company** – Select the company with products you want to sell on DSW. Without this filter, you will send products from all companies.
- **DSW_Enabled** – **True**. Only add this filter if you choose to enable only specific products for DSW.

Also, make sure to enable your products for DSW by setting their **DSW_Enabled** Custom Column for Products to **True**:

- For one product at a time: go to the [Product Details Page](https://descartessystems.aha.io/pages/7630846719601169819) \> click **Toolbox** and select **Custom Columns** \> click **Edit**, update the **DSW_Enabled** column, and **Save**.
- For multiple products in bulk: follow the steps to [Bulk Update Products](https://descartessystems.aha.io/pages/7630834039903362072) and use the **DSW_Enabled** column – set it to **True** for all products you want to enable.
