{"id":31832220,"url":"https://github.com/fostercommerce/shipstation-connect","last_synced_at":"2026-01-03T10:25:03.600Z","repository":{"id":33008515,"uuid":"147695443","full_name":"FosterCommerce/shipstation-connect","owner":"FosterCommerce","description":"A plugin for Craft Commerce 5 that integrates with ShipStation.","archived":false,"fork":false,"pushed_at":"2025-07-28T20:15:25.000Z","size":2608,"stargazers_count":7,"open_issues_count":1,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-10-07T16:37:43.190Z","etag":null,"topics":["craft-commerce","craft-commerce-plugin","craft-plugin","craftcms","shipstation"],"latest_commit_sha":null,"homepage":"https://plugins.craftcms.com/shipstationconnect","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FosterCommerce.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-09-06T15:34:10.000Z","updated_at":"2025-07-28T19:54:24.000Z","dependencies_parsed_at":"2025-07-22T16:15:44.781Z","dependency_job_id":"c97a9097-3007-4c24-876f-ca4099cc9012","html_url":"https://github.com/FosterCommerce/shipstation-connect","commit_stats":{"total_commits":108,"total_committers":11,"mean_commits":9.818181818181818,"dds":0.5462962962962963,"last_synced_commit":"c2c6a500e6cc39ef225a7a1320eb0ef4ddd3de71"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/FosterCommerce/shipstation-connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterCommerce%2Fshipstation-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterCommerce%2Fshipstation-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterCommerce%2Fshipstation-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterCommerce%2Fshipstation-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FosterCommerce","download_url":"https://codeload.github.com/FosterCommerce/shipstation-connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FosterCommerce%2Fshipstation-connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009179,"owners_count":26084555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["craft-commerce","craft-commerce-plugin","craft-plugin","craftcms","shipstation"],"created_at":"2025-10-11T22:59:47.849Z","updated_at":"2025-10-11T22:59:52.003Z","avatar_url":"https://github.com/FosterCommerce.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Header](resources/img/header.png)\n\n# ShipStation Connect for Craft Commerce\n\nA plugin for Craft Commerce that integrates with a ShipStation Custom Store.\n\n## Requirements\n\nThis plugin requires Craft CMS 5 and Commerce 5 or later\n\n## Installation\n\nInstall ShipStation Connect from the Plugin Store or with Composer\n\n### From the Plugin Store\n\nGo to the Plugin Store in your project’s Control Panel and search for\n“ShipStation Connect.” Click on the “Install” button in its modal window.\n\n### With Composer\n\nOpen your terminal (command line) and run the following commands:\n\n```bash\n# go to the project directory\ncd /path/to/my-project\n\n# tell Composer to load the plugin\ncomposer require fostercommerce/shipstationconnect\n\n# tell Craft to install the plugin\n./craft install/plugin shipstationconnect\n```\n\nAfter installing, go to the Craft control panel plugin settings page to\nconfigure the settings for the plugin.\n\n## Custom Store Configuration\n\nConfigure your connection in ShipStation following these instructions:\n[ShipStation \"Custom Store\" integration](https://help.shipstation.com/hc/en-us/articles/360025856192-Custom-Store-Development-Guide#UUID-685007d9-4cda-06f2-d2f6-011ab46805af_UUID-001f552d-4260-aeb0-8a23-0f6ff166e045).\n\n### Connect Your Craft Store to ShipStation\n\nThe \"URL to Custom XML Page\" is shown in the ShipStation Connect settings view\nin Craft.\n\n### Username/Password\n\nShipStation allows you to set a custom username and password combination for a\nconnected store. This combination should match the values stored in the\nShipStation Connnect settings view in your Craft control panel.\n\n**Note:** These are *not* your ShipStation credentials, nor your Craft user\ncredentials.\n\nAs of version 1.2.4, these values can be set with environment variables.\n![Username/Password variables](screenshots/username-password-env-values.png)\n\n#### Debugging Apache Authentication Errors\n\n\u003e The remote server returned an error\n\nIf you are seeing a 400 error (401 or 404 notably) and you're running on Apache.\nTry adding the following to your apache config.\n\n```\nCGIPassAuth On\nRewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n```\n\n### Order Statuses\n\nEnsure your shipping statuses in Craft Commerce and ShipStation match. You edit\neach platform to use custom statuses and ShipStation can match multiple Craft\nstatuses to a single ShipStation status, when needed.\n\n## Commerce Integration\n\n### Matrix Field\n\nShipStation Connect requires a Matrix Field for storing shipping information.\n\nThe matrix field should have a entry type with text fields for the following:\n\n- Carrier\n- Service\n- Tracking Number\n\n![Matrix Field configuration](screenshots/matrix-field.png)\n\nIn the ShipStation Connnect settings, select the matrix field, and enter the\nhandles for the entry type and text fields.\n\n![Shipping Info Matrix Field](screenshots/shipping-info-matrix-field.png)\n\nWhen a shipping notification is received for an order from ShipStation, the\nplugin will add the shipping information to the Shipping Information field on\nthe order and set the order to the Craft status paired with your ShipStation\nstores Shipped status.\n\n## Adding phone numbers to addresses sent to Shipstation\n\nAddresses are now part of Craft rather than Commerce, and the Phone number field was dropped from the address model. It\nis now necessary to add a custom field to the Address fields to store phone numbers.\n\nThe plugin setting gives you the option to set the field handle that you are using for phone numbers. The contents of\nthis field will then be sent to Shipstation within the address portions of the order data.\n\n## Custom Fields\n\nYou can customize the data that is sent to ShipStation by listening to the `OrderEvent` event in a custom module or\nplugin, and set the values that you want per field, similar to the following example:\n\n```php\nuse craft\\base\\Event;\nuse fostercommerce\\shipstationconnect\\models\\Order;\nuse fostercommerce\\shipstationconnect\\events\\OrderEvent;\nuse fostercommerce\\shipstationconnect\\services\\Xml;\n\nEvent::on(\n\tXml::class,\n\tXml::ORDER_EVENT,\n\tstatic function (OrderEvent $e) {\n\t  // The transformed order - This is the data that will be sent to ShipStation.\n\t\t$order = $e-\u003eorder;\n\t\t\n\t\t// The source Commerce Order that was used to create the transformed order.\n\t\t$commerceOrder = $order-\u003egetParent();\n\n\t\t// Use full order number for OrderNumber\n\t\t$order-\u003esetOrderNumber($commerceOrder-\u003enumber);\n\n\t\t// Set a custom field value\n\t\t$order-\u003esetCustomField1(Currency::formatAsCurrency($commerceOrder-\u003egetAdjustmentsTotal(), 'USD'));\n\n\t\t// Set internal notes\n\t\t$order-\u003esetInternalNotes('Custom Field 1: Adjustments Total');\n\t}\n);\n```\n\n`OrderEvent` properties:\n\n- `order` - The order that has been transformed into a format ready to be exported to ShipStation. \n\nIf you've changed the `OrderFieldEvent::FIELD_ORDER_NUMBER` field to be anything\nother than the order's reference number, you'll need to listen to the\n`OrdersController::FIND_ORDER_EVENT` to use your own query to fetch the order.\nIn the example above, we're changing it to be the order's ID, so we would need\nto fetch the order by ID:\n\n```php\nuse craft\\base\\Event;\nuse craft\\commerce\\elements\\Order as CommerceOrder;\nuse fostercommerce\\shipstationconnect\\controllers\\OrdersController;\nuse fostercommerce\\shipstationconnect\\events\\FindOrderEvent;\n\nEvent::on(\n    OrdersController::class,\n    OrdersController::FIND_ORDER_EVENT,\n    function (FindOrderEvent $e) {\n        // Set the order so that ShipStation Connect can update it's shipping details.\n        $this-\u003eorder = CommerceOrder::find()-\u003enumber($e-\u003eorderNumber)-\u003eone();\n    }\n);\n```\n\n`FindOrderEvent` properties:\n\n- `orderNumber` - The order number sent by ShipStation.\n- `order` - The order that will be updated with shipping information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffostercommerce%2Fshipstation-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffostercommerce%2Fshipstation-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffostercommerce%2Fshipstation-connect/lists"}