Розробка кастомних знижок та доставки на Shopify Functions

Налаштування Shopify Functions для кастомної логіки знижок та доставки

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомних знижок та доставки на Shopify Functions
Складний
~5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Налаштування Shopify Functions для кастомної логіки знижок та доставки

Уявіть: інтернет-магазин одягу хоче надати знижку 15% на другий товар у кошику, але тільки для клієнтів з Києва та при сумі чека від 5000 грн. Стандартні знижки Shopify не вміють перевіряти геолокацію та враховувати склад кошика за позиціями. Рішення — Shopify Functions — синхронні хуки, які виконуються в момент розрахунку кошика, не залишаючи інфраструктуру Shopify. За 5 мс ми можемо застосувати складне правило знижки або доставки, не збільшуючи час чекауту. За даними Shopify, до 20% користувачів йдуть при затримці чекауту більше 2 секунд, тому оптимізація Shopify Checkout за допомогою кастомних функцій стає стандартом для великих магазинів. Наша команда налаштовує такі функції під ключ: від простих відсотків до складної геолокії доставки. Вартість розробки індивідуальна, економія порівняно із зовнішніми мікросервісами сягає 30%, а середній чек збільшується на 15-25% після впровадження персоналізованих знижок.

Чому Shopify Functions швидші за зовнішні API?

Функції працюють всередині процесу чекауту — це не зовнішній API, який робить HTTP-запит. Вони компілюються в WebAssembly (Rust) або використовують Javy runtime (JavaScript) і виконуються з лімітом 5–10 мс. Жодних мережевих викликів, усі дані передаються через input.graphql. Це гарантує передбачувану продуктивність і нульову затримку для користувача. Докладніше про архітектуру — у документації Shopify Functions.

Де працюють Functions

API функцій Призначення
cart_transform Зміна рядків кошика перед чекаутом (бандли, модифікації)
discounts Кастомні знижки (фіксовані, відсоток, BXGY)
payment_customization Приховування/перейменування способів оплати
shipping_discount Знижка на доставку
delivery_customization Приховування/перейменування/сортування методів доставки
fulfillment_constraints Обмеження на розбивку по складах
order_routing Маршрутизація замовлень по складах

Functions пишуться на Rust (компілюється в WebAssembly) або JavaScript/TypeScript (через Javy runtime). Rust кращий для складної логіки — швидший та економніший за лімітами. Розробка Shopify Functions включає проектування input.graphql та Metafields.

Як реалізувати складну знижку без втрати продуктивності?

Використовуємо Rust або TypeScript, оптимізуючи кожен запит. Всю підготовку даних виносимо на рівень Metafields — функція отримує вже готові конфіги та застосовує їх за мілісекунди. Наш досвід показує: при правильному проектуванні функція вкладається в 5 мс навіть з 5 рівнями вкладеності. В одному проекті ми реалізували знижку з урахуванням історії замовлень через Metafields: функція завантажувала JSON з пороговими значеннями за останні 30 днів і застосовувала підвищену знижку для лояльних клієнтів — все вкладалося в ліміт 4 мс. Налаштування знижок Shopify за допомогою Functions дозволяє реалізувати будь-які бізнес-правила без уповільнення чекауту.

Приклад: знижка за обсяг замовлення (JavaScript)

input.graphql — описує, які дані Shopify передасть функції:

# input.graphql query RunInput { cart { lines { id quantity merchandise { ... on ProductVariant { id product { id tags metafield(namespace: "custom", key: "volume_discount_tier") { value } } } } } } discountNode { metafield(namespace: "custom", key: "tiers") { value } } } 

src/run.ts — логіка функції:

import type { RunInput, FunctionRunResult } from "../generated/api"; interface DiscountTier { quantity: number; percentage: number; } export function run(input: RunInput): FunctionRunResult { const tiersJson = input.discountNode?.metafield?.value; const tiers: DiscountTier[] = tiersJson ? JSON.parse(tiersJson) : []; if (!tiers.length) return { discounts: [], discountApplicationStrategy: "FIRST" }; const discounts = []; for (const line of input.cart.lines) { const variant = line.merchandise; if (variant.__typename !== "ProductVariant") continue; const product = variant.product; if (!product.tags.includes("volume-eligible")) continue; const applicableTier = tiers .filter(t => line.quantity >= t.quantity) .sort((a, b) => b.quantity - a.quantity)[0]; if (!applicableTier) continue; discounts.push({ targets: [{ cartLine: { id: line.id } }], value: { percentage: { value: String(applicableTier.percentage) } }, message: `Знижка ${applicableTier.percentage}% за кількість (від ${applicableTier.quantity} шт.)`, }); } return { discounts, discountApplicationStrategy: "FIRST", }; } 

Як налаштувати доставку з геолокацією?

Використовуємо delivery_customization API. Функція отримує адресу доставки через input.graphql і може приховати або пересортувати методи доставки. Наприклад, для віддалених регіонів з тривалою доставкою приховуємо експрес-методи. Логіка пишеться на Rust для максимальної швидкості — типовий час виконання 3 мс. Для інтеграції зверніться до наших інженерів. Кастомна доставка Shopify з геолокацією — одне з частих застосувань Functions.

Обмеження доставки Shopify

Обмеження Значення Рішення
Час виконання 5 мс (Rust/WASM), 10 мс (JS) Мінімізуємо ітерації, кешуємо дані в Metafields
Пам'ять 10 МБ Не завантажуємо великі JSON-масиви — використовуємо пагінацію на рівні запиту
Мережеві запити Заборонені Всі дані передаємо через input.graphql
Доступ до БД Немає Складні конфіги зберігаємо в Metafields

Процес роботи

  1. Аналітика — розбираємо бізнес-правила, проектуємо вхідні дані.
  2. Проектування — обираємо мову та оптимізуємо запити під ліміти.
  3. Реалізація — пишемо код, готуємо input.graphql та Metafields.
  4. Тестування — локально через npm test або cargo test, потім на staging.
  5. Деплой — через Shopify CLI, активуємо в Admin.

Терміни залежать від складності: проста знижка — від 2 робочих днів, функція з геологікою — до 2 тижнів.

Тестування та деплой

npm run test # або cargo test shopify app deploy shopify app logs # перегляд логів 
Додаткові команди для налагодження
shopify app log --tail 

Що входить в нашу роботу

  • Проектування архітектури функції з урахуванням лімітів
  • Написання коду на Rust або TypeScript
  • Розробка input.graphql та схем Metafields
  • Деплой та інтеграція з Admin
  • Документація з налаштування правил
  • Підтримка після запуску (1 місяць)

Наша команда — сертифіковані Shopify-розробники з 5+ років досвіду та 30+ реалізованими проектами. Оцінимо ваше завдання за 1 робочий день. Зв'яжіться з нами — допоможемо впровадити кастомну логіку знижок та доставки, яка не гальмує чекаут. Отримайте консультацію.