Operator

Markets · rails

Printify
webhooks
HMAC ready

Printify webhooks

Receive product and order events from Printify into the LVL factory. Endpoint is public under factory.lvlltd.com (Cloudflare). Signature uses PRINTIFY_WEBHOOK_SECRET.

API token

PRINTIFY_API_TOKEN

Shop id

PRINTIFY_SHOP_ID

Webhook secret

Optional / loose

Remote hooks

0 subscribed

Synced products

0 mirrored

Synced orders

0 mirrored

Receive URL

Point every Printify topic at this HTTPS URL

/api/printify/webhooks

Topics: shop:disconnected · product:deleted · product:created · product:updated · product:publish:started · order:created · order:updated · order:sent-to-production · order:shipment:created · order:shipment:delivered

Cloudflare WAF

Edge worker + zone rules protect /api/printify/*

  • Worker rate limit: 60 POST/min/IP on webhooks
  • Body cap 512KB · method allowlist · optional signature gate
  • Zone rules: cloudflare/waf/printify-webhooks-rules.json
  • Apply: node scripts/apply-cloudflare-waf.mjs
  • Deploy proxy: wrangler deploy -c cloudflare/workers/lvl-factory-proxy/wrangler.toml

Webhook sync

Inbound Printify events mirror orders + products. Pull button uses the API when credentials are set.

  • order:* → printify_orders_mirror (status, lines, totals)
  • product:* → printify_products_mirror (enrich from API when thin)
  • product:deleted → soft-delete in mirror
  • Sync Printify → remote webhooks + full product pull
  • API: GET/POST /api/printify/sync

No products mirrored yet — run Sync Printify or wait for product webhooks.

Remote subscriptions

Live list from Printify when token is configured

No remote webhooks yet. Set credentials and install all topics.

Event log

Last 0 deliveries (PGLite / Neon)

No events yet. Run local simulate to verify the pipeline.