HOW IT WORKS

Forward supplier email. Shopify gets tracking.

Under 60 seconds. No supplier cooperation. No spreadsheets.

Here’s what actually happens between the moment your supplier hits send and the moment your customer gets their shipping email.

1. You forward supplier dispatch emails to a Relayship address

When you connect Shopify, we mint a unique forwarding address like ch7a2fqk@in.relayship.app. You add a Gmail or Outlook filter that auto-forwards anything from your suppliers to that address. Takes about 90 seconds per inbox. Your suppliers never change how they email you.

You can filter at domain level (“forward everything from supplier@acme.com”) or by subject pattern (“forward anything containing ‘shipment notification’”). Onboarding walks you through both.

2. Gemini extracts the tracking number, carrier, and order reference

Every inbound email goes to Google’s Gemini Flash model with a strict JSON response schema. We pass the email body (plain text and sanitized HTML) plus any PDF attachments as multimodal inputs. Gemini returns a structured object with:

  • Whether this is actually a dispatch email (vs an invoice, a newsletter, or spam)
  • Extraction confidence score (0–1)
  • Each shipment it finds. One email can contain many.
  • Tracking number(s) and carrier guess per shipment
  • Order reference (PO number, order name, customer name)
  • Shipping address
  • SKUs and quantities

If extraction confidence is too low, the email skips straight to the human queue. We never guess.

3. We match the extracted shipment to the right Shopify order

Matching is a four-tier cascade. We try the most precise signal first:

  • Tier 1. Exact reference. Normalized order name or PO matches exactly. About 60–75% of shipments land here. One match, we auto-fulfill at confidence 1.0.
  • Tier 2. Address fingerprint. We hash zip + street number + first few street letters, compare against each open order’s shipping address. Roughly 15–25%.
  • Tier 3. Name + SKU + recency. Fuzzy customer-name match intersected with SKU match, ranked by recency. About 5–10%.
  • Tier 4. Queue. If nothing matches cleanly, the shipment lands in your confirmation queue with the top 3 candidate orders ready to one-click pick.

4. If combined confidence is high enough, we auto-fulfill

combinedConfidence = min(extractionConfidence, matchConfidence). If that’s above your threshold (default 0.9, adjustable 0.5–0.99), we call fulfillmentCreateV2 with the right SKU line items, the tracking number, and the canonicalized carrier. Shopify sends the shipping notification to your customer.

Below threshold, or if the shipment has any ambiguity we can’t resolve deterministically, it goes to the queue. We’d rather ask than ship wrong tracking.

5. Split shipments and partial fulfillments are first-class

Two suppliers ship parts of one order? Each gets its own fulfillment tied to the line items that left that warehouse. A resent tracking email that updates an existing fulfillment? We call fulfillmentTrackingInfoUpdateV2, don’t duplicate. One email with 20 tracking numbers? We split it into 20 shipments and match each independently.

6. Per-supplier learning makes us smarter over time

Every time you correct a match in the queue, we store that correction as a few-shot example for that supplier’s domain. After about 10 shipments from a given supplier, their format is a solved problem. Auto-fulfill rate approaches 99%.

On Growth and above, you can write custom prompt instructions per supplier (“ACME emails use ’PO’ prefix but the Shopify order name drops it. Use the numeric portion only.”) that get merged into Gemini’s prompt for that supplier’s emails.

What we don’t do

Relayship doesn’t replace AfterShip (customer-facing tracking pages), Klaviyo (post-purchase email), or Spark Shipping (enterprise EDI). We’re the missing link between your supplier’s inbox and Shopify’s fulfillment API. That’s the whole product.

See pricing Compare to other tools