All modules, configs, paths, and references updated. 836 tests pass, zero warnings. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
173 lines
8.0 KiB
Markdown
173 lines
8.0 KiB
Markdown
# 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
|