How it works

From forwarded email to Shopify draft order - every step.

AI extraction, layered matching, and Shopify-native output. No templates, no mapping project, live on real orders within an afternoon.

The full flow

Receive → forward → extract → match → draft

Every wholesale order runs through the same five stages. Total time: 1-5 minutes from forward to draft in your Shopify admin.

  1. 01
    Receive

    Your wholesale customer sends a purchase order by email - PDF attachment, Excel/CSV, or plain text in the email body. Any layout, any format.

  2. 02
    Forward

    You forward the email to your dedicated LevelOps address. Set up auto-forwarding once in Gmail, Outlook, or Gorgias and it stays hands-free.

  3. 03
    Extract

    AI reads the document: SKUs, item descriptions, quantities, PO number, shipping address, customer info, and payment terms - no templates, no field mapping.

  4. 04
    Match

    Line items are matched to your Shopify catalog (SKU exact match, semantic fallback). Sender email resolves to a Shopify B2B customer. Address matched to a company location.

  5. 05
    Draft order

    A Shopify draft order is created in 1-5 minutes with the right customer, pricing (always from Shopify), and shipping address. Email alert lands with a direct link.

What you can send in

PDF

Any layout, any PO format - scans, digital exports, forwarded threads with attachments.

Email body

Order details written directly in the email text - no attachment needed.

Excel / CSV

Spreadsheet exports with any column structure - AI figures out the columns.

Word / DOC

Word documents (.doc, .docx) with the PO written as text or in a table.

HTML

HTML order emails and web-exported POs - tables and inline content parsed the same way.

Plain text (TXT)

Plain-text order lists - pasted, exported, or attached. Any structure.

No templates

Works with whatever your customers send. No mapping project, no per-customer config.

Setup, step by step

From App Store install to your first automated draft

No coding, no external dashboards. Under 5 minutes to your first draft order, one filter rule to automate every one after.

  1. 1

    Install from the Shopify App Store

    Search 'LevelOps PDF to Order' in the Shopify App Store, click Install, and confirm permissions. The app is embedded in your Shopify admin - no external logins, no separate dashboard.

    Note: Your first 5 successful draft orders are free. No credit card required to install or test.

  2. 2

    Find your dedicated forwarding address

    Go to Shopify Admin → Apps → LevelOps PDF to Order. Your unique forwarding address is shown on the welcome screen with a Copy button.

    your-store-name@levelops.co

    Note: Don't see it yet? The address takes a few minutes to generate while we import your product catalog. Refresh after 2-3 minutes.

  3. 3

    Forward your first purchase order

    Forward any customer PO to your LevelOps address. PDF attachment, Excel/CSV file, or order details in the email body - all work identically. No templates, no field mapping required.

    Note: One order per email. Each forwarded email must contain exactly one PO. Multiple PDFs per email are not yet supported.

  4. 4

    Review your draft order in Shopify

    Within 1-5 minutes the draft order appears in Shopify Admin → Orders → Drafts. You also get a confirmation email with a direct link. Review products, quantities, customer, and address before sending.

    Note: Pricing always comes from Shopify - never from the PDF. Includes Shopify Plus B2B price lists and customer-specific catalogs.

  5. 5

    Set up auto-forwarding (recommended)

    Create a filter rule so inbound PO emails route automatically to your LevelOps address. Fully hands-free after setup.

    Gmail

    Settings → All settings → Filters and blocked addresses → Create a new filter → Forward to your LevelOps address

    Outlook

    Settings → Mail → Rules → Add new rule → Forward to your LevelOps address

    Gorgias

    Create a forwarding rule targeting inbound order emails and forward to your LevelOps address

Matching logic

How products, customers, and addresses are resolved

Layered AI: exact identifiers first, semantic search second, PDF fallback last. No manual mapping required.

1 - SKU & product matching

Step 1 - SKU lookup
Exact match first

When a line item contains a SKU, item code, or catalog ID, LevelOps searches your Shopify catalog for an exact or near-exact match on that identifier.

High-confidence match → product added immediately. No SKU, or no match → proceeds to Step 2.

Step 2 - Semantic AI fallback
Meaning, not just text

AI runs a semantic search against your full Shopify catalog using the product description. It understands meaning, not just exact strings.

"Navy scrub top size M" → matches "Cherokee Workwear Scrub Top, Navy, Medium". Searches title, description, and variant attributes.

