Back to the build library
Retail & e-commerce
Standard

Click and Collect Notification Flow

Order-ready alerts, collection reminders and an uncollected-order chase that keeps your click-and-collect shelf moving instead of clogging.

Industry
Retail & e-commerce
Build effort
Standard
Typical time to launch
1–2 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

Click and collect looks like a solved problem until you walk into the back of a shop and see the shelf. Bags with picking slips stapled to them, some of them three weeks old, a few with the customer name faded into a smear of receipt ink. Nobody is sure which ones are still wanted and which are dead. The staff member who picked them has moved on. The shelf has become a filing cabinet for other people's indecision, and every bag sitting on it is stock that cannot be sold to anyone else.

The leak is in the notification. Most retailers send one message when the order is picked and ready, usually an automated email from the store system that lands in a promotions tab. If the customer misses it, nothing else happens. There is no second nudge, no reminder on the day the collection window closes, and no chase sequence before the order gets refunded or returned to shelf. So the retailer absorbs three separate costs: the picking labor spent on an order that never leaves, the shelf space it occupies, and the refund processing when someone finally gives up on it. Worse, the customer who never collected usually does not come back, because their last experience of the brand was a vague sense that something went wrong.

There is a second, quieter leak. When an order is ready and the customer arrives, the staff member has to find the bag. If the ready message did not include a clear collection reference, a location, and the opening hours of the collection point, the customer turns up at the wrong door, at the wrong time, or without ID, and the interaction becomes a complaint instead of a two-minute handover. This build closes both leaks by owning the whole notification arc from picked to collected to chased, on channels the customer actually reads, with the state of every order tracked in a pipeline so nothing goes quiet without someone noticing.

02

What gets built

Pipeline and stages

One pipeline, Click and Collect, with stages that mirror the physical state of the bag on the shelf. Every order creates an opportunity the moment it is paid for, and the stage is the single source of truth for what the shop floor should do next.

  • Order Received - paid, not yet picked. Holding stage only.
  • Picking - a staff member has the picking slip in hand.
  • Ready for Collection - bagged, labeled, on the shelf. The ready notification fires on entry to this stage.
  • Reminder Sent - 48 hours elapsed with no collection, first reminder away.
  • Final Notice - the collection window is closing, last chance messaging live.
  • Collected - handed over, signed for, closed won.
  • Uncollected - Returned to Stock - window expired, bag broken down, refund path triggered. Closed lost with a reason.
  • Partial - Awaiting Item - part of the order could not be picked. Parked here until the missing line resolves.

Calendars

Click and collect does not need appointments, but it does need time boundaries, and a calendar is the cleanest way to hold them.

  • Collection Point Hours - a calendar whose availability equals the hours the collection desk is actually staffed, used by BO to answer "when can I come in?" and to suppress messages that tell people to visit a closed shop.
  • Collection Slot Booking - optional, for high-value or bulky orders where you want the customer to pick a 30-minute window so staff can bring the item to the front.
  • Public Holiday Overrides - a blocked-out recurring calendar so the reminder cadence shifts rather than firing into a closed-door day.

Custom fields

Create these on the contact or opportunity record before building a single workflow. Every message in this build references at least two of them.

  • Order Reference - the store or web order number, used in every message and at the desk.
  • Collection Location - which branch or which desk within the branch.
  • Ready Timestamp - set when the order enters Ready for Collection. All reminder math is calculated from this, not from order date.
  • Collection Deadline - the date the order is broken down, usually Ready Timestamp plus your stated holding period.
  • Order Value Band - low, mid or high. Drives whether a human calls before the order is returned to stock.
  • Item Count - number of lines in the bag, so the customer knows how many bags to expect.
  • Collection Method - in-store desk, locker, or kerbside.
  • Nominated Collector - name of someone other than the purchaser authorized to collect.
  • ID Required - yes or no, driven by age-restricted or high-value lines.
  • Collected By - free text filled in by the staff member at handover.
  • Uncollected Reason - changed mind, could not get in, wrong item, no response, other.
  • Reminder Count - a number field incremented by each chase, used as a hard stop.

