1C-Bitrix Food Delivery Website: Turnkey Development

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Showing 1 of 1All 1626 services
1C-Bitrix Food Delivery Website: Turnkey Development
Complex
from 1 week to 3 months
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    829
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1074

With 10+ years of experience and 15+ food delivery projects, we deliver robust 1C-Bitrix food delivery websites. A typical scenario: a restaurant launches delivery, and after a month discovers that 30% of orders are lost due to incorrect delivery zone calculation, and every tenth order is duplicated when transferred to iiko. We solve this with custom event handlers on the platform, without touching the core. The result: a 70% reduction in errors and a 15% increase in average check due to personalization. Typical investment for a turnkey solution ranges from $15,000 to $30,000 depending on integrations.

One project — a pizza chain with 8 branches. Before integration, managers manually transferred orders from the admin panel to R-Keeper, taking up to 5 minutes per order. After automation via the iiko REST API, the time dropped to 10 seconds, and input errors vanished. We have integrated with iiko for over 50 restaurant chains.

Menu Catalog: Trade Catalog with Modifiers

The catalog is built on the Bitrix trade catalog. Each dish is an information block element linked to a trade catalog. Categories (pizza, sushi, burgers, drinks, desserts) are information block sections. Over 500 dishes can be cataloged with ease.

Element properties: composition (text), weight (grams), calorie/protein/fat/carbs (numeric), cooking time (minutes, used for delivery time calculation), labels (multiple list: spicy, vegetarian, new, hit), photo (mandatory file property).

Modifiers via trade offers (SKU). Pizza 25 cm and 35 cm — two SKUs with different prices and weights. Add-ons (extra cheese, bacon, mushrooms) — implemented through trade offer properties of type 'list' with surcharge. When an add-on is selected, a JS component on the frontend recalculates the total cost.

An alternative approach for mass modifiers (sauces for every dish) — a separate "Add-ons" information block with a many-to-many relationship via a binding property. On the frontend, when adding a dish to the cart, a popup for selecting add-ons appears.

Dish Modifier Implementation

Each dish can have several modifiers: size, sauce, extra ingredients. This is implemented via trade offers (SKU) with a surcharge or a separate information block for mass modifiers. On the frontend, when selecting add-ons, a JS component recalculates the total, and on the backend, modifiers are transferred to the kitchen system. The correct modifier structure is key to proper display in iiko and no errors during order transmission.

Promo Codes and Loyalty Program

Promo codes — standard mechanism of the sale module. Discount types: fixed amount for orders over N rubles, percentage on the entire order or category, free delivery, gift with order (adding a zero-cost product).

Loyalty program — cumulative. Internal user account (module sale, section "Customer accounts"): bonus accrual as a percentage of the order, redemption on the next order. Accrual rules are configured via the module's business logic without custom development.

Push Notifications on Order Status

When the order status changes (received → cooking → on the way → delivered), the client receives a notification. Channels:

  • SMS — via messageservice with a connected provider (SMS.ru, SMSC)
  • Email — mail event templates of the sale module
  • Browser push — via Web Push API (Service Worker + VAPID keys)

Push notifications are implemented via a custom handler for the OnSaleStatusOrder event. When the status changes, the handler checks the user's subscription and sends a push via the Web Push protocol. Subscription is requested at the first order.

Cart with Delivery Zones

The food delivery cart differs from a regular online store. Key features:

Delivery Zones by Geolocation

The city is divided into zones, each with its own parameters:

Parameter Zone 1 (center) Zone 2 (residential areas) Zone 3 (suburb)
Radius up to 3 km 3–7 km 7–15 km
Delivery time 30–45 min 45–60 min 60–90 min

Zones are stored in a highload-block with coordinate polygons (GeoJSON). During checkout, the client enters an address; JavaScript sends a request to Yandex.Geocoder (or DaData), receives coordinates, and determines the zone via point-in-polygon. The result is cached by address.

Importance of Double-Checking the Minimum Order Amount

The minimum order amount is checked in two places: on the frontend (JS blocks the checkout button) and on the backend (the OnSaleBeforeOrderAdd handler returns an error). Double-checking eliminates bypass via a direct POST request.

Time Slots

The client chooses "as soon as possible" or a specific slot (12:00–12:30, 12:30–13:00). Available slots are generated dynamically: current time + cooking time of the longest dish in the cart + delivery time by zone. Past slots and overloaded ones (order limit per slot) are unavailable.

Integrating Delivery with Kitchen System

Transferring the order to iiko or R-Keeper is a mandatory integration for automation. Without it, a manager manually transfers the order from the site to the cash system, losing time and making errors. The iiko REST API is 3 times faster than the outdated R-Keeper XML protocol.

