Docs/Get Started/Introduction
Overview & Documentation

Wholesale Purchase Order Automation

OrderHoist eliminates manual order entry for B2B Shopify merchants. When buyers email purchase order PDFs, spreadsheets, or scanned documents, line items are extracted in volatile memory, resolved against catalog SKUs and case-pack rules, and converted into open Shopify Draft Orders in 10 seconds.

Core Ingestion Architecture

The entire process from buyer email to Shopify Admin operates through a deterministic, least-privilege pipeline without saving source order documents to disk.

1. Inbound Email

Buyer emails PO attachment to orders-store@inbound.getorderhoist.com

2. Gemini Extractor

Ephemeral RAM buffer parsed via Google Gemini 2.5 Flash with strict JSON schema. Zero disk files.

3. Catalog Matcher

Checks buyer SkuAlias memory, queries Shopify GraphQL catalog, and applies pack multipliers.

4. Draft / Triage

Matches ≥ 85% land in Shopify Drafts. Unmatched lines held in Polaris triage queue.

Onboarding & Quickstart

Setting up OrderHoist takes less than 3 minutes. No Liquid theme edits or store script tags are ever installed.

1

Install from the Shopify App Store (Coming Soon)

OrderHoist is currently pending Shopify App Store review. Early access merchants can contact support@getorderhoist.com for priority onboarding with least-privilege administrative scopes (read_products, write_draft_orders, read_draft_orders, read_customers).

2

Retrieve Your Dedicated Inbound Routing Email

In your OrderHoist app home, locate your unique address:

orders-[your-store]@inbound.getorderhoist.comUnique per store
3

Set Up Auto-Forwarding or Direct Buyer POs

Configure an auto-forwarding rule in Google Workspace, Microsoft 365, or Outlook for wholesale PO emails, or share the inbound email directly with repeat wholesale buyers.

Pricing Plans & Usage Limits

OrderHoist offers transparent subscription billing billed directly through your monthly Shopify invoice using the Shopify Billing API 2026-10. All plans include a 14-day free trial.

PlanPriceMonthly Ingestion CapKey Features
Starter$39 / moUp to 40 POsStandard Gemini 2.5 Flash parsing, single-unit matching, draft order creation, 14-day trial
Growth Recommended$79 / moUp to 150 POsBuyer SKU alias memory, automated case-pack conversion, Polaris triage queue, dedicated routing inbox
Scale$149 / moUp to 450 POsPriority Gemini queue, custom wholesale tag workflows, unlimited alias mappings, dedicated support

Inbound Forwarding Engine

OrderHoist connects through Resend inbound email webhooks. Every webhook event is verified cryptographically using Svix signatures (svix-id, svix-timestamp, svix-signature) with replay attack protection (5-minute tolerance).

Routing Inboxes

Incoming emails arrive at orders-[routingSlug]@inbound.getorderhoist.com. The webhook resolver extracts the slug, validates the merchant store session, and creates an audit record in the database before passing attachments to background processing.

Supported File Formats

Buyers send orders in whatever format their ERP or accounting software produces. OrderHoist parses all standard B2B document types.

.PDF

Digital & Vector PDFs

Crystal Reports, QuickBooks, SAP, and NetSuite exported purchase order documents.

.XLSX / .XLS

Excel Spreadsheets

Wholesale order sheets with multiple columns, custom headers, and line items.

.CSV

Comma-Separated Values

Raw exported data sheets and tabular line items directly matched to catalog.

.PNG / .JPG

Scanned POs

Scanned paper orders and camera snapshots parsed with Gemini multimodal vision.

Ephemeral Processing & Zero-Disk Guarantee

Data security and confidentiality are foundational to OrderHoist.

Zero On-Disk Storage

OrderHoist holds file buffers in RAM only during the multimodal extraction window. Files are immediately released after parsing. OrderHoist does not maintain an object storage bucket (e.g. AWS S3) or save raw documents to disk, eliminating source document leakage risks.

