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

Настройка Shopify Functions для кастомной логики скидок и доставки

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

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

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995

Настройка 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 рабочий день. Свяжитесь с нами — поможем внедрить кастомную логику скидок и доставки, которая не тормозит чекаут. Получите консультацию.