# Provider strategy research

**Status:** Reference (research notes from Feb 2025)

Research session exploring multi-provider strategy for Berrypod. Goal: identify the best additional POD providers to complement Printify, with a focus on UK fulfilment coverage.

---

## The problem: Printify's UK coverage gap

Printify's API was queried for all 10 demo product types to check which have UK-based print providers:

| Product type | UK providers | Notes |
|---|---|---|
| T-shirt | Print Clever (72), Monster Digital (29) | 2 UK options |
| Hoodie | Monster Digital (29), Print Clever (72) | 2 UK options |
| Canvas | Print Clever (72) | 1 UK option |
| Tote bag | None | Ships from US |
| Mug | None | Ships from US |
| Cushion | None | Ships from US |
| Blanket | None | Ships from US |
| Notebook | None | Ships from US |
| Phone case | None | Ships from US |
| Laptop sleeve | None | Ships from US |

**Result: 3/10 product types have UK providers.** 7/10 ship transatlantic from the US, adding cost and delivery time for UK customers.

No single Printify provider covers more than 3 product types within the UK. The Print Bar, Print Clever, and Printify Choice each cover 3 at most.

---

## Providers evaluated

### Prodigi (recommended)

- **Coverage:** 9/10 product types from UK
- **Fulfilment:** Own UK facility (Birmingham) + global network (US, EU, AU)
- **API:** REST v4, proper sandbox environment (`api.sandbox.prodigi.com`), catalogue endpoints, shipping rate queries, webhooks
- **Auth:** `X-API-Key` header
- **Pricing:** ~10-15% more expensive than Printify on apparel (e.g. Bella+Canvas 3001: Printify ~£7.07, Prodigi ~£8.00), but lower shipping costs and no aggregator markup. Gap narrows on paid plans.
- **Strengths:** Widest UK product range, mature API with sandbox, direct manufacturer (no middleman), lower shipping from UK
- **Weaknesses:** Higher per-item base cost, smaller community than Printify

**API highlights:**
- Sandbox: `https://api.sandbox.prodigi.com/v4.0/`
- Production: `https://api.prodigi.com/v4.0/`
- Catalogue: `GET /v4.0/products` (with country/currency filtering)
- Shipping: `GET /v4.0/shipping/quote` (per-order quotes)
- Orders: `POST /v4.0/orders`, `GET /v4.0/orders/{id}`
- Webhooks: order status changes, configurable URL

### Gelato

- **Coverage:** ~6/10 product types
- **Fulfilment:** Via partners in 140+ facilities across 32 countries
- **API:** REST, webhooks, catalogue endpoints
- **Pricing:** Subscription model (Gelato+), aggregator like Printify
- **Strengths:** Massive global network, good for international sellers
- **Weaknesses:** Aggregator model (same limitations as Printify), subscription cost, less UK-specific advantage

### Inkthreadable

