Changelog

What’s new in Shipnest

April 2026

219 updates

Monday, April 27

1 update
  • emailPostmark provider + automatic fallback behind EmailProvider

Sunday, April 26

2 updates
  • Add /demo entry route — one-click demo workspace from any URL
  • Legal docsGDPR + CCPA + Shopify App Store full coverage

Saturday, April 25

10 updates
  • Order detailsurface SET_CARRIER, SET_PACKAGE, SET_PAPERLESS hints
  • Order detailsurface rule hints in CustomsForm + RateShopPanel
  • /guidereal-world automation recipes + refresh existing sections
  • Rulesderived "lane" field + testRule accepts # prefix
  • testRuleaccept orderNumber + return discriminated union
  • Rules"Apply to existing orders" backfill button
  • Customsauto-fill HS code + origin from Product catalog per SKU
  • Rulesadd SET_HAZMAT, SET_NON_DELIVERY, SET_SIGNER_NAME
  • Ruleswire SET_CARRIER + SET_PACKAGE hints in buyLabelForOrder
  • Customers hubmerge Address book in as a tab, close sidebar gap

Friday, April 24

37 updates
  • Scan stationunify Print / Pick / Handover into one /scan page
  • Public pageslogo on /status + /docs, /guide visual redesign
  • Public /guide — comprehensive user-facing app documentation
  • DDP-on-PLATFORM gaterefuse sender-paid duties on operator carrier accounts
  • Platform carrier auto-provisioning — operator's UPS/FedEx rates flow to every tenant
  • Shopify GDPR compliance webhooksdata request + customer redact + shop redact
  • Shopify Carrier Serviceopt-in toggle per store, not auto on install
  • AddressValidatorwire /api/address/validate for live DPV verification
  • Three quick wins vs ShipStationcarbon footprint, ship-by deadlines, live address verification
  • Multi-currency visibilitysettings hint, landing tile, FAQ entry
  • Multi-currency Plan Astop summing across currencies, remove USD default
  • Etsy + eBayservice-name maps, eBay requestedService/Name swap fix
  • Etsywire opts.since → min_last_modified so cron pulls delta-filter
  • Public APIPOST /api/orders for headless-commerce / ERP push
  • Public APIGET /api/orders, GET /api/orders/:id, GET /api/carrier-accounts
  • Public APIBearer auth for POST /api/labels + landing/docs truthful
  • Public REST APIvoid label, list + get shipments. /track surfaces refunds.
  • Handover scan'Session feed' becomes per-date 'Scanned today' (org-wide)
  • Dashboard 'Connect a channel' prompt: source from STORE_META, not hardcoded top-3
  • Shopify'Migrate tokens' button for legacy non-expiring installs
  • Shopify webhook re-registerrefresh the expired access token first
  • Shopify webhook registrationaudit per-topic result + manual re-register
  • Rate-shop caching — 30s LRU collapses checkout-polling spam
  • Dunning flow — 14-day grace + day-3/7/14 email cascade + label-buy lock
  • DPA + sub-processors registry for enterprise procurement
  • Tenant 2FA — functional TOTP enrollment for regular users
  • Public status page — /status + /api/status.json
  • ShipStation import preset — auto-map columns + oz→g conversion
  • Public API reference + Bearer auth on rates + tracking endpoints
  • 14-day trial of paid plans via Stripe Checkout
  • Branded tracking + returns portal — per-tenant logo, color, contact
  • SET_NEAREST_WAREHOUSE rule action — route imports by postal-code prefix
  • IOSS / UK-NI tax compliance — customs pre-clearance for EU + GB lanes
  • Outbound webhook dispatch + delivery log
  • Voids & refunds report: per-carrier breakdown + past-window rejections
  • Insurance claims UIfile from shipment detail + third-party policy path
  • Void-window pre-flightreject past-window voids with a concrete reason

Thursday, April 23

