Skip to content

Side effects & integrations

When you move a PO through its lifecycle, things happen automatically — Shopify gets updated, your supplier gets emailed, tags get applied, the audit log records every step. This page is the complete list. Use it when you’re trying to understand why something happened (or didn’t).

  • Inventory effects
  • Tag effects
  • Email effects
  • Background work
  • Constraint engine effects
  • Document effects
  • Audit effects
  • Things that don’t happen automatically
  • Reconciling drift
  • See also
WhenWhat
PO moves to SentShopify’s incoming inventory for the variants is pushed as the ordered quantity. (This is where “incoming” first appears in Shopify — not Confirmed.)
Lines confirmed (or PO transitions to Confirmed)Incoming is reconciled to confirmed − received − cancelled − rejected. If the supplier confirmed less, incoming goes down accordingly.
Receive ManuallyReceipt is recorded in Logistified. On-hand is not pushed unless Auto-sync to Shopify on receiving is enabled. Shopify incoming is reconciled when Auto-sync or manual Sync to Shopify runs.
Sync to Shopify after a manual receiveWarehouse receipts are pushed to Shopify on-hand and incoming is reconciled.
Quick Complete receiveConfirmed quantities are received, warehouse on-hand is pushed to Shopify, incoming is reconciled, and the PO is completed.
Cancel a POAny pending Shopify incoming for this PO’s lines is rolled back to zero.
Reopen Order (from Completed)Incoming is re-pushed for any outstanding pending units.
Merge or split lines into another POIncoming is recalculated for the affected source and target POs so Shopify reflects the lines’ new owner and quantities.

These pushes target Shopify’s incoming inventory field when incoming tracking is enabled. The visible result in Shopify is that “available” (= on hand + incoming) moves as soon as a PO is Sent. On-hand changes only when stock is received and pushed through Quick Complete, Auto-sync, or manual Sync to Shopify.

If updates don’t happen, run Incoming reconciliation.

Tag triggers on POs are operator-configured, not hard-coded. In Settings → Purchase Orders → Product Tags you define, per tag:

  • Apply statuses — which transitions cause the tag to be applied to the linked Shopify product (or variant).
  • Remove statuses — which transitions cause the tag to be removed.
  • Removal policy — “always remove” or “remove only when no other active PO holds this product.” The “protected” policy is what you want when a product can be on several POs at once and you don’t want a per-PO removal to strip the tag prematurely.

Typical defaults are “apply on Sent” and “remove on Completed / Cancelled,” but you can wire any status as a trigger.

WhenTag effect
Any transition with Apply statuses matchedTag applied to the product or variant in Shopify.
Any transition with Remove statuses matchedTag removed, subject to the removal policy.
Other transitionsNo tag change.

Useful when your storefront wants to display “shipping soon” badges on products with open POs, or when a 3PL integration keys off tags.

WhenEmail
PO moved to Sent via Send via LogistifiedSupplier email queued with the PO PDF (attachment uses the linked export template).
Email delivered / bounced / failedDelivery statusEmail delivery statusThe current state of an email Logistified sent — Queued, Sent, Delivered, Bounced, or Failed. Visible on the Emails card of the related order. Read more → updated on the Emails card.
Manual Re-Send Email from actions menuNew email queued; new row in the audit.
PO moved to Sent via Mark as Sent (Manual)No email sent.

The email template lives in Settings → Purchase Orders → Email Templates and supports per-supplier overrides — assign a specific template as default for a given supplier. The sender domain and signature come from Settings → Email Sending; supplier email sending is gated on those being configured. Manual Mark as Sent does not send email.

These happen invisibly after a transition:

  • Sync with companion apps. If you also use the Assemblified app, variants it manages are synced separately so the two apps stay aligned.
  • Audit log. Every state change adds an entry. The Log card shows them in order.
  • Local receipt records. Receiving updates Logistified first; Shopify is updated by Quick Complete, Auto-sync, or manual Sync to Shopify.
  • Merge and split reconciliation. When lines move between POs, Logistified refreshes the affected Shopify incoming quantities, product tags, and write-back metafields instead of treating the move as only a visual row change.
  • Write-back metafields. If you’ve configured PO → Shopify write-back rules, they fire on the trigger status you specified. Boolean write-back rules use TRUE and FALSE status lists and keep the Shopify value TRUE while another active PO still holds the same product or variant in a TRUE status.

If constraint rules are configured (Elevate plan):

  • Constraint evaluation refreshes badges and purchase-order hints. Evaluation does not change data.
  • Running the optimizer builds a preview plan. It does not change data.
  • Applying an optimizer plan updates Logistified PO quantities/additions in one confirmed apply request, then reevaluates constraints.
  • Apply does not send the PO, email the supplier, or push incoming inventory to Shopify by itself. Use the normal PO lifecycle action or Sync to Shopify for Shopify inventory updates.
  • Apply is allowed only for Draft and Sent POs and only for Elevate users.
  • Sending a PO generates the supplier PDF on demand and queues it as the email attachment. The PDF layout comes from the linked export template.
  • Printing labels generates the label PDF (or CSV/XLSX) on demand and downloads it to your browser.
  • Uploaded documents are saved alongside the PO and persist with it.

For very large POs (50+ lines), PDF generation can be slow. If you see a timeout, split the PO or print labels separately.

Every transition stamps:

  • A dated column on the PO header (Sent date, Confirmed date, Received date, etc.).
  • A log entry on the PO’s Log card.
  • The previous status, so undo and Reopen work cleanly.

This is the list of common surprises — actions you’d reasonably expect to be automatic but aren’t.

  • Credit application reversal on cancel. Cancelling a PO does not reverse applied credits. Unapply manually.
  • Receipt reversal on shipment cancel. Cancelling a shipment row doesn’t reverse received quantities on the lines. Edit the line directly.
  • Per-line tax override. Tax applies at the PO level. Workaround: split the PO when some lines need different tax treatment.
  • Auto-apply credits on PO creation. Available credits aren’t pre-applied — you choose when.
  • “Marked as paid” validation. The flag is operator-set; it doesn’t compare against the recorded payments total.
  • On-hand push on manual Receive. Without Auto-sync to Shopify on receiving enabled, Shopify on-hand changes only after you click Sync to Shopify (or use Quick Complete). Shopify incoming may also continue to show the earlier amount until that sync or an incoming reconciliation runs.

If you notice Shopify’s incoming doesn’t match what Logistified shows, run Incoming reconciliation. Drift is usually caused by a transient sync failure; the reconciliation flow catches and fixes it.