Интеграция Wix с внешними сервисами через API
Wix закрытая платформа — нельзя добавить произвольный серверный код или изменить инфраструктуру. Интеграции строятся через два механизма: Velo (бывший Corvid) — встроенная JavaScript-среда выполнения на базе Node.js, и Wix Headless API — REST/GraphQL API для работы с данными сайта извне.
Velo: серверный код внутри Wix
Velo позволяет писать серверные функции (jsw-файлы), которые выполняются на серверах Wix и могут обращаться к внешним API:
// backend/crmIntegration.jsw
import { fetch } from 'wix-fetch';
import { getSecret } from 'wix-secrets-backend';
export async function syncContactToCRM(contactData) {
const apiKey = await getSecret('CRM_API_KEY');
const response = await fetch('https://api.yourcrm.com/v1/contacts', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: contactData.email,
name: contactData.name,
phone: contactData.phone,
source: 'wix_website',
}),
});
if (!response.ok) {
throw new Error(`CRM sync failed: ${response.status}`);
}
return response.json();
}
Ключи хранятся в wix-secrets-backend — встроенном хранилище секретов, не в коде. Функции jsw вызываются с фронтенда через import:
// Клиентский код страницы
import { syncContactToCRM } from 'backend/crmIntegration';
$w('#submitButton').onClick(async () => {
try {
await syncContactToCRM({
email: $w('#emailInput').value,
name: $w('#nameInput').value,
phone: $w('#phoneInput').value,
});
$w('#successMessage').show();
} catch (err) {
console.error('Sync error:', err);
}
});
Wix Automations + HTTP запросы
Без Velo, для простых сценариев: Wix Automations (триггеры на события формы, заказа, регистрации) поддерживают действие «HTTP request». Позволяет отправить POST/GET на внешний URL при наступлении события. Это zero-code вариант для отправки в CRM, Zapier или n8n.
Ограничения: нет обработки ответа, нет условной логики, нет повторных попыток при ошибке.
Wix Headless API: работа с данными сайта извне
Wix предоставляет REST API для доступа к коллекциям данных, заказам, контактам. Аутентификация через OAuth 2.0:
# Получение токена
curl -X POST https://www.wixapis.com/oauth2/token \
-H "Content-Type: application/json" \
-d '{
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_CLIENT_SECRET",
"grantType": "client_credentials"
}'
// Чтение коллекции данных через API
$response = Http::withToken($accessToken)
->post('https://www.wixapis.com/wix-data/v2/items/query', [
'dataCollectionId' => 'Products',
'query' => [
'filter' => ['active' => true],
'sort' => [['fieldName' => 'createdDate', 'order' => 'DESC']],
'paging' => ['limit' => 50],
],
]);
$items = $response->json('dataItems');
Типичный кейс: внешняя CRM или ERP читает заказы из Wix для обработки, или записывает данные в кастомные коллекции сайта.
Webhooks из Wix
Wix поддерживает исходящие webhooks для событий: новый контакт, новый заказ, изменение статуса заказа. Настройка в панели разработчика (Wix Developers → Webhooks). При наступлении события Wix отправляет POST на указанный URL.
Верификация подписи — через JWT с публичным ключом Wix:
import { verify } from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';
const client = jwksClient({
jwksUri: 'https://www.wix.com/.well-known/jwks.json',
});
async function verifyWixWebhook(token) {
const decoded = verify(token, async (header, cb) => {
const key = await client.getSigningKey(header.kid);
cb(null, key.getPublicKey());
});
return decoded;
}
Ограничения платформы
Velo имеет ограничения по времени выполнения функций (около 14 секунд) и объёму памяти. Для долгих операций (массовый экспорт, синхронизация больших каталогов) нужен внешний сервис, который Wix вызывает через webhook, а не наоборот.
Также нет возможности установить npm-пакеты произвольно — только список одобренных Wix пакетов. Список доступен в редакторе Velo.
Типовые интеграции
- Отправка лидов из Wix-форм в amoCRM/Bitrix24 через jsw-функцию
- Синхронизация товаров Wix Store с внешней учётной системой через Headless API
- Уведомления о новых заказах в Telegram/Slack через Automations → HTTP request
Настройка простой односторонней интеграции (форма → CRM) занимает 2–4 часа. Двусторонняя синхронизация каталога или заказов через Headless API — 1–3 рабочих дня.







