DocForgeDocForge
TemplatesUse casesGlossaryHow-toPricingDevelopers
Sign inStart free
DocForgeDocForge© 2026
PricingAboutTemplatesUse casesGlossaryHow-toDevelopersTermsPrivacyRefundsContact

DocForge is a product of Rev Vision Ltd, registered in England & Wales (Company No. 14368830). Registered office: 86–90 Paul Street, London, England, United Kingdom, EC2A 4NE.

How-to guides

How-to guide

How to create packing slips from orders

Turn order exports into packing slip PDFs that warehouse and fulfillment teams can use at handoff.

20 minute guide

What you'll need

Supplies

  • Order export CSV
  • Fulfillment labels and package details
  • Carrier or tracking references

Tools

  • DocForge
  • Order management export
  • Warehouse workflow

Steps

  1. 1

    Prepare one row per shipment

    Prepare the export around physical shipments, not orders. If one order splits into two boxes leaving on different days, create two rows so each package gets the correct slip. Use headers such as `packing_slip_number,order_number,recipient_name,ship_to,item_summary,package_count,carrier,tracking_reference,ship_date,packed_by`. For a split shipment, use values like `PS-10455-01` and `PS-10455-02` tied to the same `order_number`. Do not combine tracking references in one cell unless the warehouse process truly puts one slip on a master carton. A common error is leaving `tracking_reference` blank because labels are purchased after the order export. Fix the timing: export after labels exist, or use `{{ row.tracking_reference | default: 'See carrier portal' }}` so the slip remains readable. Preview a row with `package_count` greater than `1` and confirm the copy tells the packer whether the slip belongs in every box or only the lead package.

  2. 2

    Keep the template focused on fulfillment

    Keep the packing slip focused on what the packer and recipient need. Show `order_number`, `recipient_name`, `ship_to`, `item_summary`, `package_count`, `carrier`, `tracking_reference`, and `packed_by`. Remove prices, discounts, margin notes, fraud checks, and approval history unless the fulfillment team has a direct use for them at the bench. Use Liquid for operational clarity, not decoration: `{{ row.order_number }}` near the top, `{{ row.ship_date | date: '%B %-d, %Y' }}` near the shipping block, and `{% if row.handling_notes %}{{ row.handling_notes }}{% endif %}` near the item list. A common data issue is line breaks inside `item_summary` from ecommerce exports. Keep them only if the template is designed for multi-line text; otherwise replace them with semicolons before upload. Preview a row like `Replacement filter kit; 2 mounting brackets; printed return label` to make sure the item summary remains scannable on paper.

  3. 3

    Preview operational edge cases

    Preview the rows that stress the warehouse layout. Include a long `ship_to` address, a multi-package shipment, a replacement part order, and an order with a missing tracking reference. Use a real-looking tracking value such as `1Z999AA10123456789` and verify it does not wrap across two lines in a way that makes scanning or manual entry difficult. Check a row for `package_count` of `4`; the slip should clearly show whether the package is part of a set. If the template includes return instructions or quality-control notes, preview them with long text before batch generation. A common error is putting customer service comments into `handling_notes`, such as `Customer angry, expedite`, which should not print on a recipient-facing slip. Clean those fields before upload. If barcodes are part of the process, confirm the human-readable `tracking_reference` still appears. The person packing the order should be able to match items, address, carrier, and package count without opening another system.

  4. 4

    Generate slips for handoff

    Generate the packing slip batch as close to handoff as possible, after labels and package counts are final. Download the ZIP and sort or print by the field your team actually uses at the bench, usually `packing_slip_number` or `order_number`. Keep filenames operational, such as `PS-10455-02-ORDER-10455.pdf`, so a reprint request does not require opening every file. Store the output with the order record or shipment record, along with the source CSV. That makes later support checks straightforward: what was packed, who packed it, when it shipped, and which `tracking_reference` was used. A common mistake is generating slips before a carrier switch, then shipping with a different tracking number. If `carrier` changes from `GroundShip` to another service or the tracking value changes, regenerate that row and discard the old PDF. Spot-check the first ten printed slips for clipped addresses, missing item summaries, and page breaks before handing the stack to fulfillment.

Related templates

Packing slip PDF templateDelivery note PDF template