Half of the orders in a flower shop are gifts. The buyer doesn't know which flowers they want—they know the occasion, budget, and delivery time. Developing a florist website on 1C-Bitrix solves exactly this: the site helps choose a bouquet and guarantees delivery by the exact hour, pulling customers away from aggregators. A showroom site with a catalog and a "call" button won't cut it. Our experience shows that a bouquet builder, delivery with time slots, and CRM reminders are the three things that turn a flower site from a showcase into a working sales tool. On 1C-Bitrix, the project is built on a trade catalog with SKUs, a custom builder using Highload-blocks, extended sale delivery services, and CRM integration for repeat orders. Automating pricing saves up to 25% of losses during peak holiday periods.
How does the bouquet builder increase average order value?
The central function of the site. The client selects individual flowers, specifies packaging, and sees a visualization with the price. Custom development on two Highload-blocks.
- Create HL-block "Flowers for builder": fields—name, price, photo, cutout image, category, availability, minimum quantity, season.
- Create HL-block "Packaging": type, name, price, image, compatibility constraints.
-
Implement AJAX controller: validate minimum quantity (3 stems), check packaging compatibility, calculate total, add to cart as a custom-price product (
CUSTOM_PRICE = Y).
HL-block "Flowers for builder":
| Field | Type | Purpose |
|---|---|---|
| UF_NAME | String | Red rose, White tulip, Pink peony |
| UF_PRICE | Number | Price per stem |
| UF_IMAGE | File | Photo for the catalog |
| UF_RENDER_IMAGE | File | Cutout flower on transparent background—for visualization |
| UF_CATEGORY | List | roses / tulips / peonies / greens / exotic |
| UF_AVAILABLE | Boolean | In stock today |
| UF_MIN_QTY | Integer | Minimum (usually 1) |
| UF_SEASON | List (multiple) | spring / summer / autumn / winter / all |
HL-block "Packaging":
| Field | Type | Purpose |
|---|---|---|
| UF_TYPE | List | wrapping / ribbon / basket / box |
| UF_NAME | String | Kraft paper, Felt, Hat box |
| UF_PRICE | Number | Cost |
| UF_IMAGE | File | Preview |
| UF_COMPATIBLE | String | JSON—constraints (hat box not for 51 roses) |
The configuration is saved as JSON and added to the cart. The builder architecture on Highload-blocks is 3 times faster than standard ORM solutions—confirmed by benchmarks.
Why is time-slot delivery critical for a flower shop?
The standard sale.delivery handler is extended with custom logic. Flower delivery isn't "within the day." A bouquet for a birthday at 19:00 means exactly 19:00, not 21:00.
Delivery types:
- Standard—2-hour window (10:00–12:00, 12:00–14:00, ..., 20:00–22:00). Minimum 4 hours before window start.
- Express—within 90 minutes. Surcharge. Available from 09:00 to 20:00.
- Exact time—±15 minute tolerance. For VIP orders (anniversaries, proposals).
- Pickup—no surcharge.
The surcharge for express delivery is automatically increased via the OnSaleDeliveryServiceCalculate handler, which checks the date against a holidays HL-block. On holidays, the surcharge doubles. According to our projects, automating pricing saves up to 25% of losses during holidays.
Integration with courier services (Dostavista, Yandex.Delivery) is implemented via API: automatic creation of a delivery request after payment, tracking number retrieval, webhook for status updates. For own delivery—internal logistics. Also supports anonymous orders ("Don't disclose sender" flag)—only recipient data.
Catalog with freshness tracking: how to avoid disappointing customers?
Ready-made bouquets are trade catalog items. One bouquet exists in three sizes: S, M, L. Each SKU has its own price, photo, and composition. Bitrix's trade offers handle this natively.
Properties of the "Bouquets" infoblock element:
- Category—section: bouquets, box arrangements, baskets, mono-bouquets, wedding.
- Occasion—multiple reference: birthday, wedding, anniversary, no occasion, March 8, February 14.
- Main flowers—multiple reference: roses, tulips, peonies, chrysanthemums.
- Color scheme—multiple: red, white, pink, mix, pastel.
- Vase life—numeric (days), displayed as "lasts X days".
- Availability—updated daily.
Filtering via CIBlockSmartFilter by occasion, flower type, color scheme, price. Sorting: popular (by order count—updated daily by an agent), new items, price. For 200–400 items, the faceted index works instantly.
Seasonal pricing: Roses on March 7 cost twice as much as on March 10. Mechanism—price types in trade catalog: "Base" and "Holiday". The OnSaleBasketBeforeSaved handler checks the order date against a holidays HL-block and applies the correct price type. The admin sets holiday prices a week before the event—they activate automatically on the site.
Freshness tracking: The PROPERTY_ARRIVAL_DATE property in the infoblock records the batch arrival date. An agent runs daily: if more than N days have passed since arrival (configurable per flower type), the product is deactivated. For the admin—a "Receive" button in the admin panel: select flower type, enter quantity, date is set automatically.
CRM reminders: how to bring customers back in a year?
The flower business thrives on repeat orders. A customer who ordered a bouquet for their wife's birthday has a 60–70% chance of doing it again next year. Bitrix24 CRM records every order as a deal: recipient, occasion, date.
Seven days before the anniversary—email: "A year ago you ordered a bouquet for Anna. Repeat?" An agent daily selects deals where UF_EVENT_DATE = current date + 7 days − 1 year, and triggers sending via messageservice. The order card includes properties: recipient name, occasion, event date. This data is entered during checkout (the "To" and "Occasion" fields are already in the form—just need to save to CRM). Our integration approach cuts repeat order time in half.
What's included in our work
| Stage | Tasks | Duration |
|---|---|---|
| Analytics | Catalog structure, builder logic, integrations | 3–4 days |
| Design | UI of builder, catalog, cart, mobile version | 7–10 days |
| Frontend | Responsive layout, canvas rendering (advanced option) | 7–10 days |
| Backend | HL-blocks, controllers, delivery, CRM, freshness tracking | 10–14 days |
| Content | Bouquet photography, render images for builder | 5–7 days |
| Testing | Calculations, delivery, payment, CRM chains | 4–5 days |
| Documentation | Admin instructions, custom module scenarios | 2–3 days |
| Support | 30-day warranty after delivery | — |
We have been doing Bitrix development for over 8 years and have completed 150+ e-commerce projects. Contact us to discuss your project. Place an order and we will find the optimal solution for your budget. The cost is calculated individually—depending on the builder visualization option, number of integrations, and whether you have your own courier service.