Tags

  • cc-order-active - applied on entry to Order Received, removed on Collected or Uncollected.
  • cc-ready, cc-reminded, cc-final-notice - state markers that make reporting trivial.
  • cc-collected, cc-uncollected - outcome markers.
  • cc-locker - routes the customer into locker-specific copy with a PIN rather than desk copy.
  • cc-id-required - injects the ID paragraph into the ready message.
  • cc-repeat-collector - applied on third successful collection, feeds a loyalty follow-on.
  • cc-serial-noshow - two or more uncollected orders, used to restrict future click and collect or to require prepayment review.

Forms

  • Collection Confirmation - a short in-store form the staff member completes at handover. Captures Collected By, a signature field, and sets the stage to Collected. Replaces the paper slip.
  • Nominate a Collector - public form the customer fills from a link in the ready message when someone else is picking up for them. Writes to Nominated Collector and ID Required.
  • Change of Plan - a one-click form from the reminder message with three options: still coming, need more time, cancel and refund. Answers write straight to the pipeline stage.
  • Uncollected Debrief - internal form the shop floor completes when breaking a bag down, forcing Uncollected Reason to be filled rather than guessed at later.

BO's role and guardrails

BO handles the inbound half of the conversation so the shop floor is not answering the same four questions all day.

  • In scope: confirming whether an order is ready, reading back the Order Reference and Collection Location, quoting the collection point hours from the calendar, extending a collection deadline once within policy, taking a nominated collector name, and recording a cancellation request.
  • Out of scope and escalated: refunds, disputes about missing or wrong items, anything involving a payment change, age-restricted collections, and any message where the customer expresses dissatisfaction. BO hands these to a human with a summary.
  • Guardrails: BO never states a collection time outside calendar availability, never promises a specific staff member, never discusses stock availability for items not on the order, and never extends a deadline more than once without human approval. If BO cannot match an inbound message to an active order, it asks for the Order Reference once, then escalates rather than guessing.

Numbers and channels

  • A dedicated SMS number per branch where branches run their own collection desks, so replies land with the team who has the bag. A single shared number works for centralized operations.
  • Email as the primary carrier of the ready notification, because it holds the order detail, the map link, and the barcode image.
  • SMS as the carrier of urgency: the reminder and the final notice, kept short and action-first.
  • WhatsApp or the platform's chat widget as an inbound catch, routed into the same conversation thread so BO and staff see one history.
  • Internal notification to a staff channel or Slack when an order hits Final Notice with a high Order Value Band, so someone picks up the phone.
03