Interaction scheme with iiko:

  1. Order placed on the site → OnSaleOrderAdd event
  2. The handler forms a JSON request to iiko Transport API (/api/1/deliveries/create)
  3. The request includes: items with SKUs from the iiko reference book (mapping via the infoblock property "ID in iiko"), address, phone, comment, delivery time
  4. iiko returns an order ID, which is saved in the Bitrix order property
  5. A cron agent polls iiko every 2 minutes for order status (/api/1/deliveries/by_id)
  6. When the status changes (cooking → ready → on the way) — the order status in sale is updated, notifications are triggered

Nomenclature mapping is a critical step. Each dish on the site corresponds to a position in iiko. The connection is via the infoblock property "External ID." When adding a new dish, the administrator must fill in this field — without it, the order will not be transferred. Validation on element save via the OnBeforeIBlockElementUpdate handler. According to 1C-Bitrix documentation, the sale module supports custom delivery handlers (CDeliveryHandler). More about CommerceML.

iiko Modifier Structure for Transfer

Modifiers are transferred as nested objects in JSON. The modifier structure of iiko and the site must match — mapping is configured during integration and fixed in the documentation.

Error handling: if iiko is unavailable — the order is saved in Bitrix with the status "Awaiting kitchen transmission." A cron agent retries every 5 minutes. The manager sees such orders in a separate filter in the admin panel and can transfer them manually.

R-Keeper works similarly, but via the XML protocol (R-Keeper XML API) or an intermediary service (UCS Delivery). The principle is the same: mapping, transfer, status polling.

Example of order transfer to iiko:

{
  "organization": "{organization_id}",
  "order": {
    "phone": "{client_phone}",
    "items": [
      {
        "productId": "{iiko_product_id}",
        "name": "Pizza 25 cm",
        "amount": 2,
        "modifiers": [
          {
            "productId": "{iiko_modifier_id}",
            "name": "Extra cheese",
            "amount": 1
          }
        ]
      }
    ]
  }
}

Contact us to discuss integration with your kitchen system.

Courier Tracking

Basic implementation — order statuses without a map. Extended — displaying the courier on a map.

For the extended version: the courier uses a mobile app (custom or third-party — Yandex.Marshhrutization, Bringo) that transmits coordinates. The site receives coordinates via the courier service API and displays them on Yandex.Maps in the client's personal account. Updating — on request ("Refresh" button) or automatically via polling every 30 seconds.

Development Stages

Stage Content Duration
Analytics Delivery zones, iiko/R-Keeper nomenclature mapping, cart business logic 2 weeks
Prototyping Cart UX, checkout, mobile version 1 week
Design Catalog, cart, personal account mockups 2 weeks
Frontend Catalog with modifiers, cart, zone detection, slots 3 weeks
Backend Trade catalog, delivery handler, iiko/R-Keeper integration 3 weeks
Testing End-to-end order test (site → kitchen → courier → client), load 1.5 weeks
Launch Deployment, integration monitoring, operator training 3 days

Total: 12–14 weeks. The main schedule risk is kitchen system integration: depends on documentation and API stability on the iiko/R-Keeper side.

What's Included in Development

  • Full documentation on iiko/R-Keeper integration, nomenclature mapping, and delivery zones
  • Access to the admin panel and code repository
  • Operator training on system use and error handling
  • 3-month warranty support after launch (bug fixes, consultations)
  • Source code with comments and deployment instructions

Get a consultation for your delivery project. Order a turnkey 1C-Bitrix website development. Our food delivery website development expertise ensures your business grows with reliable automation.

How to properly design infoblocks?

When developing a 1C-Bitrix website, we see dozens of projects where poor infoblock structure slows down the site. Typical scenario: the client asks for a "product catalog." The developer creates one infoblock catalog, puts 15 properties in it. Six months later – 40 properties, 8 of which are used only for one category. The filter lags, the b_iblock_element_property table grows to millions of rows, CIBlockElement::GetList runs for 3 seconds. Consequences – conversion drop, loss of customers, additional optimization costs. In one project after catalog refactoring, page generation time dropped from 4.2 to 0.8 seconds, and annual support costs were reduced by over $10,000 through eliminated redundant queries and agents.

Our approach: design infoblocks before writing a single line of code. Separate infoblocks for entities (products, categories, brands), dictionary properties via highload blocks, trade offers for SKUs. This builds performance for years. If you want a preliminary audit of your infoblock schema, contact us for a free review of common mistakes and recommendations.

Why 1C-Bitrix outperforms most CMS for business

The choice of CMS is dictated by business needs, not preferences. Native 1C exchange via catalog.import.1c provides two-way synchronization of products, prices, balances, and orders through CommerceML without third-party modules — five times faster than developing custom exchange on OpenCart or WordPress, saving hundreds of thousands of rubles. Proactive security module includes WAF, file integrity control, SQL injection protection, and two-factor authentication; it's certified for FSTEK requirements. Modular architecture lets you enable only needed modules — iblock, catalog, sale, search — reducing DB queries per hit. Regular patches close vulnerabilities faster than open-source projects (average CVE fix time two weeks). Official documentation is maintained on the vendor's site.