- **Coverage:** 5/10 product types (strong on apparel, eco products, embroidery)
- **Fulfilment:** Own UK facility (Lancashire)
- **API:** Order-only — `GET/POST/DELETE /orders`. No catalogue endpoints, no shipping rate queries
- **Auth:** AppID + SHA1 Signature
- **Pricing:** Competitive on apparel
- **Strengths:** Eco-focused (organic cotton, water-based inks), embroidery capability, UK-based
- **Weaknesses:** Very limited API (can't fetch products or shipping rates programmatically), would need manual catalogue management

### Two Fifteen

- **Coverage:** ~4/10 product types (DTG, DTF, embroidery)
- **Fulfilment:** Own UK facility
- **API:** Primarily Shopify/WooCommerce plugins, sparse custom API documentation
- **Strengths:** DTF printing capability, embroidery, UK-based
- **Weaknesses:** Heavy overlap with Inkthreadable's coverage, weakest API of the bunch, documentation hard to find

### Printful

- **Coverage:** Wide (~8/10 types)
- **Fulfilment:** Global (UK via Latvia/Spain, US facilities)
- **API:** Mature REST API
- **Pricing:** ~£8.50 for Bella+Canvas 3001, most expensive of the lot
- **Strengths:** Mature platform, good API
- **Weaknesses:** Highest pricing, UK fulfilment is actually from EU (Latvia/Spain), not genuinely UK-based

---

## Pricing comparison (Bella+Canvas 3001 t-shirt)

| Provider | Base cost | UK shipping | Total to UK customer |
|---|---|---|---|
| Printify (via Monster Digital) | ~£7.07 | ~£4-5 (from UK) | ~£11-12 |
| Prodigi | ~£8.00 | ~£3-4 (from UK) | ~£11-12 |
| Printful | ~£8.50 | ~£4-5 (from EU) | ~£12.50-13.50 |
| Inkthreadable | ~£7.50 | ~£3-4 (from UK) | ~£10.50-11.50 |

Net cost is comparable across providers for UK delivery. Prodigi's higher base cost is offset by lower shipping.

---

## Recommended strategy (revised Feb 2025)

### Phase 1: Add Printful (revised winner)

Original analysis recommended Prodigi for UK coverage (9/10 types). But Prodigi has a critical gap: **no mockup generation API**. Sellers would need to manually create and upload product mockups, which is too much friction for Berrypod's target audience.

Printful wins because:
- **Mockup generation API** — dedicated async endpoint, generates mockups on actual product blanks
- **Own UK facility** (Wolverhampton) — ~252 products, DTG/embroidery/DTF/sublimation
- **Full catalogue API** — browse, filter, pricing, availability, all via REST
- **Live shipping rate calculator** — `POST /shipping/rates` with recipient + items
- **Mature API** (v1 stable, v2 beta) — same Bearer token auth as Printify

Trade-off: ~30% more expensive per item than Printify on base cost (e.g. Bella+Canvas 3001: ~$11.50 vs ~$8.88). Gap narrows with UK shipping savings.

See: [printful-integration.md](printful-integration.md) for full implementation plan (~16 hours)

### Phase 2: Prodigi (conditional)

Still the best option for shops that are price-sensitive and willing to handle mockups manually. Good sandbox environment for development. Worth revisiting if:
- Dynamic Mockups API integration is added (third-party mockup service)
- Prodigi adds their own mockup API
- A seller specifically needs Prodigi's product range

### Phase 3: Inkthreadable (conditional)

Only worth adding if there's seller demand for:
- Eco-friendly apparel (organic cotton, water-based inks)
- Embroidery products
- Niche UK-only products not on Prodigi or Printful

The weak API makes integration harder — no catalogue sync, no shipping rate queries. Would need manual product management.

### Skip: Two Fifteen

Too much overlap with Inkthreadable's coverage. Weaker API, harder to find documentation. Not worth the effort unless they offer something unique that Inkthreadable doesn't.

### Skip: Gelato

Aggregator model like Printify — same fundamental limitation of routing to whichever facility has capacity, with less control over where items ship from.

---

## Smart fulfilment (future vision)

Once multiple providers are integrated, the system could offer intelligent order routing:

1. **Catalogue collation** — unified product view across providers, showing which providers can fulfil each product type
2. **Smart recommendations** — suggest the best provider per product based on customer location, cost, delivery time, quality ratings
3. **Order routing** — split a multi-item order across providers to optimise for cost, speed, or eco impact (e.g. UK items from Prodigi, US items from Printify)

This is Tier 5 thinking — the architecture supports it via the Provider behaviour, but the UX and business logic are complex. Start with manual provider selection per product, graduate to smart routing once there's data.

---

## Architecture notes

The existing codebase already supports multi-provider through:

- **`Provider` behaviour** with callbacks for sync, orders, shipping
- **`ProviderConnection` schema** linking shops to providers with credentials
- **`provider_data` JSON field** on products storing provider-specific metadata
- **Shipping context** grouping by `print_provider_id` for combined shipping calculation
- **`Provider.for_type/1`** dispatch (currently Printify-only, extensible via app env)

Adding Prodigi requires:
1. `lib/berrypod/clients/prodigi.ex` — HTTP client
2. `lib/berrypod/providers/prodigi.ex` — Provider behaviour implementation
3. Migration: update provider_connections to support "prodigi" type
4. Admin UI: provider selection during setup