How it runs, step by step

  1. A customer places an order online and selects collection at the Riverside branch. The store system passes the order to the platform through the order webhook. A contact is created or matched on email and mobile, and an opportunity is created in the Click and Collect pipeline at Order Received with Order Reference, Collection Location, Item Count and Order Value Band populated.
  2. Within two minutes the customer gets an order acknowledgement email: what they bought, which branch, and the line "We will message you the moment it is on the shelf - please wait for that before coming in." This single sentence prevents the most common click and collect failure, which is a customer arriving before the order is picked.
  3. A picker opens the branch task list, picks the order, and marks it picked. The opportunity moves to Picking. No customer message fires here - the customer does not need a running commentary.
  4. The bag is labeled with the Order Reference and placed on the shelf. Staff drag the opportunity to Ready for Collection, or the store system fires the ready webhook. Ready Timestamp is stamped, Collection Deadline is calculated, and the tag cc-ready is applied.
  5. The Order Ready workflow fires immediately. Email first, with the barcode image, the Order Reference in large type, the Collection Location with a map link, the desk hours pulled from the Collection Point Hours calendar, the Collection Deadline, and - if cc-id-required is present - a paragraph on what ID to bring. SMS follows ten minutes later with the one-line version.
  6. The customer reads the SMS, but cannot get in that week. They tap the Change of Plan link and choose "need more time". The opportunity stays in Ready for Collection, Collection Deadline extends by your standard extension period, and the reminder clock resets. BO confirms in the thread: "No problem. Your order is held until Friday the 14th. Reference RVS-4471."
  7. Forty-eight hours after Ready Timestamp with no collection scan and no change of plan, the opportunity moves to Reminder Sent, Reminder Count increments to 1, and the first reminder SMS goes out, timed to land inside the branch's open hours rather than at whatever hour the 48 hours happened to expire.
  8. The customer replies to the SMS asking whether their partner can collect instead. BO recognizes the intent, sends the Nominate a Collector form link, and when it comes back writes the name into Nominated Collector and posts a note on the opportunity so the desk sees it on handover.
  9. Two days before Collection Deadline, the opportunity moves to Final Notice. A dual-channel message goes out stating the exact date the order will be returned to stock and what happens to the payment. Because Order Value Band is high, an internal task is also created for the branch manager: "Call before return to stock - RVS-4471."
  10. The partner arrives at the desk and gives the reference. Staff scan the barcode or open the Collection Confirmation form, check the nominated collector name, capture the signature, and submit. The opportunity moves to Collected, Collected By is filled, cc-order-active is removed and cc-collected applied. All pending reminder steps are canceled by the exit condition, so no message chases an order that is already in the customer's hands.
  11. Two hours after collection the customer receives a short thank-you with a review request link and, if this is their third collection, the cc-repeat-collector tag is applied and they drop into the loyalty segment.
  12. Had nobody come, the deadline workflow would have moved the opportunity to Uncollected - Returned to Stock, created the breakdown task for the shop floor, required the Uncollected Debrief form to set Uncollected Reason, applied cc-uncollected, and sent one final courteous message explaining the refund timeline - not silence, which is what produces the complaint.
  13. At the end of each week the branch manager opens the pipeline board. Every bag on the physical shelf has an opportunity in Ready for Collection, Reminder Sent or Final Notice, and anything in those three stages longer than the holding period is visible at a glance. The board and the shelf agree, which is the point of the whole build.
04

Automations in detail

1. Order Received - acknowledgement and expectation setting

Trigger: order webhook received from the store system with fulfillment method equal to collection.

Conditions: proceed only if Order Reference is present and either email or mobile is present. If both contact channels are missing, create an internal task for the branch and exit.

  • Create or update the contact, matching on email first then mobile. Apply tag cc-order-active.
  • Create opportunity in Click and Collect at Order Received. Write Order Reference, Collection Location, Item Count, Order Value Band, Collection Method.
  • If any line is age-restricted, apply cc-id-required and set ID Required to yes.
  • Wait 2 minutes, then send email, subject "Order {{Order Reference}} received - we will tell you when it is ready". Body: "Thanks {{first name}}. Your {{Item Count}} item order is booked for collection at {{Collection Location}}. We are picking it now. Please wait for our Ready to Collect message before coming in - it usually lands the same day. Your reference is {{Order Reference}}."
  • Create internal task for the branch picking queue, due in 4 hours: "Pick {{Order Reference}} - {{Item Count}} items."

Stop conditions: exit on order cancellation webhook, or when the opportunity reaches Collected or Uncollected.

2. Order Ready - multi-channel notification

Trigger: opportunity stage changes to Ready for Collection, whether moved by staff or by the ready webhook.

Conditions and branches: branch on Collection Method. Desk, locker and kerbside each get different copy. Branch again on cc-id-required to include or omit the ID paragraph.

  • Stamp Ready Timestamp to now. Calculate Collection Deadline as Ready Timestamp plus the holding period. Apply cc-ready. Set Reminder Count to 0.
  • Send email immediately. Subject: "{{Order Reference}} is ready to collect at {{Collection Location}}". Body carries the barcode image, the reference in large type, the desk hours pulled from Collection Point Hours, the map link, the Collection Deadline in plain words, and the Nominate a Collector link. ID branch appends: "Because this order contains an age-restricted item, please bring photo ID."
  • Locker branch replaces the desk paragraph with the PIN and the 24-hour access note.
  • Wait 10 minutes - deliberate, so email arrives first and the SMS confirms rather than duplicates.
  • Send SMS: "{{Business name}}: order {{Order Reference}} is ready at {{Collection Location}}. Open {{desk hours today}}. Held until {{Collection Deadline}}. Cannot make it? {{Change of Plan link}}"
  • Wait until inside branch open hours before sending the SMS if the 10-minute wait lands outside them.

