ShipStation Custom Store Development Guide

TABLE OF CONTENTS

  1. Introduction
    1. What is the Custom Store?
    2. How It Works
    3. Security
  2. Build Your Web Endpoint
    1. GET: Allow ShipStation to Pull Order Information
      1. Summary
      2. URL
      3. Paging
      4. Example
    2. POST: Allow ShipStation to Post Shipment Information When Orders Ship
      1. Summary
      2. URL
      3. Example
  3. Connect to ShipStation
    1. Adding a Custom Store as a Selling Channel within ShipStation
    2. Bringing Orders into ShipStation
    3. Send Shipping Notifications from ShipStation
  4. Appendix
    1. Order Information Field Definitions
    2. ShipStation's XML Schema for Validating Order Information
    3. Shipnotify Field Definitions

 CUSTOM STORE DEVELOPMENT GUIDE

  1. Introduction
    1. What is the Custom Store?
      The Custom Store allows the user to sync orders within ShipStation in a single click, and enables ShipStation to automatically send shipment status and tracking information updates back to your cart or marketplace once a label is created. It’s the best way to sync up orders with ShipStation and have the most seamless experience. The Custom Store functionality in ShipStation will be similar to popular supported integrations like eBay or Amazon.

      Please note that the Custom Store requires advanced development skills to set up. Many ShipStation customers with those skills have used this documentation to integrate their Custom Stores from start to finish. ShipStation's support for Custom Stores is limited, but if you do encounter errors during the set up process, our support team can provide additional insight so that you or your developer can take corrective action.
    2. How It Works
      To integrate with the Custom Store, you must expose a Web Endpoint that returns XML according to the format in this guide. The Web Endpoint will be used to handle two major requests:

      GET: Allows ShipStation to pull in order information from your Custom Store, including recipient address, products, customers, etc.
      POST: Allows ShipStation to post shipment information when an order is shipped, including shipping method, shipping status, tracking number, and more.

      When your Web Endpoint is ready, it can be connected to ShipStation's interface so that ShipStation can bring in order information and send back shipment information.
    3. Security
      ShipStation uses Basic HTTP Authentication when calling your Web Endpoint. You will need to validate the credentials on each request. When registering the Custom Store in the ShipStation application, you will be prompted to enter the username and password for your Web Endpoint. Although not required, it is recommended that you use SSL encryption for your Web Endpoint.
  2. Build Your Web Endpoint
    1. GET: Allow ShipStation to Pull Order Information
      1. Summary
        ShipStation will request order information from the Web Endpoint you expose. It must render XML that adheres to the specification defined in the following sections. 
      2. URL
        ShipStation will use the following URL format when requesting order information from the Web Endpoint you build:

        [Your Web Endpoint]?SS-UserName=[username]&SS-Password=[password]&action=export&start_date=[Start Date]&end_date=[End Date]&page=1

        Here is a description of each URL parameter:
        SS-Username The username specified when configuring the Custom Store.(Account Settings > Selling Channels > Store Setup)
        SS-Password The password specified when configuring the Custom Store.
        action This value will always be "export" when ShipStation is requesting order information.
        start_date The start date in UTC time. Format: MM/dd/yyyy HH:mm (24 hour notation). For example: 03/23/2012 21:09
        end_date The end date in UTC time. Same format as start_date.

        Your page should return data for any order that was modified between the start and end date, regardless of the order’s status. The order data should be returned in an XML format as shown in the following example. All free text fields should be enclosed in a CDATA section to ensure there aren’t any parsing errors. A CDATA section starts with "<![CDATA[" and ends with "]]>".
      3. Paging
        For stores with hundreds or thousands of orders per day, we recommend paging your results. To do this, simply choose the maximum number of records to return with each reply. Then include the total number of pages as an attribute in the root-level Orders element.

        On the first request to your endpoint, ShipStation will append a URL parameter called “page”. For example:

        https://www.yourstore.com/shipstationxml.php?action=export&start_date=01%2f23%2f2012+17%3a 28&end_date=01%2f23%2f2012+17%3a33&page=1

        If the Orders node indicates that there are additional pages, ShipStation will then request subsequent pages until all orders have been retrieved.
      4. Example
        Below is a sample of XML expected for order information. You can find detailed definitions of the fields below in the Appendix.
         
        <?xml version="1.0" encoding="utf-8"?>
        <Orders pages="1">
          <Order>
            <OrderID><![CDATA[123456]]></OrderID>
            <OrderNumber><![CDATA[ABC123]]></OrderNumber>
            <OrderDate>12/8/2011 21:56 PM</OrderDate>
            <OrderStatus><![CDATA[paid]]></OrderStatus>
            <LastModified>12/8/2011 12:56 PM</LastModified>
            <ShippingMethod><![CDATA[USPSPriorityMail]]></ShippingMethod>
            <PaymentMethod><![CDATA[Credit Card]]></PaymentMethod>
            <OrderTotal>123.45</OrderTotal>
            <TaxAmount>0.00</TaxAmount>
            <ShippingAmount>4.50</ShippingAmount>
            <CustomerNotes><![CDATA[Please make sure it gets here by Dec. 22nd!]]></CustomerNotes>
            <InternalNotes><![CDATA[Ship by December 18th via Priority Mail.]]></InternalNotes>
            <Gift>false</Gift>
            <GiftMessage></GiftMessage>
            <CustomField1></CustomField1>
            <CustomField2></CustomField2>
            <CustomField3></CustomField3>
            <Customer>
              <CustomerCode><![CDATA[customer@mystore.com]]></CustomerCode>
              <BillTo>
                <Name><![CDATA[The President]]></Name>
                <Company><![CDATA[US Govt]]></Company>
                <Phone><![CDATA[512-555-5555]]></Phone>
                <Email><![CDATA[customer@mystore.com]]></Email>
              </BillTo>
              <ShipTo>
                <Name><![CDATA[The President]]></Name>
                <Company><![CDATA[US Govt]]></Company>
                <Address1><![CDATA[1600 Pennsylvania Ave]]></Address1>
                <Address2></Address2>
                <City><![CDATA[Washington]]></City>
                <State><![CDATA[DC]]></State>
                <PostalCode><![CDATA[20500]]></PostalCode>
                <Country><![CDATA[US]]></Country>
                <Phone><![CDATA[512-555-5555]]></Phone>
              </ShipTo>
            </Customer>
            <Items>
              <Item>
                <SKU><![CDATA[FD88821]]></SKU>
                <Name><![CDATA[My Product Name]]></Name>
                <ImageUrl><![CDATA[http://www.mystore.com/products/12345.jpg]]></ImageUrl>
                <Weight>8</Weight>
                <WeightUnits>Ounces</WeightUnits>
                <Quantity>2</Quantity>
                <UnitPrice>13.99</UnitPrice>
                <Location><![CDATA[A1-B2]]></Location>
                <Options>
                  <Option>
                    <Name><![CDATA[Size]]></Name>
                    <Value><![CDATA[Large]]></Value>
                    <Weight>10</Weight>
                  </Option>
                  <Option>
                    <Name><![CDATA[Color]]></Name>
                    <Value><![CDATA[Green]]></Value>
                    <Weight>5</Weight>
                  </Option>
                </Options>
              </Item>
              <Item>
                <SKU></SKU>
                <Name><![CDATA[$10 OFF]]></Name>
                <Quantity>1</Quantity>
                <UnitPrice>-10.00</UnitPrice>
                <Adjustment>true</Adjustment>
              </Item>
            </Items>
          </Order>
        </Orders>
    2. POST: Allow ShipStation to Post Shipment Information When Orders Ship
      1. Summary
        ShipStation will contact your same Web Endpoint when an order is shipped so that your system can be notified that the order has been shipped. ShipStation will send an action of shipnotify when sending this notification. Your Web Endpoint should be able to determine when ShipStation is requesting order information(action=export) vs when it is sending a shipping notification (action=shipnotify).

        Your Web Endpoint should return a 200 (or 2xx) HTTP status code to indicate that the tracking information was received successfully.
      2. URL
        Here is an example URL: [Your Web Endpoint]?action=shipnotify&order_number=[Order Number] &carrier=[Carrier]&service=[Service]&tracking_number=[Tracking Number]

        For example:
        https://www.yourstore.com/shipstationxml.php?action=shipnotify&order_number=ABC123&carrier=USP S&service=USPS+Priority+Mail&tracking_number=9511343223432432432 Here is a description of each URL parameter:
        action The value will always be "shipnotify" when sending shipping notifications.
        order_number This is the order's unique identifier.
        carrier USPS
        UPS
        FedEx
        DHL
        Other
        DHLGlobalMail
        UPSMI
        BrokersWorldWide
        FedExInternationalMailService
        CanadaPost
        FedExCanada
        OnTrac
        Newgistics
        FirstMile
        Globegistics
        LoneStar
        Asendia
        RoyalMail
        APC
        AccessWorldwide
        AustraliaPost
        DHLCanada
        IMEX
        service This will be the name of the shipping service that was used to ship the order.
        tracking_number This is the tracking number for the package.
      3. Example
        Below is a sample of XML that can be expected for shipment notification. You can find detailed definitions of the fields below in the Appendix.

        <?xml version="1.0" encoding="utf-8"?>

        <ShipNotice>

          <OrderNumber>ABC123</OrderNumber>

          <OrderID>123456</OrderID>

          <CustomerCode>customer@mystore.com</CustomerCode>

          <CustomerNotes></CustomerNotes>

          <InternalNotes></InternalNotes>

          <NotesToCustomer></NotesToCustomer>

          <NotifyCustomer></NotifyCustomer>

          <LabelCreateDate>12/8/2011 12:56</LabelCreateDate>

          <ShipDate>12/8/2011</ShipDate>

          <Carrier>USPS</Carrier>

          <Service>Priority Mail</Service>

          <TrackingNumber>1Z909084330298430820</TrackingNumber>

          <ShippingCost>4.95</ShippingCost>

          <CustomField1></CustomField1>

          <CustomField2></CustomField2>

          <CustomField3></CustomField3>

          <Recipient>

            <Name>The President</Name>

            <Company>US Govt</Company>

            <Address1>1600 Pennsylvania Ave</Address1>

            <Address2></Address2>

            <City>Washington</City>

            <State>DC</State>

            <PostalCode>20500</PostalCode>

            <Country>US</Country>

          </Recipient>

          <Items>

            <Item>

              <SKU>FD88821</SKU>

              <Name>My Product Name</Name>

              <Quantity>2</Quantity>

              <LineItemID>25590</LineItemID>

            </Item>

          </Items>

        </ShipNotice> 

  3. Connect to ShipStation
    1. Adding a Custom Store as a Selling Channel within ShipStation
      You will register your Custom Store in the ShipStation application. To do this, click on your "Account Settings" (the gear icon in the top right), then "Selling Channels"  and "Store Setup" from the sidebar on the left. Click "+ Connect a Store or Marketplace" and choose the "Custom Store" option. You'll be presented with the following form:Once this form is completed, ShipStation will begin communicating with your Web Endpoint to obtain order information. The following is a description of each form field:
      Username This value will be passed to the Web Endpoint as a URL parameter.
      Password This value will be passed to the Web Endpoint as a URL parameter.
      URL to custom XML page This is the location of your Web Endpoint. HTTPS is recommended.
      Unpaid Status This is the name of a status in your system that indicates that an order is not yet paid and not yet ready to be shipped. Multiple statuses may be separated by a comma.
      Paid Status This is the name of a status in your system that indicates that an order is paid and ready to be shipped.
      Shipped Status This is the name of a status in your system that indicates that an order is shipped.
      Cancelled Status This is the name of a status in your system that indicates that an order is cancelled.
      On-Hold Status This is the name of a status in your system that indicates that an order is on hold.
    2. Bringing Orders into ShipStation
      ShipStation requests order information ('GET') from your Web Endpoint during ShipStation's store updates. ShipStation users can trigger store updates manually by hovering over the update icon and opting to update all or individual stores, as shown in the image below:

      Additionally, users can enable an auto-update feature so that ShipStation periodically update a store's orders. The auto-update frequency depends the user's history of manual updates and several other factors.
    3. Send Shipping Notifications from ShipStation
      By default, ShipStation posts shipment notifications ('POST') to your Web Endpoint whenever a shipping label is created in ShipStation. These notifications can even be delayed, if the user prefers. If the ShipStation user creates shipping labels outside of ShipStation, the user has access to a 'Mark as Shipped' action within ShipStation, which can also post shipment notifications to your Web Endpoint.
  4. Appendix
    1. Order Information Field Definitions
      Name XPath Required Max Allowed Type Length Description
      Orders Orders Yes 1 Container N/A Root node
      Order Orders/Order Yes Many Container N/A Container node for an individual order
      OrderID Orders/Order/OrderID  Yes 1 String N/A Unique identifier for an order. Not displayed to anyone.
      OrderNumber Orders/Order/OrderNumber Yes 1 String 1...50 User-visible order number. This value can be the same as the OrderID.
      OrderDate Orders/Order/OrderDate Yes   Date/time 16 The date the order was placed. UTC time. Format: MM/dd/yyyy HH:mm. Both 12 and 24 hour notation are allowed.
      OrderStatus Orders/Order/OrderStatus Yes 1 String 1...50 The status of the order in your system. You will be able to map this status to a ShipStation status when connecting your Web Endpoint as a Selling Channel within ShipStation.
      LastModified Orders/Order/LastModified Yes 1 Date/time 16 The last time the order was modified in your system. UTC time. Format: MM/dd/yyyy HH:mm
      ShippingMethod Orders/Order/ShippingMethod No 1 String 0...100 Recommended if you know the shipping method that will be used to ship the order. ShipStation can map your shipping methods to actual services.
      PaymentMethod Orders/Order/PaymentMethod No 1 String 0...50 Order payment method (e.g. PayPal, Check, Money Order)
      OrderTotal Orders/Order/OrderTotal Yes 1 Decimal 

      9,2 (Precision, Scale)

      Total amount of the order. (Nine total digits, up to 7 digits before the decimal point, and up to 2 after.)
      TaxAmount Orders/Order/TaxAmount No 1 Decimal 9,2 Tax amount, if any.
      ShippingAmount Orders/Order/ShippingAmount Yes 1 Decimal 9,2 Shipping amount.
      CustomerNotes Orders/Order/CustomerNotes No 1 String 0...1000 Notes left by the customer when placing the order.
      InternalNotes Orders/Order/InternalNotes  No 1 String 0...1000 Private notes that are only viewed by your company.
      Gift Orders/Order/Gift No 1 Bool   "true" if this order is a gift
      GiftMessage Orders/Order/GiftMessage No  1 String 0...1000 Contains the customer's gift message.
      CustomField1 Orders/Order/CustomField1 No 1 String 0...100 Custom field that will show up in ShipStation's Orders grid. Can also be used in the criteria for ShipStation's filters and automation rules.
      CustomField2 Orders/Order/CustomField2 No 1 String 0...100  Custom Field 2
      CustomField3 Orders/Order/CustomField3 No 1 String 0...100  Custom Field 3
      Source Orders/Order/Source No 1 String 0...50 Order source (e.g. eBay, US, Amazon, Buy.com)
      Customer Orders/Order/Customer  Yes 1 Container N/A Container node for the customer's information.
      CustomerCode Orders/Order/Customer/CustomerCode Yes 1 String 1...50 A unique identifier of the customer in your system. This is often a username or email address.
      BillTo Orders/Order/Customer/BillTo Yes 1 Container N/A Container node for the customer's billing information.
      Name Orders/Order/Customer/BillTo/Name Yes 1 String 1...100 The billing name.
      Company Orders/Order/Customer/BillTo/Company No 1 String 1...100 The billing company.
      Phone Orders/Order/Customer/BillTo/Phone No 1 String 0...50 The billing phone.
      Email Orders/Order/Customer/BillTo/Email No 1 String 0...100 Recommended so that ShipStation can notify the buyer when an order ships.
      ShipTo Orders/Order/Customer/ShipTo  Yes 1 Container N/A Container node for the customer's shipping information.
      Name Orders/Order/Customer/ShipTo/Name Yes 1 String 1...100 Recipient's name.
      Company Orders/Order/Customer/ShipTo/Company No 1 String 0...100 Recipient's company. 
      Address1 Orders/Order/Customer/ShipTo/Address1 Yes 1 String 1...200 Recipient's address line 1.
      Address2  Orders/Order/Customer/ShipTo/Address2 No String 1...200 Recipient's address line 2.
      City  Orders/Order/Customer/ShipTo/City Yes 1 String 1...100 Recipient's city.
      State  Orders/Order/Customer/ShipTo/State Yes 1 String 2...100 US and Canadian addresses require the 2 character state/territory code.
      PostalCode  Orders/Order/Customer/ShipTo/PostalCode Yes 1 String 0...50 Required for domestic addresses and many international addresses.
      Country Orders/Order/Customer/ShipTo/Country Yes 1 String 2 2-character ISO 3116-1 country code.
      Phone  Orders/Order/Customer/ShipTo/Phone No 1 String 0...50 Required in some cases (e.g. overnight or international shipping). No specific format.
      Items Orders/Order/Items Yes 1 Container   Container node for the order's items.
      Item Orders/Order/Items/Item No Many Container   Container node for an individual order line item.
      LineItemID  Orders/Order/Items/Item/LineItemID No 1 String 1...50 Unique identifier for the line item.
      SKU Orders/Order/Items/Item/SKU Yes 1 String 1...50 Unique identifier for the product that was ordered.
      Name  Orders/Order/Items/Item/Name Yes 1 String 1...200 Name of the product
      ImageUrl Orders/Order/Items/Item/ImageUrl No 1 String 0...500 URL for the product's image
      Weight  Orders/Order/Items/Item/Weight No 1 Decimal 9,2 Weight of a single line item.
      WeightUnits Orders/Order/Items/Item/WeightUnits No 1 Enum   Value should be one of the following: Pounds, Ounces, Grams
      Quantity  Orders/Order/Items/Item/Quantity Yes 1 Integer 1...99999 Quantity of items ordered.
      UnitPrice Orders/Order/Items/Item/UnitPrice Yes 1 Decimal 9,2 Price of a single item.
      Location  Orders/Order/Items/Item/Location No 1 String 0...100 Location of the product in the Warehouse
      Adjustment Orders/Order/Items/Item/Adjustment No 1 Bool   "true" if the line item represents a coupon, discount, or other adjustment. Note that any line item that is an adjustment must have a negative "UnitPrice" value. 
      Options  Orders/Order/Items/Item/Options No 1 Container   Container note for item options (e.g. color, size, etc.)
      Option  Orders/Order/Items/Item/Options/Option No 0...10 Container   Container node for an individual option value.
      Name  Orders/Order/Items/Item/Options/Option/Name Yes 1 String 1...100 The name of the option (e.g. Size).
      Value Orders/Order/Items/Item/Options/Option/Value Yes 1 String 1...100 The value of the option (e.g. XL).
      Weight Orders/Order/Items/Item/Options/Option/Weight No 1 Decimal 9 (with 2 decimal precision) If the option adds to the item weight, you may specify the additional weight here. This should be in the same units specified in WeightUnits. It should be the additional weight for a single quantity.
    2. ShipStation's XML Schema for Validating Order Information
      The Order XML will be validated against the following schema:

      <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

        <xs:element name="Orders">

          <xs:complexType>

            <xs:sequence>

              <xs:element name="Order" maxOccurs="unbounded" minOccurs="0">

                <xs:complexType>

                  <xs:all>

                    <xs:element type="String50" name="OrderID" minOccurs="0"/>

                    <xs:element type="String50" name="OrderNumber"/>

                    <xs:element type="DateTime" name="OrderDate"/>

                    <xs:element type="String50" name="OrderStatus"/>

                    <xs:element type="DateTime" name="LastModified"/>

                    <xs:element type="String100" name="ShippingMethod" minOccurs="0"/>

                    <xs:element type="String50" name="PaymentMethod" minOccurs="0"/>

                    <xs:element type="xs:float" name="OrderTotal"/>

                    <xs:element type="xs:float" name="TaxAmount" minOccurs="0"/>

                    <xs:element type="xs:float" name="ShippingAmount" minOccurs="0"/>

                    <xs:element type="String1000" name="CustomerNotes" minOccurs="0"/>

                    <xs:element type="String1000" name="InternalNotes" minOccurs="0"/>

                    <xs:element type="xs:boolean" name="Gift" minOccurs="0"/>

                    <xs:element type="String1000" name="GiftMessage" minOccurs="0"/>

                    <xs:element type="String100" name="CustomField1" minOccurs="0"/>

                    <xs:element type="String100" name="CustomField2" minOccurs="0"/>

                    <xs:element type="String100" name="CustomField3" minOccurs="0"/>

                    <xs:element type="String100" name="RequestedWarehouse" minOccurs="0"/>

                    <xs:element type="String50" name="Source" minOccurs="0" />

                    <xs:element name="Customer">

                      <xs:complexType>

                        <xs:all>

                          <xs:element type="String100" name="CustomerCode"/>

                          <xs:element name="BillTo">

                            <xs:complexType>

                              <xs:all>

                                 <xs:element type="String100" name="Name"/>

                                 <xs:element type="String100" name="Company" minOccurs="0"/>

                                 <xs:element type="String50" name="Phone" minOccurs="0"/>

                                 <xs:element type="Email" name="Email" minOccurs="0"/>

                                  <xs:element type="String200" name="Address1" minOccurs="0"/>

                                 <xs:element type="String200" name="Address2" minOccurs="0"/>

                                 <xs:element type="String100" name="City" minOccurs="0"/>

                                 <xs:element type="String100" name="State" minOccurs="0"/>

                                 <xs:element type="String50" name="PostalCode" minOccurs="0"/>

      <xs:element type="StringExactly2" name="Country" minOccurs="0"/>

                              </xs:all>

                            </xs:complexType>

                          </xs:element>

                          <xs:element name="ShipTo">

                            <xs:complexType>

                              <xs:all>

                                <xs:element type="String100" name="Name"/>

                                <xs:element type="String100" name="Company" minOccurs="0"/>

                                <xs:element type="String200" name="Address1"/>

                                <xs:element type="String200" name="Address2" minOccurs="0"/>

                                <xs:element type="String100" name="City"/>

                                <xs:element type="String100" name="State" minOccurs="0"/>

                                <xs:element type="String50" name="PostalCode" minOccurs="1"/>

                                <xs:element type="StringExactly2" name="Country"/>

                                <xs:element type="String50" name="Phone" minOccurs="0"/>

                              </xs:all>

                            </xs:complexType>

                          </xs:element>

                        </xs:all>

                      </xs:complexType>

                    </xs:element>

                    <xs:element name="Items">

                      <xs:complexType>

                        <xs:sequence>

                          <xs:element name="Item" maxOccurs="unbounded" minOccurs="0">

                            <xs:complexType>

                              <xs:all>

                                <xs:element type="String50" name="LineItemID" minOccurs="0"/>

                                <xs:element type="String100" name="SKU"/>

                                <xs:element type="String200" name="Name"/>

                                <xs:element type="xs:boolean" name="Adjustment" minOccurs="0"/>

                                <xs:element type="xs:anyURI" name="ImageUrl" minOccurs="0"/>

                                <xs:element type="xs:float" name="Weight" minOccurs="0"/>

                                <xs:element name="WeightUnits" minOccurs="0">

                                  <xs:simpleType>

                                    <xs:restriction base="xs:string">

                                      <xs:pattern value="|pound|pounds|lb|lbs|gram|grams|gm|oz|ounces|Pound|Pounds|Lb|Lbs|Gram|Grams|Gm|Oz|Ounces|POUND|POUNDS|LB|LBS|GRAM|GRAMS|GM|OZ|OUNCES"/>

                                    </xs:restriction>

                                  </xs:simpleType>

                                </xs:element>

                                <xs:element type="xs:int" name="Quantity"/>

                                <xs:element type="xs:float" name="UnitPrice"/>

                                <xs:element type="String100" name="Location" minOccurs="0"/>

                                <xs:element name="Options" minOccurs="0">

                                  <xs:complexType>

                                    <xs:sequence>

                                      <xs:element name="Option" maxOccurs="100" minOccurs="0">

                                        <xs:complexType>

                                          <xs:all>

                                            <xs:element type="String100" name="Name"/>

                                            <xs:element type="String100" name="Value"/>

                                            <xs:element type="xs:float" name="Weight" minOccurs="0"/>

                                          </xs:all>

                                        </xs:complexType>

                                      </xs:element>

                                    </xs:sequence>

                                  </xs:complexType>

                                </xs:element>

                              </xs:all>

                            </xs:complexType>

                          </xs:element>

                        </xs:sequence>

                      </xs:complexType>

                    </xs:element>

                  </xs:all>

                </xs:complexType>

              </xs:element>

            </xs:sequence>

            <xs:attribute type="xs:short" name="pages"/>

          </xs:complexType>

        </xs:element>

        <xs:simpleType name="DateTime">

          <xs:restriction base="xs:string">

            <xs:pattern value="[0-9][0-9]?/[0-9][0-9]?/[0-9][0-9][0-9]?[0-9]? [0-9][0-9]?:[0-9][0-9]?:?[0-9]?[0-9]?. ?[aApP]?[mM]?"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="Email">

          <xs:restriction base="xs:string">

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="StringExactly2">

          <xs:restriction base="xs:string">

            <xs:minLength value="2"/>

            <xs:maxLength value="2"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="String30">

          <xs:restriction base="xs:string">

            <xs:maxLength value="30"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="String50">

          <xs:restriction base="xs:string">

            <xs:maxLength value="50"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="String100">

          <xs:restriction base="xs:string">

            <xs:maxLength value="100"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="String200">

          <xs:restriction base="xs:string">

            <xs:maxLength value="200"/>

          </xs:restriction>

        </xs:simpleType>

        <xs:simpleType name="String1000">

          <xs:restriction base="xs:string">

            <xs:maxLength value="1000"/>

          </xs:restriction>

        </xs:simpleType>

      </xs:schema>

    3. Shipnotify Field Definitions
      Name XPath Required Max Allowed Type Length Description
      ShipNotice ShipNotice Yes 1 Container N/A Root Node
      OrderID ShipNotice/OrderID Yes 1 String 1...50 Unique identifier for an order
      Order Number ShipNotice/OrderNumber Yes 1 String 1...50 User-visible order identifier.
      CustomerCode ShipNotice/CustomerCode Yes 1 String 1...50 A unique identifier of the customer in your system. This is often a username or email address.
      CustomerNotes ShipNotice/CustomerNotes No 1 String 0...1000 Notes left by the customer when placing the order.
      InternalNotes ShipNotice/InternalNotes No 1 String 0...1000 Private notes that are only viewed by your company.
      NotesToCustomer ShipNotice/NotesToCustomer No 1 String 0...1000 Public notes to be communicated to the customer.
      NotifyCustomer ShipNotice/NotifyCustomer Yes 1 Bool   If ShipStation send the customer a shipment notification email, this value will be "false".
      LabelCreateDate ShipNotice/LabelCreateDate Yes 1 Date/time   The date the shipping label was created. UTC time. Format: MM/dd/yyyy HH:MM.
      ShipDate ShipNotice/ShipDate Yes 1 Date   The date the package will be shipped.
      Carrier ShipNotice/Carrier Yes 1 String 0...50 The shipping carrier used (USPS, UPS, FedEx)
      Service ShipNotice/Service Yes 1 String 0...50 The shipping service used.
      TrackingNumber ShipNotice/TrackingNumber No 1 String 0...50 The package's tracking number.
      ShippingCost ShipNotice/ShippingCost Yes 1 Decimal 9,2 The cost to ship the package.

      Recipient

      ShipNotice/Recipient Yes 1 Container N/A Container node for the recipient's address.
      Name ShipNotice/Recipient/Name Yes 1 String 1...100 Recipient's name.
      Company ShipNotice/Recipient/Company No 1 String 0...100 Recipient's company.
      Address1 ShipNotice/Recipient/Address1 Yes 1 String 1...200 Recipient's address line 1.
      Address2 ShipNotice/Recipient/Address2 No 1 String 1...200 Recipient's address line 2.
      City ShipNotice/Recipient/City Yes 1 String 0...100 Recipient's city.
      State ShipNotice/Recipient/State Yes 1 String   US and Canadian addresses require the 2 character state/territory code.
      PostalCode ShipNotice/Recipient/PostalCode No 1 String 0...50 Required for domestic addresses and many international addresses.
      Country ShipNotice/Recipient/Country Yes 1 String 2 2-character country code.
      Items ShipNotice/Items No 1 Container   Container node for the shipment's items.
      Item ShipNotice/Items/Item No Many Container   Container node for an individual shipment line item.
      LineItemID ShipNotice/Items/Item/LineItemID No 1 String 1...50 Unique identifier for the line item.
      SKU ShipNotice/Items/Item/SKU Yes 1 String 1...100 Unique identifier for the product that was shipped.
      Name ShipNotice/Items/Item/Name Yes 1 String 1...200 Name of the product.
      Quantity ShipNotice/Items/Item/Quantity Yes 1 Integer 1...99999 Quantity of items shipped.
Was this article helpful?
2 out of 2 found this helpful
Have more questions? Submit a request