53 updates
  • GDPR account deletionOWNER-only org erasure with blast-radius preview
  • Address pre-flightshare validator between UI + buyLabelForOrder
  • Weight + dim limitspre-validate before the carrier rejects
  • Productsbulk Link stock action on multi-select
  • Dashboardhide channels the operator hasn't configured
  • Insurancelive providers, policy persistence, shipment card
  • Handover scanpersistent history + CSV export
  • Handover scan pt 2list column, dashboard card, manifest filter
  • Handover scanphysical checkpoint between print and carrier
  • quoteOrder + buyLabelForOrderfall back to default warehouse
  • quoteOrderfilter malformed quotes before persisting
  • Order detailpaperless-setup nudge for international orders
  • Signature uploadcontent validation + failure banner
  • Customs settingsspell out signature format + size requirements
  • FedEx ETD auto-upload + topbar menu + clearer enrolment notes
  • Shipment detailsurface options, customs, applied rule hints
  • RulesSET_INCOTERM, billing, HS code, paperless + friends
  • Customs auditadapter shapes, save race, PDF preview
  • Customs declarationscurrency-aware, persisted, paperless-ready
  • Carrier optionsfix audit loss, RM/USPS rate-shop filter, docs drift
  • Carrier optionsincoterms, third-party billing, signature levels
  • Order detaileditable per-item weight
  • Batch shiprow selection + per-selection Quote/Buy/Print
  • Order detailpick the ship-from warehouse, fall back to org default
  • Surface rate-shop warnings so missing carriers explain themselves
  • USPS + EasyPostfriendly service names; EasyPost passes linked carrier accounts
  • FedExpopulate estDeliveryDays from transitTime enum + service fallback
  • UPS ratesenable negotiated pricing, restore service names + transit days
  • Centralise Prisma Json-column casts via lib/prisma-json.ts
  • Rulescase-insensitive text ops + placedAt/orderAgeHours fields
  • Rulesadd STATUS_CHANGED + TAG_ADDED triggers
  • Rules listswap the sidebar+detail layout for a DataTable
  • Rulesaudit rule.hint_overwritten when a later rule clobbers state
  • buyLabelForOrderactually consume rule hints
  • Rulesunify fields/operators/actions in a single registry
  • Rulesper-rule try/catch + rule.failed audit + snapshot/restore
  • Rulesgate replays via AuditLog rule.matched, exempt MANUAL
  • Rulesseed OrderTag catalogue on ADD_TAG
  • Update remaining BulkTagDialog callers to the new API
  • Order detailpick tags from the shared org catalogue
  • Always expose Packages card on shipment detail, collapsed when single
  • Stabilize Tags column layout in the orders list
  • Responsive fixes for ParcelsEditor
  • Terminal-order read-only treatmentbanner + hide dead cards
  • Kill dead UX surfaces in shipping components
  • Dedup orders/shipments primitiveslabels, AddressBlock, Dialog
  • Portal the tag-color picker so it escapes table overflow clipping
  • Replace demo notifications with real-activity feed
  • Per-tag colors24-swatch palette, hash default, click-to-pick override
  • Fix pixelated product thumbnailsDPR-aware srcSet + CDN URL rewrites
  • Sync table preferences across devices via TablePreference rows
  • Add product thumbnail column (visible on products, optional elsewhere)
  • Order detailshow platform icon next to source channel badge

Wednesday, April 22

48 updates
  • Fix /admin/sign-ins crashDataTable needs a client wrapper
  • FixRateShopPanel Toggle renders as two overlapping blobs
  • persistNormalizedOrderadopt orphaned orders after store reconnect
  • Live-feel updatesAutoRefresh polling on orders/dashboard/shipments
  • Ordersdenormalize source channel + revalidate on webhook
  • Shopify OAuthsend expiring=1 on token exchange + refresh
  • Shopify testConnectionshow Shopify's raw response, not our guess
  • testStoreConnectionecho persisted creds shape on failure
  • Fix buildcreds.ts is \"use server\" — no non-async exports
  • Shopify testConnectionsurface the real 403 body + detect PCD
  • Shopifyhandle Token Rotation (expiring offline tokens)
  • App shellwire topbar + sidebar to real session/org/plan
  • Update CLAUDE.md for Stripe billing, admin billing/print-jobs, Shopify PCD
  • Shopifyfriendly PCD error + setup-guide note
  • syncStoreNownever throw — return { ok:false, error } instead
  • syncStoreNowdefensive per-order error handling + failure surfacing
  • Shopify syncwiden filter, auto-register webhooks, add Sync now
  • Fix buildwiden Plan unions for Plan.PRO across admin surface
  • Stripe phase Csignup → Checkout, billing rebuild, landing prices
  • Stripe phase Bplan-limit enforcement
  • Stripe phase Aschema, client, Checkout + Portal + webhook
  • Signup pagecentered layout with sticky header
  • Fix buildpersist labelUrl on ShipmentPiece + use it on print fallback
  • Fix buildOrganization missing PrintJob back-relation + pdfkit bundler
  • PrintNode phase 3PrintJob table, packing-slip auto-print, retry
  • PrintNode phase 2warehouse routing, test print, history card
  • PrintNode cloud-print integration (phase 1)
  • Webhooksshort-code status mapping, NaN guard, wider retry window
  • Rates / labelssurface errors + fix EASYPOST enum + HTTP status codes
  • Public contact form at /contact → info@shipnest.app
  • Update CLAUDE.md for marketing, SEO, legal and cookie work
  • Legal packageprivacy, terms, cookies + GDPR banner
  • Full SEO + AI-discoverability package for the marketing site
  • Store adapters polishvalidation + descriptive errors
  • eBayOAuth authorization-code install
  • Etsyzero-field PKCE OAuth install
  • Amazonone-click Seller Central OAuth install
  • Fix buildEASYPOST missing from packaging map
  • Carrier Connect polishinline validation + descriptive errors
  • EasyPostfirst-class carrier (was registered but not connectable)
  • USPSzero-field one-click OAuth install
  • UPSone-click OAuth install (authorization_code)
  • Carrier Connect dialogproduction default + help panels
  • Add /admin/setup-guide with per-integration credential recipes
  • Amazon product syncReports API for fetch, Listings PATCH for push
  • eBay stock sync via sell.inventory scope + amazon sync-gap note
  • Fix Magento connect bug + product sync for Squarespace / Magento
  • Gate tenant integrations by operator env config