Stop conditions: stage leaves Ready for Collection; Collection Confirmation form submitted; contact opted out of SMS, in which case the email path still completes.

3. First collection reminder at 48 hours

Trigger: 48 hours elapsed since Ready Timestamp.

Conditions: stage is still Ready for Collection, Reminder Count is 0, no Change of Plan submission in the last 48 hours.

  • Wait until the next window inside branch open hours - never message about a closed desk.
  • Move stage to Reminder Sent. Increment Reminder Count to 1. Apply cc-reminded.
  • Send SMS: "{{Business name}}: your order {{Order Reference}} is still waiting at {{Collection Location}}. We hold it until {{Collection Deadline}}. Need longer, or want someone else to collect? {{Change of Plan link}}"
  • Wait 6 hours. If no inbound reply and no form submission, send email with the full detail again, subject "Still here for you - {{Order Reference}}", and repeat the desk hours for the next three days so the customer can find a slot that works.
  • If the contact is SMS-opted-out, skip to the email step immediately.

Stop conditions: stage moves to Collected, Uncollected or Final Notice; Change of Plan submitted; inbound reply received, which hands the thread to BO.

4. Final notice and deadline countdown

Trigger: 48 hours before Collection Deadline.

Conditions: stage is Ready for Collection or Reminder Sent. Branch on Order Value Band.

  • Move stage to Final Notice. Apply cc-final-notice. Increment Reminder Count.
  • Send SMS inside open hours: "{{Business name}}: last chance on order {{Order Reference}}. If it is not collected by {{Collection Deadline}} we return it to stock and refund your payment. Collect, extend or cancel here: {{Change of Plan link}}"
  • Wait 1 hour, then send email with the same content plus the refund timeline in full sentences, because this is the message most likely to be forwarded or screenshotted.
  • High value band branch: create a task for the branch manager due same day - "Call {{first name}} before return to stock - {{Order Reference}}" - and post to the staff Slack channel. A phone call saves orders that text does not.
  • Low value band branch: no human task. The messaging stands alone.
  • Wait 24 hours. If still uncollected, send one short SMS the morning of the deadline: "Today is the last day to collect {{Order Reference}}."

Stop conditions: Collection Confirmation submitted; Change of Plan extension granted, which resets Collection Deadline and returns the opportunity to Ready for Collection; cancellation requested; Reminder Count reaches 4, which is a hard ceiling so no contact is ever chased further.

5. Uncollected - return to stock and refund handoff

Trigger: Collection Deadline passes with stage still in Final Notice.

Conditions: no extension on record. If an extension was granted within the last 24 hours, exit and let the reset deadline govern.

  • Move stage to Uncollected - Returned to Stock. Apply cc-uncollected, remove cc-order-active and cc-ready.
  • Create a shop floor task: "Break down {{Order Reference}} and return {{Item Count}} items to stock", with the Uncollected Debrief form attached. The task cannot be closed without the form, which forces Uncollected Reason to be recorded.
  • Send email: "We have returned order {{Order Reference}} to stock. Your payment of the order total is being refunded to the original method and will usually appear within your bank's normal processing time. Nothing else is needed from you. If you still want these items, you are welcome to order again or reply to this message and we will help." No currency amount is stated in the template - the order total merges from the order record.
  • Notify the branch manager with the reason once the debrief form is in.
  • Check prior history. If this contact now has two or more opportunities carrying cc-uncollected, apply cc-serial-noshow and create a task for the manager to review whether future collection orders need a different approach.

