← Back to Portfolio
Pre-launch
Inventory AlertsProactive Multi-Location Inventory Monitoring
Inventory Alerts is a Shopify app that watches per-variant stock levels across multiple locations and sends branded email notifications via Resend when thresholds are crossed. Features a sophisticated alert state machine with escalation logic (ok → low → critical → out_of_stock) and debouncing to prevent spam. Includes per-alert error isolation (a failure in one alert doesn't block others), complete audit trail with delivery status, and webhook-driven instant re-evaluation when inventory levels change.
Inventory Alerts app screenshot
Inventory Alerts app screenshot
TECH STACK
Remix
TypeScript
React
Polaris
Prisma
PostgreSQL
Resend API
Shopify GraphQL API
Sentry
FEATURESProactive Multi-Location Inventory Monitoring
🔔Real-Time Email AlertsBranded HTML email notifications via Resend when stock crosses thresholds. Different colors and emojis for each alert level: Low (🟡), Critical (🔴), Out of Stock (⚫), Recovered (🟢).
🏪Multi-Location SupportMonitor inventory at a specific location or sum across all locations. Full cursor-pagination for locations, inventory levels, and product variants with safety cap.
🧠Smart State MachineEscalation matrix prevents alert spam: triggers only on level changes (ok→low→critical→out), not repeated same-level events. Tracks levelOrder for accurate state transitions.
🛡️Per-Alert Error IsolationIf one alert's re-evaluation fails, the error is logged and processing continues to the next alert. One bad alert never blocks critical OOS notifications for other products.
📊Complete Audit TrailFull event history of every threshold crossing with email delivery status. Acknowledge tracking and searchable/filterable alert management dashboard.
Instant Webhook EvaluationRe-evaluates all alerts when inventory_levels/update webhooks fire. Products/update webhook also refreshes cached product titles, variant names, and SKUs.
Interested in Inventory Alerts?Get early access or learn more about the project.
View on GitHub →