Triggers are the entry point to any flow. SabFlow ships with 30+ native trigger types — message received, order paid, contact created, segment entered, cron schedule, signed webhook — plus a generic HTTP trigger for anything custom. Same observability, same retry policy, regardless of how the flow started.
Ask any team that has tried to ship a sophisticated automation and they will tell you the same story: the trigger broke. Shopify changed a webhook schema and abandoned-cart stopped firing. The cron job ran in UTC but the business operates in IST so Diwali greetings landed at 4:30am. A retry loop hammered the API and got the account rate-limited. A test webhook from a developer's laptop fired in production and sent 2,000 customers a duplicate offer.
These failures share a root cause: most platforms treat triggers as an afterthought. You pick from a dropdown, paste a URL, and hope. There is no replay, no schema validation, no visibility into what actually fired versus what should have. When something breaks, you discover it from a customer complaint three days later.
SabFlow treats triggers as a first-class observable surface. Every incoming trigger event is captured, validated, logged and replayable. Failed triggers do not vanish — they land in a dead-letter view with the full payload, retry button, and the exception trace. Timezone is always explicit. Webhook signatures are mandatory for the integrations that support them. The trigger is the front door of your automation — we treat it like one.
SabFlow triggers fall into five categories: channel events (message received, message read, button clicked on WhatsApp, Instagram, Web Chat, Email), commerce events (Shopify order paid, Stripe payment succeeded, Razorpay refund initiated, catalog item updated), CRM events (contact created, segment entered, tag added, deal stage changed, custom field updated), schedules (one-off datetime, cron expression, recurring relative — "every Tuesday at 9am IST"), and integrations (signed webhook URL, REST API call, third-party native triggers from HubSpot, Pipedrive, Calendly, Google Sheets, etc.).
Every trigger emits a typed payload that downstream nodes can reference via JSONPath. A Shopify order trigger gives you `{{trigger.order.id}}`, `{{trigger.order.line_items}}`, `{{trigger.customer.email}}` — full Shopify schema, validated on entry. A WhatsApp message trigger exposes `{{trigger.message.text}}`, `{{trigger.contact.phone}}`, `{{trigger.message.type}}` (text, image, document, button, list). This typing prevents the classic "I thought that field existed" bug at design time.
Multiple triggers on one flow are supported and common. A "VIP customer onboarding" flow might trigger on (a) a Shopify customer with lifetime spend > ₹50,000, (b) a manual tag added via the CRM, or (c) a webhook from your loyalty program. All three paths converge into the same flow with the same downstream logic — you maintain the journey once, accept input from many sources.
For technical teams, the generic Webhook trigger is the universal escape hatch. We give you a signed URL with HMAC-SHA256 signature verification, a JSON schema you can declare, and a payload validator that rejects malformed input at the door. The schema is enforced at runtime so a breaking change in your upstream system surfaces immediately as failed-validation events, not as a flow running on garbage data.
Capabilities
Fire on inbound WhatsApp message, Instagram DM, Web Chat opened, Email received. Filter by message type (text, image, document, button payload, list selection), by keyword, by contact segment, or by the channel-specific metadata like template name or campaign ID.
First-class support for Shopify (order paid, abandoned checkout, refund, product update), Stripe (payment succeeded, subscription renewed, invoice failed), Razorpay (payment captured, refund processed), WooCommerce and Magento. Schema-validated, retry-safe, idempotent.
Contact created, contact updated (per field), segment entered or exited, tag added or removed, deal stage moved, custom field changed. Dynamic segments emit enter/exit events as the segment definition matches new data — no manual polling.
One-off (fire at 2024-12-31 17:00 IST), recurring cron (`0 9 * * MON-FRI`), relative recurring ("every 6 hours starting tomorrow"). All schedules honor a configurable timezone, including per-contact timezone for personalised sends.
Each webhook trigger gets a unique URL with HMAC-SHA256 signing. The upstream signs the payload with a shared secret; SabFlow verifies before firing. Declare a JSON schema and malformed requests are rejected with a 400 before they touch the flow.
Failed triggers — validation failure, downstream node error, rate limit — land in the DLQ with the full payload, the exception, and the retry button. Replay one event or a batch. Audit log shows who replayed what.
Every trigger event carries an idempotency key derived from the source. Duplicate Shopify webhooks (which happen) do not double-fire the flow. Custom webhooks can pass an `Idempotency-Key` header that SabFlow honors across a configurable dedup window.
Use cases
Trigger on Shopify order.paid. Filter for orders above ₹1,000 to skip low-value sends. Fire a WhatsApp template with order summary and tracking link. Idempotent against duplicate webhooks. Replays available for the rare missed event.
Cron trigger at 9am IST weekdays. HTTP Request to GitHub for yesterday's PRs, AI Generate node summarises into a standup post, Send to Slack channel. Replaces a 15-minute manual ritual. Skips weekends and holidays via a custom calendar.
Dynamic segment "last purchase > 90 days ago and total spend > ₹5,000" fires segment-entered trigger. Sends a personalised WhatsApp template with a curated set of products via AI Generate. Recovers churning customers without manual list-pulling.
Internal ERP fires a signed webhook on shipment-out-for-delivery. JSON schema declared with `tracking_id`, `eta`, `customer_phone`. SabFlow validates, looks up the contact, sends WhatsApp with live tracking. End-to-end latency under two seconds.
Trigger on CRM deal stage moving to "Won". Creates the customer record, assigns onboarding manager via Slack, triggers a 30-day onboarding flow. Single trigger replaces a five-person handoff that used to rely on Slack DMs and prayer.
How it works
Triggers is included on every SabNode workspace. No separate billing, no extra setup, flip it on from your workspace settings.
Choose from channels, commerce, CRM, schedule or custom webhook. The selector previews the payload shape so you know what fields the downstream flow can use.
Narrow firing conditions — only orders above ₹1,000, only contacts in segment X, only on weekdays. Filters run before the flow starts, saving execution cost.
For webhook triggers, paste a sample payload and declare a JSON schema. Future events failing the schema are rejected with a 400 instead of poisoning the flow.
Hit Send Test from the trigger config. A synthetic event runs through the flow in debug mode. Or replay any historical event from the trigger log.
Every fire, success or fail, lands in the trigger log with payload, latency and downstream result. Filter by status, replay the failures, set up alerts on DLQ depth.
Connect directly with your existing stack or leverage the Platform Core tools to extend capabilities natively.
Enhance this feature with deep integrations into our core infrastructure. Connect via API, utilize webhooks, or embed directly using our SDKs.
Manage all settings seamlessly within the core UI.
Extend functionality with custom automated workflows.
No credit card. No sales call required. Spin up a workspace, plug in a number, and your team is live in under an hour.