1. Trade identification and triage
Trigger: any inbound - retail contact form, chat message, SMS, trade number call, or social DM - containing a trade intent. Intent markers: wholesale, trade, bulk, stockist, reseller, distributor, "for my shop", "for my business", a quantity above your retail norm, or a message sent from a business domain email.
Conditions and branches:
- Apply trade-inquiry immediately and remove the contact from all retail marketing workflows. This single step prevents the most embarrassing failure in the build.
- Create an opportunity in Wholesale at Inquiry Received, writing Inquiry Source.
- Run Quick Trade Triage: buying for a business, approximate units, registered business number held. BO asks these conversationally in chat or SMS; the embedded form handles web.
- All three positive: send the Trade Application link and proceed to workflow 2.
- No business number and low quantity: move straight to Declined - Not Trade, set Decline Reason, apply trade-not-trade, and send the retail routing message: "We only supply trade accounts with a registered business, but everything is available on our shop here: {{retail link}}" Then exit.
- Ambiguous - business number but tiny quantity, or large quantity but no business: send the application anyway and flag for manual review. Let a human decide rather than declining a borderline case automatically.
- Out-of-hours call to the trade number: voice AI captures name, business name, territory, callback preference and the inquiry in one minute, creates the opportunity, and sends the application link by SMS before the caller hangs up.
Stop conditions: declined as not trade; contact already carries trade-not-trade, in which case route to retail silently and do not re-trigger the trade path.
2. Application chase
Trigger: Trade Application link sent and 24 hours elapsed with no submission.
Conditions: opportunity still at Inquiry Received. Branch on whether page one was started.
- Started but abandoned branch: send SMS after 24 hours - "{{Business name}}: you got halfway through the trade application. Pick up where you left off: {{resume link}}" A resume link rather than a restart link roughly doubles completion.
- Never started branch: send email after 24 hours restating what approval unlocks - the full line sheet, trade pricing, and a direct contact - and nothing about the price itself.
- Wait 3 days. Second chase, one message only, on the channel the inquiry arrived through.
- Wait 7 days. Final chase, deliberately low pressure: "Still happy to set you up whenever the timing is right - the application stays open: {{link}}"
- At 14 days with no submission, move to Dormant - Nurture and drop into a quarterly trade newsletter cadence. Do not keep chasing. Buyers reappear on their own buying cycle, not yours.
Stop conditions: application submitted; contact asks to stop; declined.
3. Verification
Trigger: Trade Application submitted. Opportunity moves to Application Submitted, then Verifying.
Checks, in order:
- Registration number format and, where an API is available, a live lookup against the national register. Mismatch between registered name and Trading Name is flagged, not failed - the mismatch is normal for many small retailers.
- Tax or tax ID (EIN) format validation.
- Website or Shop URL resolves, is a trading site rather than a parked domain or a single social page, and shows a physical address where Business Type is bricks and mortar.
- Email domain check: a free email provider with a claimed multi-site business is a flag for manual review, not an automatic decline.
- Competitor check: match the business name and domain against your own competitor list. Any match applies trade-competitor-suspected and hard-blocks the line sheet pending human review, with no message sent to the applicant.
- All clear: set Verification Status to verified, apply trade-verified, continue to workflow 4.
- Any flag: set manual review and create a task for the wholesale lead, due in 4 hours during business hours. Send the applicant one holding message: "Thanks - your application is with our team and you will hear back within one working day." Say nothing about what is being checked.
- Clear failure, such as an invalid registration number: set failed, apply trade-verification-failed, and send a single message inviting correction once: "We could not verify the registration number you gave us - reply with the correct one and we will pick this straight back up."
Stop conditions: verification failed twice, which moves to declined with the reason set; competitor suspected, which holds indefinitely until a human acts.
4. Qualification scoring and tier assignment
Trigger: Verification Status set to verified.
Scoring inputs - each contributes to Qualification Score:
- Number of Locations: multi-site scores highest, single site mid, online-only lower, no verifiable premises lowest.
- Estimated Annual Volume band: the heaviest single weighting.
- Years Trading: more than three years scores well, under one year scores low but does not disqualify.
- Business Type: bricks and mortar and established online retail score well; marketplace seller scores neutral and applies trade-marketplace-seller; distributor routes to manual review regardless of score, because a distributor deal is a strategic decision not a tier.
- Currently Stocks Competing Brands: yes scores positively - they already buy this category.
- Categories of Interest: alignment with your trade-available range. A mismatch sets Decline Reason to category mismatch.
- Delivery Expectation: an immediate or ongoing program scores above a vague next-season interest.
- Tier A: score above the upper threshold, or any multi-site verified retailer. Apply trade-tier-a, assign the senior rep, move to Qualified - Tier A, post to Slack within one minute.
- Tier B: mid band. Apply trade-tier-b, assign by round robin, move to Qualified - Tier B.
- Tier C: below threshold but genuine. Apply trade-tier-c, move to Qualified - Tier C - Self Serve, and route to the self-serve trade portal with no rep assigned.
- Below the floor or category mismatch: move to a declined stage with the reason set.
Stop conditions: no tier is assigned while trade-competitor-suspected or an uncleared territory flag is present.
5. Territory conflict gate
Trigger: tier assigned to A or B.
Conditions: this gate runs before any pricing is released. Nothing bypasses it.
- Match Territory against the stockist list. Where an exclusive or near-exclusive stockist holds the territory, apply trade-territory-conflict and create a decision task for the wholesale lead with both accounts named. Send the applicant a holding message only.
- Where no conflict exists, the rep completes the Territory Conflict Check form to clear it on record. The form submission is what releases the line sheet - a deliberate human gate on the one irreversible action in the build.
- Conflict confirmed and not supplyable: move to Declined - Territory Conflict and send a straight, non-specific message: "We are not able to take on another account in your area at the moment. If that changes we will come back to you - and if your situation changes, do tell us." Never name the existing stockist.
- Conflict resolvable - different channel, different categories, or the incumbent is lapsed: the lead overrides, notes the reasoning on the opportunity, and clears the gate.
- Wait 24 hours. If the decision task is untouched, escalate to the owner. A buyer waiting on an internal argument is a buyer signing with someone else.
Stop conditions: gate cleared, which releases workflow 6; declined; applicant withdraws.
6. Tier A fast lane
Trigger: territory gate cleared on a trade-tier-a opportunity.
Conditions: Assigned Rep populated. Email only outside trading hours; SMS steps hold until the window opens.
- Send email immediately, from the rep's own address: "{{first name}} - you are approved. Attached is the full line sheet and our trading terms in brief. I have kept Thursday and Friday open if you want to walk through the range: {{Trade Discovery Call link}}. Anything you need before then, reply straight to me." Move to Line Sheet Sent.
- Create a task for the rep, due within 2 business hours of the next working day: "Call {{Business Name}} - Tier A, {{Territory}}, interested in {{Categories of Interest}}."
- Wait 24 hours. If no call booked and no reply, send SMS inside trading hours: "{{rep name}} from {{Business name}} - sent your trade pack over yesterday. Worth a quick call this week?"
- Wait 3 days. If still nothing, the rep calls directly. Three touches across three channels inside four days, then stop.
- On booking, send the confirmation with the stated agenda - categories, volume, delivery timing, terms - plus a reminder 24 hours and 1 hour before.
Stop conditions: call booked, which moves the sequence to the pre-call workflow; applicant replies, which hands the thread to the rep and cancels all automated steps; no engagement after three touches, which moves to Dormant - Nurture.
7. Tier B standard lane and Tier C self-serve
Trigger: territory gate cleared on trade-tier-b, or tier assigned as trade-tier-c.
Tier B branch:
- Wait until the next trading-hours window, then send the line sheet, terms summary and booking link from the assigned rep. Move to Line Sheet Sent.
- Wait 2 days, then send email 2: a short case-free note on how other independents typically open an account - which categories, what opening order shape, what lead time.
- Wait 5 days. If no engagement, send one SMS. Then stop and move to Dormant - Nurture after 14 days.
- Create a rep task only if the line sheet is opened twice or any link is clicked - engagement-triggered, so rep time goes where there is interest.
Tier C branch:
- Send the self-serve portal credentials, the published trade terms and the minimum order policy. No rep, no call link. Move to Qualified - Tier C - Self Serve.
- Wait 7 days. If no order, send one nudge with the portal link and an offer to answer questions through BO.
- If a Tier C account places two orders above the Tier B volume threshold, re-score automatically and promote to Tier B with a rep assigned. The ladder matters - today's small account is often next year's Tier A.
Stop conditions: order placed; applicant asks to stop; promoted by re-scoring.
8. Sampling, quoting and terms
Trigger: Sample Request submitted, or the rep moves the opportunity to Sampling.
- Create the fulfillment task with the sample list, delivery address and named recipient. Move to Sampling.
- Send dispatch confirmation with tracking when the task closes.
- Wait 7 days from delivery, then send one follow-up: "How did the samples land with you? Happy to put a quote together whenever you are ready."
- Wait 7 more days. Second and final follow-up, then create a rep task rather than sending a third message. Samples are expensive and the follow-up should end with a human, not a sequence.
- On quote issued: move to Quote Issued, generate the pro forma through the accounting integration, and set a 7-day validity. Send a reminder 2 days before expiry: "Your quote holds until {{date}} - say the word and we will get it into production."
- On terms request: move to Negotiating Terms and suppress every automated message in the thread. BO is locked out entirely. Create a task for the rep and, where credit terms are requested, a second task for finance to run whatever credit check your policy requires.
- On acceptance: move to Won - Onboarding, send the Onboarding Pack, apply trade-active-stockist, and create the first-order fulfillment task.
Stop conditions: quote expires, which moves the opportunity to Dormant - Nurture with a note; declined; order placed.
9. Won account onboarding and reorder program
Trigger: opportunity moves to Won - Onboarding.
- Send the Onboarding Pack: trading terms for acceptance, delivery addresses, invoicing contact, purchase order process, and the rep's direct line.
- Wait until the first order ships, then send the merchandising support pack - product imagery, copy, care information, and anything that helps them sell it rather than just stock it.
- Wait 14 days from delivery, then send the first check-in from the rep: "How is it moving? Anything you need more of?" One question, no pitch.
- Schedule a recurring Reorder Review appointment quarterly, and create a rep task 7 days before each one with the account's order history attached.
- Lapse detection: if no order for a period exceeding one and a half times the account's own average reorder gap, apply trade-lapsed-stockist, alert the rep, and create a call task. No automated discount message - a lapsed trade account needs a conversation, not an offer.
- Annually, re-run the scoring with actual order data instead of estimates, and move the account between tiers on evidence rather than on what it said on its application.
Stop conditions: account closed; rep marks the relationship as ended with a reason; a terms dispute, which suspends all automated sending until finance clears it.