Stop conditions: exit if a late collection happens before breakdown - the Collection Confirmation form overrides and reopens the opportunity to Collected with a note.

6. Collection confirmed - close, thank and route to loyalty

Trigger: Collection Confirmation form submitted, or barcode scanned at the desk.

Conditions: an active opportunity exists for that Order Reference.

  • Move stage to Collected. Write Collected By from the form. Remove cc-order-active, cc-ready, cc-reminded, cc-final-notice. Apply cc-collected.
  • Cancel every pending step in workflows 3, 4 and 5 for this contact. This is the most important line in the build - a reminder that arrives after collection destroys trust in every other message you send.
  • Wait 2 hours, then send SMS: "{{Business name}}: thanks for collecting {{Order Reference}}. How did we do? {{review link}}" - sent only if marketing consent is present.
  • Count prior Collected opportunities. On the third, apply cc-repeat-collector and add the contact to the loyalty segment.
  • If cc-serial-noshow is present, remove it after two consecutive clean collections.

Stop conditions: single-pass workflow, no re-entry for the same Order Reference.

7. Change of Plan handler

Trigger: Change of Plan form submitted.

Branches on the answer:

  • Still coming: add a note, suppress the next reminder only, leave stage and deadline untouched. Reply by SMS: "Great - we will keep {{Order Reference}} on the shelf for you."
  • Need more time: check extension history. If none, extend Collection Deadline by the standard extension period, return stage to Ready for Collection, reset Reminder Count to 0, and reply: "Done. {{Order Reference}} is held until {{Collection Deadline}}." If an extension already exists, do not extend again - create a task for a human to decide and reply: "Let me check that with the branch and come back to you today."
  • Cancel and refund: move stage to Uncollected - Returned to Stock with Uncollected Reason set to changed mind, create the breakdown task, and send the refund email from workflow 5. Do not send the chase messages.

Stop conditions: one submission per order governs; a second submission replaces the first and re-enters the correct branch.

8. BO inbound order status handler

Trigger: inbound SMS, WhatsApp or chat message from a contact carrying cc-order-active.

Conditions: BO matches the message to the active opportunity. If the contact has more than one active order, BO asks which reference before answering.

  • Intent is status: BO answers from the stage. Ready for Collection or later gives "Yes - {{Order Reference}} is on the shelf at {{Collection Location}}, open {{desk hours}}." Picking gives "It is being picked now, you will get a message the moment it is on the shelf."
  • Intent is hours or directions: BO reads availability from the Collection Point Hours calendar and sends the map link. BO never states hours for a day the calendar shows as closed.
  • Intent is someone else collecting: BO sends the Nominate a Collector form and confirms on submission.
  • Intent is more time: BO applies the single-extension rule from workflow 7 and never grants a second extension itself.
  • Intent is refund, wrong item, missing item, or any complaint sentiment: BO stops, posts a summary note on the opportunity, assigns the conversation to the branch inbox, and replies once: "I am passing this to the team at {{Collection Location}} - they will come back to you shortly."
  • Wait 5 minutes after any escalation, then notify the branch channel if the conversation is still unassigned.

Stop conditions: BO stands down entirely for the rest of the conversation once a human replies, and does not resume until the next distinct inbound thread.

05

What changes

Before this build, the state of a click and collect order lives in three incompatible places: the store system, a printed slip, and the memory of whoever was on shift. After it, the state lives in one pipeline, and the pipeline drives the messaging rather than the messaging being an afterthought. The shelf empties because the customer is nudged three times on channels they read, and the customers who genuinely cannot collect say so through the Change of Plan form instead of going quiet, which converts an ambiguous bag into either an extension or a clean refund.

The shop floor stops answering "is my order ready?" by hand. BO takes those messages, reads back the Order Reference and the desk hours, and only escalates the handful that involve money or a complaint. Handover gets faster because the ready message already told the customer the reference, the door, the hours and the ID requirement, so the desk interaction is a scan and a signature instead of an investigation.