What highload blocks are and how they speed up the catalog

Highload blocks are an alternative to extended infoblock properties when the list of values can grow to thousands of entries. Typical example: manufacturers, countries, colors. If stored as list properties in an infoblock, each filter triggers a full scan of b_iblock_property_enum table. With HL-blocks, selection uses indexes – filter response time drops from 1–2 seconds to 50 ms. We use HLB component and custom queries via Bitrix\Highloadblock\DataManager. This is critical for catalogs with 100,000+ items.

From our practice: an online store with 500,000 items. Standard filter by brand took 4 seconds. The server couldn't handle 50 concurrent requests – pages crashed. We moved the brand directory to an HL-block, added tagged caching for 15 minutes, and set up an agent to clear cache on change. After optimization, filter time was 120 ms, average LCP was 1.8 seconds. The project runs stable without failures.

What integrations are critical for 1C-Bitrix stores

Each e‑commerce project requires reliable connections with payments, fiscalization, logistics, and CRM. We integrate YooKassa, CloudPayments, Tinkoff, Apple Pay, Google Pay for payments; ATOL and OrangeData for 54-FZ compliance via sale.cashbox; CDEK, Boxberry, PEC, Russian Post, Yandex.Delivery for logistics; Bitrix24, amoCRM, Roistat, Calltouch, Mindbox for analytics and CRM. All integrations are configured with proper error handling and fallback logic.

What's included in 1C-Bitrix website development

Each project includes a full set of documentation and artifacts to prevent knowledge loss after handover.

  • Technical specification – user stories, infoblock diagrams, integration schemas.
  • Source code in Git – with commit history, release tags, branching rules.
  • Administrative documentation – description of custom components, deployment instructions, list of agents and events.
  • Staff training – up to a 3-hour webinar: admin panel, order management, price settings. Recorded for later review.
  • Access to staging during development – test before production deployment.
  • Warranty support – bug fixes for 30 days after launch. Post-warranty support packages with SLA (response 2 hours, resolution 8 hours).

Our process and technologies

Project type Timeline Complexity Key features
Corporate website from 1 month Medium Catalog, news, forms, CRM integration
Online store from 2 months High 54-FZ, marketplaces, 1C exchange, SKU
B2B portal from 3 months Very high Personal prices, document flow, Bizproc
Landing page from 2 weeks Low LCP < 2s, composite cache, static
Multisite structure from 1.5 months High Separate content, shared catalog, hreflang

Tech stack: mobile-first markup, tested on physical devices (iPhone, iPad, Android). Use BrowserStack for Safari on iOS. Performance goals: LCP < 2.5 s, FID < 100 ms, CLS < 0.1. Enable composite site (composite module), CDN, tagged caching, WebP/AVIF, lazy loading. SEO: Schema.org via JSON-LD, auto-generation of sitemap.xml via seo module, canonical and hreflang for multilingual versions. robots.txt blocks /bitrix/ from indexing. CI/CD: Git, auto-deploy via GitLab CI, staging. DB migrations: sprint.migration module with versioning.

Process:

  1. Analytics – study competitors, gather requirements, create prototypes in Figma. Output: technical specification with user stories.
  2. Design – UI/UX with design system. Components are reusable.
  3. Development – write components with custom templates in local/templates/. Business logic in local/modules/.
  4. Testing – functional, cross-browser, load testing (up to 1000 requests). Critical bugs fixed before launch.
  5. Launch – deploy to production, monitoring via UptimeRobot, alerts in Telegram. Fixes for first 48 hours.

Multilingual support and redesign

Full localization via language files lang/ and SITE_ID mechanism. hreflang for each version. Regional versions with different prices and content – IP detection (main.geo) or manual selection. Multidomain – unified management of multiple domains.

Redesign without losing rankings: performance audit (PageSpeed, WebPageTest), SEO (Screaming Frog). New template in local/templates/ with preserved URL structure. 301 redirects only if URL changes significantly. Kernel update, migration to D7 ORM, infoblock restructuring, migration via sprint.migration with Git.

Guarantee and support

We have been working with 1C-Bitrix for 12+ years, completed 500+ projects. Certified developers on staff. Fixed price in contract – no surprises. Warranty period covers code errors. After warranty, subscription packages with SLA (response time 2 hours, resolution 8 hours). 24/7 availability monitoring, alerts in Telegram. Get a consultation and preliminary estimate: contact us via the form on the website or chat – we'll respond within an hour. Order turnkey development – we'll design infoblocks, integrate 1C, and speed up the catalog. If you already have a site on another CMS, order a performance audit and migration to Bitrix.