Deterministic Catalog Matching

Buyers often write abbreviated or legacy product codes. OrderHoist uses a multi-tier deterministic matching algorithm to map raw descriptions to active Shopify variants without AI guesswork.

Step 1: Check SkuAlias Buyer Shorthand Memory

The matcher checks if this buyer has previously mapped this exact shorthand string (e.g. BLK-12) to a canonical Shopify SKU (e.g. SKU-4418). If found, the line item is resolved instantly with 100% confidence.

Step 2: Shopify Admin GraphQL Query (`searchVariants`)

If no alias exists, OrderHoist executes an Admin GraphQL query against the live catalog: exact SKU code match first, falling back to variant title and product title matching.

SKU Alias Memory (Buyer Shorthand)

Every buyer has unique legacy SKUs and internal abbreviations. Once an alias is matched or confirmed in the triage queue, OrderHoist remembers it permanently.

BLK-12→SKU-4418✓ Remembered for future POs

Case-Pack Conversion Rules & Math

Wholesale buyers frequently order in packs, master cartons, or boxes. OrderHoist extracts pack keywords and automatically converts them to single inventory units on the draft.

Buyer writes:
1 case
→ 12 inventory units
Buyer writes:
3 cases
→ 36 inventory units
Buyer writes:
1 box
→ 6 inventory units

Zero-Hallucination Quarantine (The 85% Rule)

Unlike generic LLM wrappers that make guesses when uncertain, OrderHoist treats inventory accuracy as a critical safeguard.

Held in triageConfidence < 85%

If the match confidence score for any extracted line is less than 0.85 (85%) or if no corresponding product variant is found in the Shopify catalog, the order is flagged as QUARANTINED. It is routed directly to the Polaris Triage Queue for merchant confirmation.

Embedded Polaris Triage Queue

Merchants resolve quarantined items directly inside Shopify Admin without leaving their daily workflow:

  • View raw buyer description alongside extracted quantity and unit candidate.
  • Select the correct variant from a pre-populated live catalog dropdown.
  • Adjust case-pack multipliers with real-time single unit calculation.
  • Check "Remember alias" to persist the mapping into SkuAlias for future orders.
  • Click "Confirm Mappings & Create Shopify Draft Order" to generate the order in Drafts.

Shopify Draft Orders Output

OrderHoist creates standard Shopify Draft Orders via the Admin GraphQL draftOrderCreate mutation.

  • Resolved Variants: Every line points to a valid catalog variant ID with individual single units.
  • Wholesale Pricing & Tags: Automatically applies the store's configured customer wholesale tag (e.g. wholesale_tier_2).
  • Audit PO Reference: Extracted buyer PO number and sender metadata are recorded in order notes.
  • Final Merchant Control: The order stays in open Draft status, allowing staff to review shipping rates, payment terms, or discounts before sending an invoice.

Store Settings & Wholesale Tags

Configure custom case-pack keywords, default wholesale tags, and confidence thresholds directly in the embedded app settings.

By default, OrderHoist applies wholesale_tier_2 to customer profiles and generated Draft Orders, and sets the confidence threshold at 0.85. Both can be customized per store.

Security, GDPR & Mandatory Compliance Webhooks

OrderHoist complies strictly with Shopify's App Store requirements and GDPR data protection regulations.

Mandatory Webhooks Handled

  • customers/data_request: Exports any customer personal data held in SkuAlias and ParsedOrder.
  • customers/redact: Deletes customer-specific aliases and anonymizes buyer identifiers.
  • shop/redact: Triggers a 48-hour scheduled complete purge of all shop records post-uninstall.

48-Hour Retention & Store Purge

When a store uninstalls OrderHoist, all active sessions are invalidated immediately. Exactly 48 hours later, all store preferences, alias mappings, and audit logs are permanently wiped from the database.