More Shipstation integrations(warehouses)

This commit is contained in:
2026-08-31 15:00:37 -05:00
parent 4c172c1fd5
commit 9651b82415
12 changed files with 337 additions and 139 deletions
+26 -13
View File
@@ -14,8 +14,17 @@ JIRA_URL=
JIRA_EMAIL=
# Create one at https://id.atlassian.com/manage-profile/security/api-tokens
JIRA_API_TOKEN=
# JQL used to pull "today's orders". Adjust to match how your team tags order tickets.
JIRA_JQL=project = AR AND created >= startOfDay() ORDER BY created ASC
# JQL used to pull orders. This is your real filter (23753)'s exact query,
# used directly rather than "filter = 23753" so it doesn't depend on that
# filter being shared/visible to whichever account the API token belongs
# to. The 4-day lookback is your holiday/weekend carryover buffer; the
# status restriction matches this app's ACTIVE_STATUSES/CANCELLED_STATUSES
# below. Tickets that move to a status outside Created/Cancelled (e.g.
# fulfilled) stop matching this query on their own - the app's re-check
# mechanism (see README) is what still catches that transition by ticket
# key regardless of status, so update this JQL and the status settings
# together if either one ever changes.
JIRA_JQL=project = "AR" AND created >= -4d AND (status = Created or status = Cancelled) ORDER BY created DESC, cf[10349] ASC
# Deliverable/SKU-bearing custom fields, per company (comma-separated field IDs)
JIRA_SIGNIFY_SKU_FIELDS=customfield_10573,customfield_10570
JIRA_OAKSTREET_SKU_FIELDS=customfield_12790,customfield_13021
@@ -25,9 +34,6 @@ JIRA_FIELD_NAME=customfield_10662
JIRA_FIELD_PHONE=customfield_10424
JIRA_FIELD_EMAIL=customfield_10544
JIRA_FIELD_ADDRESS1=customfield_10654
# Best guess pending confirmation - both "Address 1" and "Address 2" were
# listed with the same label, this assumes the second one is Address 2.
# Verify via double-click -> raw payload on a ticket that has both filled in.
JIRA_FIELD_ADDRESS2=customfield_10655
JIRA_FIELD_CITY=customfield_10480
JIRA_FIELD_STATE=customfield_10560
@@ -43,6 +49,10 @@ SHIPSTATION_API_KEY=
# needs to know which store to put it in; pulling tracking numbers doesn't).
SHIPSTATION_SIGNIFY_STORE_ID=se-221889
SHIPSTATION_OAKSTREET_STORE_ID=se-367672
# ShipStation needs to know where a package ships FROM. Find these in
# ShipStation under Settings > Shipping > Warehouses/Ship From Locations.
SHIPSTATION_SIGNIFY_WAREHOUSE_ID=se-180473
SHIPSTATION_OAKSTREET_WAREHOUSE_ID=se-437417
# --- Companies ---
# SKU prefix -> company. Add more "PREFIX:Company" pairs as you add companies.
@@ -52,17 +62,20 @@ COMPANY_SKU_MAP=SH:Signify Health,OK:Oak Street Health
TICKET_NUMBER_REGEX=\b[A-Z]{2,6}-\d{3,}\b
# --- Status Tracking ---
# Statuses where we stop re-checking a ticket on future imports (comma-separated).
# Defaults to Cancelled + both fulfilled statuses below, since none of those
# need to be re-checked once reached. Add more if your workflow gets other
# terminal statuses later.
JIRA_TERMINAL_STATUSES=Cancelled,Waiting For Return,Device Return Not Needed
# Statuses that get highlighted red in the table and trigger a popup when a
# ticket newly transitions into one (comma-separated).
# Statuses that count as real active work - shown on the Active Orders tab
# and re-checked on every import (comma-separated). Anything NOT in this
# list and NOT in CANCELLED_STATUSES below is treated as done and shown on
# the Done tab - including JIRA-side automation statuses this app was never
# explicitly told about (e.g. "1st Contact Attempt"), since they aren't
# "Created" or "Cancelled" either.
ACTIVE_STATUSES=Created
# Statuses that get their own Cancelled tab, highlighted red, and trigger a
# popup when a ticket newly transitions into one (comma-separated).
CANCELLED_STATUSES=Cancelled
# The two statuses your team uses at end-of-day close-out, depending on
# whether ShipStation's automation also generated a return label. Reaching
# either one moves a ticket to the Done tab and out of the active view.
# either one moves a ticket off Active Orders and into Done (since neither
# is in ACTIVE_STATUSES or CANCELLED_STATUSES above).
FULFILLED_STATUS_WITH_RETURN=Waiting For Return
FULFILLED_STATUS_WITHOUT_RETURN=Device Return Not Needed
# Daily intake cutoff (24h HH:MM). Tickets created after this time on their