Product
How do you automate COD order confirmation on WhatsApp?
A Nawras rule is written as one sentence: when an event happens, if conditions are met, then an action goes out. Eight events are available — from order created to parcel stuck at the carrier — and the conditions draw on the order's real facts: total, city, zone, origin, product. What sets a Nawras rule apart from ordinary automation is that it does not stop at sending: the customer gets buttons, and you decide what happens next for each of the four possible outcomes, including no answer at all.
When, If, Then — and nothing to type
A rule holds three parts: the event that wakes it, the conditions that decide whether it concerns you, the action that goes out. You do not write it, you pick it — every part comes from a list the product serves you, and a value outside that list cannot be entered.
New date after a failure
When
Delivery attempt failed
If
Number of attemptsis equal to1
ANDLogistics zoneis equal toRural
Then
Send a WhatsApp
Template “New delivery date” · Main number
41 runs · last one 3 h ago
The eight events that can wake a rule
- New order created
- Order status changed
- Customer unreachable
- Callback due
- Delivery attempt failed
- Order stuck for too long
- WhatsApp message received
- Automated message button clicked
Conditions read the order, not a label
Eleven facts can be compared: the total, the recognised city, the region, the logistics zone, the number of items, the customer's name, the delivery fee, the source, the origin, the campaign and the products. The city being compared is the one the dictionary recognised, never what the customer typed — “casa”, “dar lbida” and “الدار البيضاء” all mean the same city, and a rule written on the raw entry would have missed three quarters of them without anything showing.
An unreadable address gets a name
When the dictionary does not recognise a customer's city, the order does not get an empty value: it gets “unknown”, and you can write a rule on it — “city not recognised, tell me, I will look myself”. Without that name, a negative condition such as “region other than Casablanca-Settat” would have silently caught every unreadable address.
A message received is not an order
Two of the eight events are born from a conversation rather than an order: a customer can write to you without ever having bought anything. Those two do not offer an order's facts — offering you a filter on the total would be offering a filter that could never be true.
Then it waits for the answer, and continues differently for each one
This is the exact point where ordinary automation stops. The customer gets three buttons; they press one, or none. These four outcomes are fixed once and for all in the product — you do not invent them, you only decide what each one triggers.
If they confirm
Reply with a message · Notify the team
The decision is made, and that is exactly why this outcome cannot hand the thread to the AI agent. Handing over here would reopen a mission on a goal already reached: an agent tasked with obtaining a confirmation it has just received. This restriction is not writing caution — a production incident put it there.
If they cancel
Reply with a message · Notify the team
You are told right away, while saving the sale is still possible. Same handover restriction, for exactly the same reason: the decision is made, there is no goal left to pursue.
If they ask for a change
Notify the team · Hand over to the AI agent
This is the only outcome where the product takes sending away from you, and it is deliberate: “Change” opens a real conversation. It belongs to the AI agent or to a human, not to a frozen sentence written three weeks earlier that will not know how to answer “could you deliver on Saturday instead?”.
If they do not answer
Send an approved template · Notify the team
Silence is the only outcome you schedule: you pick the delay from a list of five — one hour, six hours, one day, two days, three days. A closed list rather than free entry, because a delay typed by hand creates an appointment nobody is waiting for any more.
None of the four can change the status
The click has already moved the order. Reacting to it would send the rule back into its own trail, and that is the failure mode that makes automation tools frightening. Each outcome accepts up to five actions, and an outcome you leave empty simply does nothing.
Template or free message: you are not the one who chooses
WhatsApp only allows a freely written message within the twenty-four hours following the customer's last message — that period is called the service window. After it, only a template approved in advance can go out. Nawras does not ask you to follow that rule: the mode follows from the outcome, so it is known by the time you write yours.
The service window, in one sentence
The customer writes to you, or presses a button: the window opens for twenty-four hours. During that time you reply whatever you want, and Meta charges nothing. After it, an approved template is required, and that one is charged.
A click has just opened the window, so a free message
The three button outcomes accept nothing but the free message. You write it in plain words, up to one thousand characters, and you drop variables in by clicking them: the customer's name, their order number, the amount, the list of their items, their tracking link.
Silence means a cold window, so a template
A follow-up after twenty-four hours is always an approved template. Nawras does not let you configure the opposite — not out of caution, but because the opposite is refused by WhatsApp, and a send that fails silently costs more than a send you did not plan.
The mode is never guessed at send time
If it were picked at run time, two customers who pressed the same button two minutes apart would receive two different things, and you would not know which went to whom. So it is fixed outcome by outcome, and the editor only offers you what can actually go out.
Variables are clicked, not typed
Ten variables are served with the editor, as chips. An invented variable would fail the save without telling you what to write instead — a clickable list makes the mistake impossible rather than making it understandable. And if one of them has no value on an order, it disappears from the message: the customer never reads our internal plumbing.
When the rule stands down, and what it does next
A rule that sends at all costs ends up talking over someone. Nawras would rather stand down — but stand down without giving up: every stand-down carries, or does not carry, the moment its cause will stop applying, and that presence is what decides the rest.
One voice per click
When a customer presses a button, Nawras replies with an acknowledgement. If your rule has a reply planned for that click, it is the one that speaks and the acknowledgement stays quiet: never two messages. An outcome that merely notifies your team does not speak to the customer — the acknowledgement therefore stays, otherwise the customer would have clicked into a void.
What makes it stand down
Someone on your team is answering that customer right now. The AI agent has a turn in flight. You have muted that number, or reached the daily cap you set for it. The service window has gone cold. In all these cases the rule steps back: it has nothing to add to someone who is already speaking.
A temporary reason asks the question again, once
When the cause has a known end — a human reply in progress lasts two minutes, an agent turn a few seconds — the question is asked again at the computed moment that cause will have ended. Once, never twice: a postponement that postpones a postponement is a loop dressed up as a service.
The absence of a resume time IS the definition of “final”
A suspended subscription does not come back within the hour: there is no resume moment to write down, so there is no postponement. There is no list of final reasons to keep up to date anywhere in the product — the absence of a date is enough to decide, which makes it impossible to forget a reason on one side and not the other.
At the end of the postponement, a notification — not silence
If the postponement stands down in turn for a cause that is still temporary, you are told. That is the only moment you need to know: telling you at the first stand-down would have been noise, since the system was going to try again on its own.
What it writes down when it sent nothing
An automation history that only shows successes ends up unread. Every run therefore keeps what it did, what it did not do, and why — in the same place and with the same seriousness.
Three verdicts, not two
Succeeded, failed, or stood down. The third exists because standing down is not an error — the system has just behaved well. But a run whose every action stood down produced nothing, and showing it green teaches you to ignore the history. An action that stands down next to an action that goes through is still a success: it is the total case that lies.
The reason is written out, not summarised
“A human was replying”, “the window was closed”, “the number was muted”, “the daily cap was reached”. When a single action stood down, its reason rises to the whole run; when several stood down for different reasons, each keeps its own — an average reason would be true of none of them.
A run is never replayed
Sending is not an operation you can redo without consequence: replaying it means a duplicate message for the customer. A run interrupted mid-flight is therefore marked as interrupted and left as it is, rather than picked up again “to be safe”.
An automatic cancellation carries its own name
When a rule cancels an order, it records it as such: “automation rule”. It borrows none of the human reasons — duplicate, unreachable customer, merchant cancellation. This is not vocabulary: one of those reasons takes the order out of your performance rates, and your confirmation rate would have climbed on its own with every automatic cancellation.
Frequently asked questions
Do you need to know how to code to write a rule?
No, and there is no field where you could even try. Every part is picked from a list the product serves you: the available events, the facts comparable for the event you chose, the operators allowed for that fact, and the values whenever they are known in advance — Morocco's twelve regions, the zones, your numbers, your approved templates. A value outside the list is not refused afterwards: it cannot be entered.
Can my customers receive two messages for a single click?
No. A click triggers one voice towards the customer: either the automatic acknowledgement, or the reply your rule has planned — never both. An outcome that merely notifies your team does not speak to the customer, so the acknowledgement stays in place. And if your rule's reply stands down, nobody speaks: the acknowledgement is not replayed behind it, because a catch-up arriving after the fact looks like a fault, not like politeness.
What if my customer replies with anything instead of clicking?
No automatic message goes out, and that is deliberate: a rule cannot read an intention out of a free sentence. The “WhatsApp message received” event does exist — you can filter on the kind of message or on a word it contains — but it allows one single action: notify your team. Answering a sentence is the job of the AI agent or of a human, and the conversation is waiting for them in the shared inbox.
Can I automate without ever sending a message?
Yes. Three actions speak to nobody: notify your team, hand the order to a named member, and cancel the order. So you can route your orders as soon as they are created — those above a certain amount to your best confirmer, those from a rural zone to the person who knows it — without a single message going out. Routing always names someone: there is no “spread to the least busy”, because two rules chasing the same balance contradict each other to the millisecond.
Can a rule trigger itself in a loop?
No, and the answer is a design decision rather than a promise. An action that moves an order's status — cancellation, but also assignment to a member, which borrows the same transition — is blocked as soon as that status was itself moved by an automation. The chain therefore stops at the first link, and a three-level bound closes the general case. A block is never silent: it is written into the history under its own name, like any other stand-down.
Ready to take back control?
Create your workspace in 2 minutes and see the impact in the first week.
Zero dirhams. Zero commitment. Cancel in one click.
