Skip to main content

Overview

The fulfillment integrations push completed orders to a 3PL (Third-Party Logistics) provider and pull cost-of-goods (COGS) data back so your conversions show real profit, not just revenue.

Supported providers

ShipOffers Fulfillment

Pick, pack, and ship through ShipOffers. Multi-hub network in Colorado, Tennessee, and the Netherlands; same-day shipping; real-time tracking.

Jetpack Fulfillment

Multi-hub fulfillment across 65+ warehouses with intelligent inventory distribution (Multi-Hub IQ) and carrier selection (Carrier IQ).

ShipOffers COGS Reconciliation

Automatic email-based ingestion of weekly ShipOffers cost CSVs. Updates each conversion with line-item costs so profit is correct.

How fulfillment dispatch works

  1. Order received — A customer completes a purchase on your funnel.
  2. Merchant resolution — The merchant on the conversion is looked up.
  3. Fulfillment provider lookup — The product’s fulfillment_provider_id (or merchant default) decides where the order goes. Each product can route to a different provider.
  4. Job queued — A fulfillment job is queued ~10 seconds after the conversion is finalized so refunds in the first window can short-circuit it.
  5. Order pushed — Customer info, shipping address, line items (with mapped SKUs), shipping method, and order total are sent to the provider.
  6. Tracking sync — When the provider returns shipment status and tracking, EF stores it on the conversion and surfaces it in the dashboard. If the order was paid through a PayPal merchant, the tracking number is also sent to PayPal.
Shipping from Shopify instead? With Shopify Order Sync, the tracking your store or its 3PL app adds in Shopify comes back to ElasticFunnels too, and is sent to PayPal for PayPal-paid orders.

Send from an automation

You can also send orders from an automation that starts with On New Purchase: add the Send to fulfillment step, pick the fulfillment integration and, if you want, a Delay (minutes) (empty uses the integration’s delay). Put conditions or a split test before it to choose which orders go where. The builder will not save the step on any other trigger, or without a connected fulfillment integration. The Presets tab of the fulfillment integration has a ready one: New purchase: send the order to … to ship, and the Automations panel at the top of its page shows how many automations send to it. A fulfillment integration is not moved to automations the way a call center is: which orders it ships follows your merchants and products, and one automation cannot copy that exactly. Keep the merchant and product settings, and use the step for the orders you want to route yourself. The step runs the same order job as the merchant setting: only physical items, never test orders, gift orders wait for their main payment, and the integration’s SKU map and tracking sync apply.
An order is never sent twice. While an active automation sends orders to a fulfillment integration, the merchant’s default and product routing stop sending orders to that integration, and an order that is already scheduled is never scheduled again.

Setup — ShipOffers

1

Get credentials

Contact your ShipOffers account manager and request your Store ID, Username, and Password.
2

Create the integration

Go to Integrations → Operations → ShipOffers Fulfillment. Enter the credentials and pick a default shipping service (Standard, Express, etc.).
3

Map SKUs

In ShipOffers, set up your products and copy the SKU codes. In ElasticFunnels, edit each product and ensure its SKU matches the ShipOffers SKU exactly. SKU is what the picker uses to fulfill — mismatched SKUs cause picking errors.
4

Assign to merchants or products

Either set ShipOffers as the Fulfillment Provider on a merchant (default for all products under that merchant) or override per product.
5

(Optional) Enable COGS reconciliation

Activate ShipOffers COGS Reconciliation as a separate integration, copy the dedicated reconciliation email address, and ask ShipOffers to email weekly cost CSVs to that address. EF parses each CSV and updates the matched conversions with line-item costs.

Setup — Jetpack

1

Get credentials

Contact Jetpack at jetpackshipping.com or 1-844-4-JETPACK. You’ll receive an API Key ID and Secret Key.
2

Create the integration

Go to Integrations → Operations → Jetpack Fulfillment. Enter your credentials and configure the primary warehouse and shipping preferences.
3

Map products and SKUs

Set up your product catalog inside Jetpack with the same SKU codes you use on each BrandProduct in EF.
4

Assign to merchants or products

Set Jetpack as the Fulfillment Provider at the merchant level, or override per product when only some products ship from Jetpack.

SKU mapping

The SKU on every BrandProduct in EF must match the SKU your 3PL uses to identify the physical item. Without a match, the order will be rejected by the provider or filled with the wrong product. To set or update the SKU:
  1. Go to Products.
  2. Edit the product.
  3. Set its SKU to the value from your 3PL catalog.
  4. Save.
Re-saving a product does not retroactively re-fulfill old orders; only new orders use the updated SKU.

Monitoring

Go to Conversions → Fulfillment to see every fulfillment attempt with its status:
  • Pending — Queued, waiting for the dispatch window to elapse.
  • Sent — Provider accepted the order.
  • Failed — Provider rejected the payload (most often: missing SKU or invalid address). Use the failure detail to fix the data and retry.
  • Tracking — Provider has shipped the order; the tracking number and carrier are surfaced inline.
If a fulfillment attempt fails because of a bad address, you can manually edit the conversion’s shipping address and re-send. SKU mismatches require fixing the product first; orders already in flight are not re-keyed automatically.