WapifyDocs

Sending rules

Quiet hours, duplicate protection, delays, retries and the rules every automation obeys before a message goes out.

Check 1Is this a duplicate?One message per order, per automation
Check 2Is the number usable?Valid, international format
Check 3Is it a quiet hour?02:00–11:00 store time
Check 4Is there allowance left?Utility and marketing counted separately
ThenSendAnd log it

Every automated message passes the same four checks. A message that fails one is logged with the reason, never silently dropped.

These rules apply to every automation and aren't per-automation settings. Most of them exist to protect two things you can't easily get back: your WhatsApp number's reputation with Meta, and your customer's willingness to keep reading your messages.

Quiet hours

Nothing automated goes out between 02:00 and 11:00 in your store's own timezone. A message that lands at 4am wakes the customer, and a customer woken by a shop is a customer who blocks the number — which on WhatsApp costs quality rating, which on the shared number is shared by every store on it.

A message that would have sent inside the window isn't cancelled. It waits and goes out just after 11:00 local time.

Two exceptions, both deliberate

COD ConfirmationThe one message that directly answers something the customer just did. Holding a 3am order until 11am leaves it unconfirmed — and unshipped — for hours, and the customer is expecting it. Its reminder does observe quiet hours: nobody needs chasing at 5am.
Manual sendsAnything you send by hand — from the Orders page, from Logs, or from the Inbox — goes now. You asked for it, so Wapify doesn't second-guess you. Manual sends skip configured delays for the same reason.

Quiet hours are a floor, not a setting, and deliberately don't appear in the automations interface. They protect the customer and the number, and they aren't something a store should be able to configure its way out of.

Which timezone

Your Shopify store's timezone, synced automatically from your store settings. If it hasn't synced yet, Wapify judges quiet hours in Cairo time until it does.

Duplicate protection

One message per order, per automation. An order that has already had a COD confirmation won't get another one, however many times its webhook fires — and Shopify fires several of them for a single order.

This is always on for automated sends and can't be switched off. When you send by hand from the Orders page, you get a Prevent duplicates checkbox in the confirmation dialog, ticked by default: leave it ticked to skip customers who already received that message, or untick it to send anyway.

Phone numbers

Wapify sends to the phone number on the Shopify order, normalised to international format. If the number is missing, malformed or clearly not mobile, the send is skipped and logged with the reason — it isn't retried, because nothing about it will change on its own.

If you see a run of skipped sends, check that your checkout requires a phone number and that it's collected with a country code. A number saved as 01012345678 with no country context is the single most common cause.

Message allowance

Every send from Wapify's shared number is checked against your plan's monthly allowance before it goes out — separately for order updates and marketing. If a bucket is used up, the send is blocked and logged as such, with a prompt to upgrade or connect your own number.

Failed sends never count against your allowance. Messages from your own number aren't counted at all, because Meta bills you directly. Full detail on Message limits.

Delays and how they're honoured

A delay is measured from the triggering event, not from when Wapify noticed it. An order placed at 09:00 with a two-hour delay is messaged at 11:00, even if the webhook arrived late.

When a delay would land inside quiet hours, the two rules stack: the message waits for the delay, then waits for quiet hours to end.

Message statuses

Every send gets a row in Logs the moment it starts, so nothing is invisible while it's in flight.

StatusMeaningCounts against allowance?
SendingIn flight. Normally lasts seconds.No
SentWhatsApp accepted it; delivery not yet confirmed.Yes
DeliveredIt reached the customer's phone.Yes
FailedIt didn't go out. The reason is on the row.No

A message stuck in Sending is swept up automatically after 30 minutes and resolved, so rows can't sit in limbo indefinitely.

Retrying

Failed rows in Logs have a Retry button. Retrying is a manual send: it goes immediately, ignoring delays and quiet hours. Fix the underlying cause first — retrying a send that failed because of a bad phone number will simply fail again.

Follow-up reminders

Three automations can send a second message: COD Confirmation, Ask for review, and Abandoned Cart. All three follow the same rules:

  • Only to customers who didn't respond to the first message.
  • Once. A customer who ignores both is left alone.
  • Cancelled if the customer responds before it fires.
  • Counted against your allowance as a separate message.
  • Subject to quiet hours, including the COD reminder.

What Wapify will never do

  • Cancel a Shopify order. A customer tapping Cancel on a COD confirmation tags the order; cancelling it stays your decision.
  • Message someone who isn't in an order or a subscription. Automations only ever message customers who placed an order, abandoned a checkout, or signed up for a restock alert.
  • Track read receipts. Wapify deliberately never records or displays whether a message was opened. Replies are the engagement metric.
  • Send in a language the customer didn't get. There's no silent fallback between English and Arabic — see Message language.