TagFlow

Overview

TagFlow connects three sides of personalised manufacturing:

  • Resellers (e.g. DogHealthy, museums, event companies) place orders via API or portal.
  • Manufacturers (e.g. Seritag-style suppliers) receive orders, run a production queue, and update status.
  • Platform Admin oversees all companies, products, and orders from the ops console.

Companies without deep API integrations can still process everything manually in the dashboard. Companies with APIs automate with keys, Swagger, and webhooks.

Who logs in where

There are two login screens (not three). Manufacturers and resellers share the company login; Admin is separate.

Who Login URL Credentials
Platform Admin /ops/login/ Username Admin + ops dashboard password
Reseller /login/ Work email + password from signup
Manufacturer

After company sign-in, the portal adapts automatically based on whether the account is a reseller or manufacturer.

Signup

Go to /signup/ and choose:

  • Reseller — browse products, place orders, track fulfilment
  • Manufacturer — sell products, receive orders, update the production queue

On signup you immediately receive a primary API key (shown once — copy it, or generate a new one later under API keys).

Roles & what they can do

Platform Admin

  • See all manufacturers and resellers
  • View and update any order
  • Manage the product catalogue
  • Issue / revoke company API keys
  • Suspend companies

Manufacturer

  • See incoming orders for their products
  • Move orders through the production queue
  • Add tracking numbers
  • Manage API keys and webhooks
  • View delivery address, engraving text, and encoding URL on each order

Reseller

  • Place orders (API or future portal checkout)
  • View their own order history and delivery details
  • Manage API keys and webhooks
  • Track fulfilment status (read-only — manufacturers / admin update status)

Reseller API pattern

One TagFlow order = one manufacturer. Mixing suppliers in a single checkout would split lead times, packing queues, and tracking — so the API rejects mixed-manufacturer carts.

Recommended UI: let the end customer choose a manufacturer first.

  1. GET /api/v1/manufacturers/ — build a “Who manufactures your tags?” picker.
  2. Customer selects a manufacturer.
  3. GET /api/v1/products/?manufacturer_id=… — show only that supplier’s offers.
  4. POST /api/v1/orders/ with offer_id (preferred) or sku + manufacturer_id, plus delivery address and customer_email.
  5. If the response includes checkout_url, send the customer to Stripe Checkout.
  6. After payment, reseller, manufacturer, and buyer all receive the order details by email.

Alternative: product-first — customer picks a SKU, then chooses among competing offers (price / lead time), then lock the cart to that manufacturer for the rest of checkout.

Try it visually in the PetTags Co demo shop. Interactive docs: Swagger · written notes: /docs/

Order & fulfilment flow

  1. Reseller lists products via GET /api/v1/products/ and picks a manufacturer offer (same SKU can have multiple prices/lead times).
  2. Creates an order via POST /api/v1/orders/ with offer_id (or sku + manufacturer_id), delivery address, and customer_email.
  3. If the total is greater than zero, the API returns a Stripe checkout_url. Complete payment there.
  4. After payment (or immediately for £0 orders), TagFlow emails the reseller, manufacturer, and buyer, and fires order.created webhooks.
  5. Manufacturer (or Admin) advances status through the production queue.
  6. When status becomes dispatched, a tracking number can be stored and webhooks fire.

Production queue

pending
  ↓
accepted
  ↓
printing
  ↓
encoding
  ↓
engraving
  ↓
packing
  ↓
dispatched
  ↓
delivered

(or cancelled at any point)

Delivery vs billing

Each order stores a delivery address — where the goods should be shipped. Card payment is handled by Stripe Checkout; there is no separate billing address on the order.

API & webhooks

Authenticate every partner API call with:

X-API-Key: tagflow_xxxxxxxxxxxxxxxx

Main endpoints:

  • GET /api/v1/health/ — public health check
  • GET /api/v1/manufacturers/ — manufacturers with active offers (reseller picker)
  • GET /api/v1/products/ — list products with manufacturer offers (?manufacturer_id= to filter)
  • GET /api/v1/orders/ — list your company’s orders
  • POST /api/v1/orders/ — create an order (returns checkout_url when payment is due)
  • GET /api/v1/orders/{id}/ — fetch one order
  • POST /api/v1/webhooks/stripe/ — Stripe payment events (platform)

Interactive docs: Swagger UI · Schema: openapi.json · Written API notes: /docs/

Webhooks

In the portal under Webhooks, register an HTTPS endpoint. TagFlow POSTs JSON for:

  • order.created
  • order.updated
  • order.shipped (when status becomes dispatched)

Requests include X-TagFlow-Event and X-TagFlow-Signature (HMAC SHA-256 of the body using your webhook secret).

Useful URLs

PagePath
Landing/
This guide/docs/guide/
API notes/docs/
Swagger/api/v1/swagger/
Company signup/signup/
Company sign in/login/
Company portal/portal/
Demo reseller shop/demo/
Admin / ops/ops/login/