Collective Partner
Intro
Collective Partner links two ShipManta stores that already trade through Shopify Collective. The retailer sells the product. The supplier fulfills it. The link copies chosen order fields from the retailer's order onto the supplier's order, so the supplier packs against the same delivery date and shipping method the customer chose.
Open Integration → Collective Partner. It is a Pro and Enterprise feature (View settings).
Connect a partner
One side generates a code. The other side pastes it. Until the code is accepted, the connection stays Awaiting partner.
- Click Connect a partner.
- Your role in this link:
- Retailer (I sell, partner fulfills) — you sell, the partner ships
- Supplier (I fulfill for partner) — you ship for the partner
- Partner name — a label for your team, for example ReefBreeders. Optional, but the card is hard to recognise without it.
- Partner Shopify domain — the partner's
*.myshopify.comdomain. Optional at this step; it can show as Domain pending until the other side connects. - Click Generate code. Copy the code and send it to the partner. It is shown once in this dialog.
- The partner opens Collective Partner, clicks Enter a code, pastes the code, and clicks Connect.
The card then shows Active, the partner name and domain, and either You are the retailer or You are the supplier.
The trash icon removes the connection. Sharing stops. Orders already copied are left as they are.
What is shared
Each card lists the fields that can cross the link. Turn a field on with its switch.
| Field | Retailer | Supplier |
|---|---|---|
| Order delivery date | Outbound — you send. Read from the order's delivery date. Choose Auto — default calendar, or pick a named delivery calendar | Inbound — you receive. Written onto the supplier order, its shipments, and the same Shopify order metafield the retailer uses |
| Requested shipping method | Outbound — you send. Read from the first shipping line on the order | Inbound — you receive. Written as the requested method on the supplier order's shipping line and on open shipments |
A field that is off is not sent and not applied.
When the retailer sends
On a retailer connection, When to share controls which orders are pushed:
| Choice | Meaning |
|---|---|
| Always for this partner | Every Collective order for this link is shared |
| Only when condition matches | Only orders that match a saved condition. If the list is empty, create one under Advanced → Conditions |
The supplier side does not pick a condition. It receives what the retailer sends.
When the supplier asks
The retailer pushes a field the moment its order imports. A push can still be missed: the supplier order arrived before the retailer's, a webhook was dropped, the supplier backfilled older orders in bulk, or the buyer picked the date after the order was placed.
So the supplier also asks. Every time a Collective order imports or re-syncs on the supplier store — webhook, bulk sync, or a manual re-sync — ShipManta checks each inbound field that is switched on:
| Field | Counts as already there when |
|---|---|
| Order delivery date | the retailer already sent it and it is on the order, or the supplier order already has a delivery date of its own |
| Requested shipping method | the retailer already sent it and it is on the order. A shipping line Shopify Collective puts on the supplier order does not count — only the retailer knows what the buyer chose |
A value the retailer sent that never made it onto the order (the push arrived before the order imported and that import failed part-way) is applied first, locally, without asking the retailer again. Only what is still absent after that is requested.
Fields that are already there are left alone. Fields that are missing are requested from the retailer over the same link. The retailer answers from its own order with exactly what a push would have carried, and respects its own switches and When to share condition — asking never makes the retailer share something it would not have pushed.
Only orders that still have something to ship are asked for: at least one Awaiting or On Hold shipment (or no shipment built yet). Values are written to those open shipments only — shipped, picked-up, cancelled and merged shipments are never changed.
Each open order is asked once. Whatever the retailer answers — the date, "no date yet" (the buyer has not picked), or "order not imported yet" — settles it: the retailer sends any later change itself, the moment the buyer picks a date or its order imports, so there is nothing to poll for. Only a request that got no answer (the retailer backend was unreachable) is retried, at a slowing pace: after 10 minutes, then 20, 40, and so on, up to twice a day, while the order is open and no older than 45 days. A background check every 30 minutes covers orders imported before the link existed and finishes anything the retailer already sent; it makes no partner calls for orders that were already answered. collective:request-missing-fields --force is the only thing that re-asks an answered order.
Each request runs as its own background job, separate from the push. After the retailer answers, the job applies the values and then confirms they are really on the supplier order before marking the request done; a value that did not land is flagged for support rather than reported as delivered.
Nothing to set up. Both stores need to run a current ShipManta version; an older retailer deployment simply answers "not found" until it is updated and the supplier keeps retrying.
Check that it worked
Place or sync a Collective order that should match. On the supplier store, open the order and confirm the delivery date and the requested shipping method. If nothing arrived, confirm the connection is Active, the field switch is on, and — for a conditional link — that the order matches the condition. Webhook Status is the next place to look when the order itself never synced.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Supplier shipment has no ship-by date | No delivery date reached the supplier order yet | Re-sync the order on the supplier store; the missing field is requested on import. If the retailer's order has no date either, the buyer has not picked one |
| Date arrived for some orders but not others | Those orders were imported before the retailer's push, or in a bulk backfill | Nothing to do — the next re-sync or the 30-minute background check applies what was already sent and asks for the rest |
collective:request-missing-fields --now prints every order as complete but shipments still show no ship-by date | The row the retailer pushed was being counted as "present" | Update to the current release: presence now means "on the order", and the command prints one line per order with the outcome (applied_from_inbox, requested, cooldown, …) |
| Requested shipping method never arrives | The retailer's Requested shipping method switch is off, or its When to share condition excludes the order | Turn the switch on, or widen the condition, on the retailer card |
| Nothing is ever shared | Connection not Active, or the retailer order number cannot be matched | Both cards must show Active; the supplier matches on the retailer order number Shopify Collective stamps on its order |
Related
- Delivery Calendar — the date that is shared
- Conditions — the optional "only when" rule
- Webhook Status