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.