PlanFlowers Logo
Back to Blog

How We Automate Flower Deliveries (Behind the Scenes)

A look at the technology and systems that power PlanFlowers' automated delivery service. From scheduling to fulfilment, here's how it all works.

How We Automate Flower Deliveries (Behind the Scenes)

When we tell people that PlanFlowers sends flowers automatically on their important dates, the first question is usually: "But how does that actually work?"

Fair question. The idea of setting something once and having it reliably happen every year does sound a bit like magic. So let's pull back the curtain and show you exactly how our system works.

The Core Problem We're Solving

Traditional flower delivery is surprisingly manual. You need to:

  1. Remember the date is coming up
  2. Find time to order
  3. Choose an arrangement
  4. Enter delivery details
  5. Complete payment
  6. Hope it all goes smoothly

That's a lot of steps, and any one of them can fail. You forget, you get busy, the website times out, your card declines - suddenly, the flowers don't arrive.

Our goal was to eliminate every possible point of failure.

How Our System Works

Step 1: You Set Up Your Occasions (Once)

When you create an occasion with PlanFlowers, you're essentially programming a delivery:

  • Who is receiving the flowers
  • Where they should be delivered
  • When the delivery should happen (annually, on this date)
  • What arrangement you want sent
  • How we should charge you

This information is stored securely in our database, ready to be acted on.

Step 2: The Two-Week Countdown Begins

Our system runs a daily check at 9am Sydney time. It looks for any occasions where the delivery date is exactly 14 days away.

Why 14 days? It gives us time to:

  • Process the payment
  • Handle any payment issues
  • Prepare the order with our florist partners
  • Allow you to make last-minute changes if needed

Step 3: Automatic Payment Processing

When an occasion hits the 14-day mark, we automatically charge the saved payment method. This happens without any action required from you.

If the payment succeeds, you receive an email confirmation showing:

  • What's being delivered
  • Where it's going
  • The total charged
  • A deadline for any changes (7 days before delivery)

Step 4: Handling Payment Failures

Sometimes payments fail - cards expire, limits are reached, accounts have issues. Rather than immediately cancelling your order, we:

  1. Send you an email explaining the issue
  2. Retry the payment daily
  3. Give you up to 7 days before the delivery date to resolve it

Only if payment hasn't succeeded by 7 days before delivery do we cancel the order. This happens rarely, but we designed the system to be forgiving.

Step 5: Florist Coordination

Once payment is confirmed, your order enters our fulfilment queue. Our team coordinates with local florist partners to ensure:

  • Fresh flowers are sourced
  • Your card message is included
  • Delivery is scheduled for the correct date

We work with established Sydney florists who understand our reliability requirements.

Step 6: Delivery Day

On the occasion date, flowers are delivered to your recipient. We track delivery confirmation and notify you when they've arrived.

For recurring occasions, the whole process automatically repeats next year.

The Technology Behind It

For the technically curious, here's a high-level view of our stack:

Frontend: Next.js with React, hosted on Vercel. This gives us fast load times and reliable uptime.

Database: PostgreSQL via Supabase. All your occasion data is stored securely with row-level security - you can only see your own data.

Payments: Stripe handles all payment processing. We never see your full card number - Stripe securely stores your payment method and we reference it via a token.

Scheduling: Vercel Cron jobs run our daily processes. They're reliable, monitored, and automatically retry if anything goes wrong.

Email: Transactional emails go through Resend, ensuring high deliverability for important notifications.

Why We Charge 14 Days Early

This is probably the most-asked question about our service. Why not charge on the delivery date?

Three reasons:

  1. Time to fix issues - If your card fails, you have time to update it before the delivery date passes.

  2. Better fulfilment - Florists need advance notice to source the best flowers, especially for peak periods.

  3. No peak-day chaos - On days like Valentine's Day or Mother's Day, payment systems and florists are overwhelmed. By processing earlier, we avoid the rush.

The 14-day window also gives you time to make changes. Need to update the delivery address? Change the arrangement? Cancel entirely? You can do all of this up until 7 days before delivery.

Security and Privacy

Your data is important to us. Here's how we protect it:

  • Payment data: Handled entirely by Stripe. We never store card numbers.
  • Personal data: Encrypted in transit and at rest. Row-level security means even our team can't access your data without proper authorisation.
  • Recipient data: Only used for delivery purposes. We don't market to your recipients.

What Happens If Something Goes Wrong?

No system is perfect. Here's how we handle issues:

Payment failure: Automatic retries with customer notification. Plenty of time to resolve.

Delivery issue: If flowers can't be delivered (wrong address, recipient unavailable), we attempt redelivery and contact you.

Quality problem: Not happy with what was delivered? Our customer service team will make it right, typically with a full refund or replacement delivery.

The Result: Peace of Mind

All of this technology exists for one purpose: to let you set important dates once and know they'll be handled automatically.

No calendar reminders. No panic orders. No forgotten anniversaries.

Just flowers, delivered reliably, year after year.


Ready to experience automated flower delivery? Create your first occasion and see how it works.

Enjoyed this article?

Check out more tips and guides on our blog.

View all articles