eekaam.docs

Built-in apps

Flow


Flow

Flow automates your store's routine work. A workflow waits for something to happen, such as an order coming in, a parcel being refused or stock running low. It checks the conditions you care about, then acts: it can tag the order, notify your team, book the courier, or cancel and restock.

Install it from Apps, then open Apps → Flow. Anyone can build workflows. Turning them on needs the Professional or Enterprise plan. See Plans and pricing.

The app has three tabs: Workflows, Templates and Run history.

Start from a template

Templates has ready-made workflows for cash-on-delivery stores. Installing one creates it switched off, so you can read it and change it before turning it on.

TemplateWhat it does
Parcel refused → tag the customerWhen a parcel comes back, tags the customer cod-refuser and the order refused, so you spot them next time
High-value COD order → notify meNotifies you about COD orders over Rs 10,000, so you can call and confirm them
Low stock → notify me and hide when sold outNotifies you when stock drops below 5, and sets the product to draft when it runs out
COD confirmed → book the courierBooks the parcel as soon as the customer confirms on WhatsApp
No WhatsApp answer → cancel and restockCancels the order and puts the stock back if the customer never answers the confirmation
VIP after 3 ordersTags a customer vip when they pay for their third order, and lets you know
Repeat refuser orders again → reviewTags the order for review and notifies you when someone who refused 2 or more parcels orders again
Daily summary emailEmails the store owner the day's order count and sales every evening at 9 pm

Build a workflow

Create workflow opens the editor. A workflow is a trigger followed by steps.

Triggers

GroupTriggerStarts when
OrdersOrder createdA customer places an order, at checkout or with the COD order form
Order paidAn order is marked paid, or its online payment comes through
Order fulfilledAn order is marked fulfilled, shipped or delivered, or booked with a courier
Order cancelledAn order is cancelled by staff, the customer or WhatsApp confirmation
Order refundedAn order's payment is refunded
COD confirmationCOD order confirmedThe customer confirms on WhatsApp, or staff mark it confirmed
COD order cancelledThe customer cancels on WhatsApp, or staff mark it cancelled
COD confirmation unansweredThe customer didn't answer the WhatsApp confirmation in time
ShippingParcel deliveredThe courier reports the parcel delivered
Parcel returnedThe courier reports the parcel refused or returned to you
CustomersCustomer createdA new customer: their first checkout, a store account, or added by staff
ProductsProduct low on stockA product's or variant's stock drops below your threshold
CheckoutCheckout abandonedA shopper left checkout after giving their details, about an hour later
ScheduleOn a scheduleEvery day or every week, at a time you choose in your store's timezone

The COD triggers come from WhatsApp order confirmation, and the parcel triggers from Courier integration.

Steps

Add steps under the trigger. There are three kinds:

  • Condition: rules that decide what runs next. Steps under Then run when the rules pass. Steps under Otherwise run when they don't. Choose whether All of these are true or Any of these is true.
  • Action: something the workflow does.
  • Wait: pauses the workflow for minutes, hours or days, up to 30 days, then carries on with the next step.

Conditions can nest. A workflow can have up to 50 steps, with up to 20 rules in each condition.

What conditions can check

Each trigger offers the fields that make sense for it:

  • Order: number, total, subtotal, payment method, payment status, fulfilment status, shipping city and province, traffic source (Facebook, Instagram, Google, TikTok, direct), tags, item count, email, phone and date.
  • Customer: name, email, phone, tags, order count, total spent, refused parcels, and customer since.
  • Product: title, handle, status, stock, stock before the change, variant, tags and vendor.
  • Store: name, URL, orders today and sales today.

Numbers compare with is, is not, greater than and less than, with or without or equal to. Text compares with is, is not, contains, doesn't contain, starts with, is empty and isn't empty.

Actions

GroupAction
OrdersAdd order tags / Remove order tags
Add order noteAdds a note to the order's timeline
Cancel orderUnless it's already shipped or cancelled. Choose whether to put the stock back and email the customer
Mark order fulfilledLeft alone if already fulfilled or cancelled
ShippingBook a courierBooks with the Courier integration app, using your routing rules unless you name an account. An order already booked isn't booked again
CustomersAdd customer tags / Remove customer tags
ProductsSet product statusActive, or Draft to hide it
NotificationsNotify meAn in-app and push notification to your staff
Email meTo the store owner or a staff member
Email the customerFrom your store, if the customer gave an email address
AdvancedSend a webhookPosts the event as signed JSON to your own server

Inserting order details into messages

Text settings, such as a notification's message or an email's subject, can include details from the trigger. Use Insert field, or type the field in double braces:

Rs {{order.total}} from {{customer.name}} in {{order.city}}

Test, turn on and watch

  • Test run runs the workflow against a real order, customer or product you pick. It checks the conditions for real and records what each action would do. Nothing is changed.
  • Turn on the workflow from the list or the editor. A workflow needs at least one action before it can be turned on. Turn it off to stop it for now and keep it. Delete workflow stops it and deletes its run history.
  • Run history lists every run, filtered by workflow or status: Running, Waiting, Succeeded, Failed or Skipped. Open a run to see what happened step by step, with each step's input and output, and which branch each condition took.

The workflow list flags any workflow whose last run failed.

For developers: the webhook action

Send a webhook POSTs JSON to an https:// address on the public internet. Private and local addresses are refused.

Turn off Include the trigger data to leave out data.

Each request carries these headers:

Header
X-Flow-EventThe trigger, such as order.created
X-Flow-DeliveryThe same on every retry of one delivery. Use it to ignore duplicates
X-Flow-TimestampUnix seconds
X-Flow-Signaturesha256= + hex HMAC-SHA256 of timestamp + "." + body, keyed with your signing secret

The Signing secret must be at least 16 characters. A failed delivery is retried, except after a 4xx response other than 408 or 429.

{
  "event": "order.created",
  "workflow_id": "…",
  "run_id": "…",
  "step_id": "…",
  "delivery_id": "…",
  "sent_at": "2026-10-26T09:00:00Z",
  "data": { "order": { "number": "1067", "total": 2599 }, "customer": { "name": "Ali" } }
}
import crypto from "node:crypto";

function verify(secret, timestamp, rawBody, signature) {
  const expected = "sha256=" + crypto
    .createHmac("sha256", secret)
    .update(timestamp + "." + rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Updated 26 October 2026