Tuesday, April 21

67 updates
  • Clean up Etsy / eBay / BigCommerce adapters + UI
  • Amazonmulti-marketplace per store + platform LWA creds
  • Fix DHL/EasyPost + one-click install for Shopify & WooCommerce
  • Real brand logos in tables + dismissible filters + inline tag edits
  • Require TOTP for every admin
  • Expand /adminimpersonation, search, health, broadcasts, analytics
  • Enforce User.disabled at sign-in + on every server request
  • Fix dark-mode contrast and washed-out tinted surfaces
  • Add operator admin panel at /admin
  • Add nightly demo-reset cron
  • Wire up topbar Create menu and Sparkles button
  • Add one-click demo login
  • Gate demo data behind Organization.isDemo
  • Add Shipnest favicon matching sidebar brand mark
  • Add brand marks for carriers and sales channels
  • Email template editor + NOTIFY rule wiring
  • Catalog syncadd Shipnest → channel push (Shopify, Woo)
  • Inventorycross-channel broadcast on every sale / void
  • Fix buildmove nextRun out of "use server" module
  • Dashboardreal KPIs, spark chart, ready-to-ship list, channel prompt
  • Onboarding + full /settings rebuild
  • Analyticsreal metrics from shipment data
  • Reportsreal scheduled CSV exports with email + download
  • Importsreal CSV ingest for orders + products
  • Claimsreal CRUD + status machine + evidence manager
  • Returnsreal RMA flow — detail page, status machine, portal
  • Manifestsreal CRUD with auto-include + warehouse resolution
  • Pickupsfirst-class Pickup model + real scheduling UI
  • Warehousesreal CRUD + country-aware editor + monthly count
  • Inventoryreal on-hand / committed / available + adjust flows
  • Catalog syncoptional pull from connected channels
  • Productsstock-shared aliases ("link to master SKU")
  • Products + Bundlesreal CRUD, detail page, bundle editor
  • Address bookreal CRUD on a dedicated AddressBookEntry model
  • Customersdetail page, CRUD actions, add dialog, bulk tag
  • Rate calculatorcountry-aware fields + warehouse preset
  • Scan-to-printreal order / shipment resolution + ship-on-scan
  • Carriersmanage actions + markup editor + platform toggle
  • Integrationsreal connect / manage UI
  • Rulesclose audit findings
  • Batchwire to real quote + buy actions
  • Shipments auditclose bugs and gaps end-to-end
  • Ordersclose the 4 remaining detail-page gaps
  • Orders auditclose bugs and gaps end-to-end
  • Country-aware address fields
  • Add package-lock.json for reproducible installs
  • Gate /(app)/* behind NextAuth; plan picker on signup
  • Rebrand Shipwise → Shipnest; shipwise.app → shipnest.app; app URL my.shipnest.app
  • Fix Prisma Json → typed cast in rules pages (must go via unknown)
  • Automationsclose every gap end-to-end
  • Finish /api/health rewrite (first commit missed the file write)
  • Make /api/health + start command resilient so Railway health probe passes
  • Swap prisma migrate deploy → prisma db push for first-time deploy
  • Fix mixed ??/|| syntax error in normalizeParcels weight default
  • Fix decryptJson default generic so creds are typed without casts
  • Fix Order detail TSmerge AddressValidator suggestion into setShipTo
  • Fix Next 15 breaking changeparams is a Promise
  • Fix env modelplatform vs per-org. Webhook secrets per-store.
  • Add CLAUDE.md — codebase guide for future Claude Code sessions
  • Close tier-2 gapsstock sync, refund webhooks, auto-disable, idempotency, return labels, concurrency-safe upsert
  • Use persistNormalizedOrder in POST /api/orders/sync too
  • Close every channel gapimages, line-item IDs, gift/notes, customer address, billing address, real mark-fulfilled on 8 channels
  • Close every carrier / multi-piece gappieces[] end-to-end + persisted
  • Wire carrier adapters end-to-endreal packaging, real multi-piece, real rate-shop UI, test-connection, Connect-carrier dialog
  • De-hardcode lists, add 2 channels, aggregator, claims, real TOTP, SSO, sidebar collapse, mobile nav, g+key nav, marketing mix
  • Add auth, onboarding, 3 channels, insurance, imports, reports, UX polish
  • Close ShipStation feature gapsPDFs, email, inventory, multi-piece, bundles, hazmat, custom fields, manifests, 2FA, RBAC, cron

Monday, April 20

1 update
  • Ship full ShipStation feature setorder flow, batch, scan, portals, settings