Pricing is always from Shopify - never from the PDF. Shopify Plus B2B price lists and customer-specific catalogs are honoured automatically. If the same product keeps failing to match, open a ticket and we'll add a custom mapping rule.

2 - Customer & address matching

Customer identification
Matched by email, not name

The sender's email address is looked up in your Shopify customer database. Name alone is never used - too ambiguous.

Found → Shopify B2B company is resolved via Shopify's native company/customer hierarchy. Not found → draft is tagged LevelOps-Customer-Not-Found for manual linking.

Shipping address
Shopify location first, PDF fallback

LevelOps checks whether the PDF shipping address matches a known Shopify company location. Match → that saved location is used. No match → the address is scraped from the document.

Decorator, embroiderer, or end-user drop-ship addresses not in Shopify are scraped automatically - expected behaviour, not an error.

3 - Everything extracted

Line items
SKU or item code, description, quantity, unit of measure. AI infers columns from any layout.
PO number
Pulled from document header, reference field, or subject line - copied to the Shopify draft order.
Customer identity
Matched by sender email against your Shopify customer database (never by name alone).
Shopify B2B company
Resolved via Shopify's native company/customer hierarchy when the customer is a B2B contact.
Shipping address
Shopify company location first, PDF-scraped address as fallback (decorators, drop-ship, end-users).
Payment terms
Extracted from the document if present and applied to the draft order.
Pricing
Always pulled from your Shopify catalog and price lists. Never from the PDF.
Quantities
Per line item. Flagged in the draft when the format is ambiguous or negative.

Manual customer override

Forwarding on behalf of a customer, or the sender email doesn't match Shopify records? Add this line anywhere in the forwarded email body:

Use this customer: customer@example.com

LevelOps uses that email to look up the customer instead of the sender address.

Order tags & alerts

You always know what happened

Every draft order is tagged in Shopify so you can filter, and every processed email triggers a confirmation email with a direct link.

  • LevelOps-Order-Successfully-Created

    All products matched. Draft order is ready to review and send. Green-light case.

  • LevelOps-Some-Items-Not-Found

    Draft order created, but one or more line items didn't match your Shopify catalog. The email alert lists the unmatched items so you can add or fix them manually.

  • LevelOps-Customer-Not-Found

    Draft order created, but the sender's email isn't in your Shopify customer database. Link the draft to a customer manually, or use the customer override to prevent this on future orders.

Edge cases

Real-world scenarios, handled

Sender is a broker, agency, or rep forwarding on behalf of a customer

Add a manual override line anywhere in the forwarded email body. LevelOps uses that email to look up the customer instead of the sender address.

Use this customer: customer@example.com

Same PO forwarded twice

Duplicate detection prevents the same PO number from being processed twice into a second draft order. If a legitimate re-send is needed, delete the earlier draft first.

Multi-store or multiple Shopify accounts

Install the app on each store. Each store gets its own forwarding address and its own product catalog is used for matching.

Product exists in Shopify but keeps missing

Open a support ticket. We can add a custom mapping rule so specific customer wording always resolves to the correct SKU going forward.

Address is a decorator or embroiderer, not the customer

Expected. The PDF-scraped address is used because it isn't in Shopify. Review before sending if you need to swap it back to a saved location.

FAQ

How long does setup take?
Most merchants go live the same afternoon. Install, connect an inbox, and forward your first PO.
What if a PO has 50+ line items?
Every plan supports up to 50 items per order. Larger orders can be split or handled on request.
Can I review before it hits Shopify?
Yes. Orders land as drafts in an approval queue - nothing is created without your sign-off unless you enable auto-approve for trusted buyers.
What triggers a manual approval?
Missing SKU match, price mismatch, unknown customer, duplicate detection, or any confidence below your threshold.
5.0 (18 reviews on the Shopify App Store)
An absolute timesaver! We have been manually entering B2B orders into Shopify for 6 years and I am convinced that I would be 3 years ahead if I found this app sooner. It's liter…
Terpene Warehouse - United States
This app saves me a tremendous amount of time. We receive many large stocking POs via email and using LevelOps has cut the time it takes me to input these orders in half. Highly…
New Rage Cycles - United States
The LevelOps team has saved me time and allows me to continue to move quickly! As a start up brand, this is a game changer. The team created a custom override for me based on ho…
Sol Soils - United States

Your PDFs become Shopify orders.

Install PDF to Order on Shopify. 5 free credits. Live in minutes.