
Picture the DM. It is Tuesday night and you are finally sitting down when your phone buzzes:
"omg your ranunculus 😍 can i order a dozen for pickup saturday??"
You heart it. You mean to reply properly in the morning. Morning becomes harvest, harvest becomes market prep, and Saturday comes and goes. The dozen never gets made. The customer buys flowers somewhere else. You remember the DM on Sunday night, and it stings, because that was a real order from a real person who wanted to pay you.
That is the whole problem with Instagram. It is the best place to get a custom order and the worst place to manage one.
I run Vancouver Pushpanjali Flower Farm in Burnaby, BC. For years our custom orders lived exactly like that: DMs about festival marigolds, texts about tulips, and a spreadsheet I updated when I remembered, which was not often. The first week we ran every ask through a real system instead, custom flower sales were up 48% versus the week before, 22 new customers paid us through Instagram and email, and three times as many orders were paid before pickup day. Same flowers, same customers. The only thing that changed was the workflow.
This post is that workflow. It works whether you sell flowers, cakes, candles, or anything else people order by DM.

Festival marigold orders: the kind of ask that used to arrive as a DM and die in the thread.
Why DMs are perfect for getting orders and terrible for keeping them

Nobody wakes up and decides to browse a contact form. They see your work in their feed, they get excited, and they message you in the moment. That is why the DM is unbeatable for demand: zero friction, the customer is already there, and the thing they want is right in front of them.
But a DM thread has no fields, no payment button, and no memory. There is no "order number." There is no line that says paid or unpaid. Threads bury each other, the same customer messages you on two different posts, and the pickup date they mentioned in March lives three scrolls above the design change they sent in April.
So the fix is not to stop taking orders by DM. The fix is to give every DM order a structure the moment you decide it is real.
The workflow: five steps from DM to paid pickup

1. Answer with questions, not a price
The first reply decides whether this becomes an order or a ghost. Do not quote a price yet. You do not know enough, and a number thrown out in a thread becomes the number they remember, even if the job turns out bigger.
Ask the four things every custom order needs: what, how many, when, and budget. Here is a template you can steal:
Thanks so much! I can do that. Quick questions so I quote it right:
1. How many / what size are you thinking?
2. What date do you need it for?
3. Any colors, flavors, or details I should know?
4. Rough budget, so I stay inside it?
Once I have that I will send you a proper quote you can pay online.
This does three jobs at once. It shows you are professional, it filters out the people who were never serious (they will not answer four questions), and it gives you everything you need for step two.
2. Quote outside the DM
Never leave the price inside the thread. A price in a DM gets misremembered, screenshotted out of context, and haggled. Send a real quote with a pay button instead: itemized, dated, with a pickup or delivery date on it.
On our farm this was the single biggest change. Before, I would type "yeah about $60" in a thread and then spend two weeks chasing. Now the customer gets a Shopify invoice link. It lists exactly what they are getting, it has a checkout button, and the quote carries a deadline you set. Quotes with deadlines get paid. Quotes without them become conversations.
3. Get paid before you make anything
This is the rule that changed everything for us, and it is the one makers resist most. It feels pushy. It is not. It is the difference between a business and a hobby that sometimes gets paid.
Our policy now: small orders are paid in full before we start. Big orders (weddings, events) pay a deposit to hold the date, balance due two weeks out. Nobody's bouquet gets cut, nobody's cake gets baked, on a maybe.
Here is the exact language we use, and nobody has ever been offended by it:
Your quote is ready! Here is the link to pay: [link]
Once it is paid I will lock in your pickup for [date]. I start making orders in paid order, so this holds your spot.
"So this holds your spot" is the whole trick. You are not demanding money. You are protecting their date.
4. Lock the pickup date when they pay, not before
A pickup date discussed in DMs is a suggestion. A pickup date attached to a paid order is a commitment. Only put it on the calendar when the money clears, and send a confirmation the customer can find later:
Paid, thank you! You are locked in for pickup Saturday, May 16, 10am to 2pm at [address]. I will message you the morning of.
Now there is no "wait, I thought it was Sunday" because the confirmation exists outside the thread.
5. Keep one record per order
Every custom order should live in exactly one place with five things attached: the customer, the original conversation, the quote, the payment status, and the pickup details. We call this a ticket. Before we had tickets, an order was a DM thread plus a spreadsheet row plus a memory. After, it was one screen I could check from the field.
You can do this with a notebook, a spreadsheet, or software. The tool matters less than the rule: one order, one record, updated the day anything changes.
Where orders actually die: the five leaks
If you only fix these five, you will keep more orders than any new marketing could win you:
- The buried DM. You hearted it, you meant to reply, it slid under six newer threads. Fix: a daily sweep (below), and never heart an ask you have not answered.
- The verbal quote. A price typed in a thread, remembered differently by both sides. Fix: step two. Quotes live on a link, not in chat.
- The "pay at pickup." You made it, they no-showed, and now you own a custom thing nobody wants. Fix: step three. Paid before you start, always.
- The date change in a different thread. They moved the wedding in the email thread but the pickup is in the DM thread. Fix: step five. One record per order, and the customer confirms changes in writing.
- The spreadsheet nobody updates. It was accurate in February. Fix: the record gets updated the day anything changes, by whoever touched the order last.
The 15-minute daily system
None of this works without a routine. Ours takes fifteen minutes:
Morning, with coffee: open every unread DM. Sort asks from chatter. Anything that is a real order gets the four questions (template one) immediately. Do not wait until you "have time to do it properly." The fast, slightly imperfect reply beats the perfect reply sent Thursday.
Midday: send every quote that is ready, with a link and a deadline. Quotes go out within 24 hours of the ask or the customer cools off.
Evening: check what is unpaid. Anything quoted more than three days ago gets the nudge:
Just checking in! Your quote for [item] is still open here: [link]. I hold unpaid quotes for 7 days, then I release the date. Want me to keep your spot?
That last line, "want me to keep your spot," gets more replies than any discount ever has.
What this looks like with a little help

Everything above works with DMs, a phone, and discipline. The reason we built IntoPaid is that discipline breaks at volume. When thirty festival orders land in one week, no morning routine survives.
So now our DMs work like this: a customer messages us as usual, and when we are ready to quote, we tag @intopaid in our reply. That ask becomes a ticket with the customer, the item, and the pickup attached. We build the quote from our actual Shopify products, the customer pays through Shopify checkout, and the paid order lands on the pickup calendar. The DM stays the front door. Everything behind it stops living in my head.

Paid orders on the calendar mean the field work comes first.
We are opening soon. If your next custom order is probably already sitting in your inbox unread, join the waitlist and turn it into a paid order when we open. No card required.