Measure these, weekly, per branch:

  • Collection rate within 48 hours of Ready Timestamp - the headline number. If reminders are working, this climbs first.
  • Uncollected rate - opportunities reaching Uncollected - Returned to Stock as a share of all orders reaching Ready for Collection.
  • Average days on shelf - Ready Timestamp to Collected. This is the shelf-space cost in a single figure.
  • Reminder-to-collection conversion - collections occurring within 24 hours of a reminder, split by reminder 1 and final notice, so you can see which nudge earns its keep.
  • Change of Plan mix - still coming versus need more time versus cancel. A rising cancel share usually means a picking or expectation problem upstream, not a messaging problem.
  • Uncollected Reason distribution - the field that tells you whether to fix comms, stock accuracy or opening hours.
  • BO containment - share of inbound collection conversations closed without a human, and the escalation reasons behind the rest.
  • Serial no-show count - contacts carrying cc-serial-noshow, a small number worth watching before it becomes a policy question.
06

Before you start

Data and systems

  • An order feed from the commerce platform or EPOS into the platform, carrying order reference, customer email, customer mobile, branch, line count and order total. Shopify, WooCommerce and most modern EPOS systems can do this natively or through Zapier or Make. Confirm the ready-for-collection event exists as a distinct trigger - if the store system only fires on fulfillment, you will need staff to move the stage by hand, which is workable but must be designed in.
  • Agreement on a single Order Reference format. Mixed formats across web and in-store orders break every lookup BO tries to do.
  • Barcode or QR generation for the ready email if the desk scans to retrieve. If not, plain reference text is fine.
  • Branch list with real, current collection desk hours - not shop hours, if those differ.
  • A written holding period and extension policy. The build needs a number to calculate Collection Deadline from, and the number has to match what your terms of sale actually say.

Numbers and messaging compliance

  • Provision an SMS-capable number per branch or one central number, and complete A2P 10DLC registration in the United States before any volume sending. Registration takes time and unregistered traffic gets filtered, so start it on day one rather than the week of launch. In other markets, confirm the equivalent sender registration or alphanumeric sender ID requirements.
  • Transactional order notifications sit differently from marketing under most regimes, but do not assume the distinction protects you. Keep the ready, reminder and final notice messages strictly operational, with no promotional content, and run anything promotional - the post-collection review request included - against marketing consent rather than the order relationship.
  • Implement opt-out handling on every SMS path: STOP, UNSUBSCRIBE and STOPALL honoured automatically, with the opt-out state respected across all workflows so an opted-out contact cannot be reached by the chase sequence. Decide in advance how you will notify an opted-out customer whose order is about to be returned to stock - usually email plus a phone task.
  • Set quiet hours and enforce them at the workflow level, not just the account level. Reminders should land inside branch open hours; a 48-hour timer that expires at 03:00 must hold until the branch opens. Build the wait-until-window step rather than trusting the timer to be polite.
  • Include the branch or brand name in the first line of every SMS so an unrecognised number does not read as a scam.

Data protection

  • You are storing a name, a cell number, an order history and a signature at handover. Decide your retention period for the signature and the Collected By field, and set a deletion rule rather than keeping them indefinitely.
  • The Nominated Collector field holds a third party's name, collected from your customer. Note the lawful basis and keep the field minimal - a name, not an address or date of birth.
  • Where ID is checked for age-restricted lines, record only that the check passed, never the document details.
  • These are operational pointers, not legal advice. Confirm your lawful basis, retention periods, consent wording and ID-handling practice with the client's own counsel or data protection adviser before launch.

People

  • One named owner per branch for the pipeline board, with a standing instruction that the board and the shelf must agree at open and at close.
  • A ten-minute shop floor briefing on two things only: move the stage when the bag goes on the shelf, and submit the Collection Confirmation form at handover. Everything else in the build runs itself.
  • Scoping the order feed, the branch structure and the holding policy is the part that varies most between retailers. Book a call at bookings.appbo.io to walk through yours.
Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call