Краткий ответ: интеграция WordPress с CRM/API нужна, чтобы заявки, заказы WooCommerce, регистрации, формы, UTM-метки и данные клиентов автоматически передавались из сайта в CRM, ERP, Google Sheets, Telegram, email-маркетинг или другую внешнюю систему. Это убирает ручной перенос данных, уменьшает ошибки менеджеров и помогает быстрее обрабатывать обращения.
Правильная интеграция WordPress с CRM — это не просто “отправить форму по API”. Нужно учесть безопасность токенов, валидацию данных, повторы, логи ошибок, очередь отправки, защиту от дублей, таймауты API, работу с WooCommerce-заказами и сценарий, что делать, если CRM временно недоступна.
Обычный WordPress хранит данные внутри сайта: формы, пользователи, заказы, комментарии, мета-поля. Но бизнес часто работает в CRM: там ведутся лиды, сделки, клиенты, задачи, статусы, воронки продаж и история общения.
Если сайт и CRM не связаны, появляются типичные проблемы:
Если нужно быстро дублировать заявки в мессенджер, можно дополнительно настроить интеграцию WordPress с Telegram. Но Telegram лучше использовать как уведомление, а CRM — как основное место хранения лидов и заказов.
| Источник в WordPress | Что передавать в CRM | Зачем |
|---|---|---|
| Contact Form 7 | Имя, телефон, email, сообщение, страница, UTM | Создание лида или сделки |
| Кастомная форма | Любые поля формы и технические данные | Точная логика под бизнес |
| WooCommerce | Заказ, товары, сумма, клиент, доставка, оплата | Передача заказов в CRM |
| Регистрация пользователя | Имя, email, роль, источник регистрации | Создание контакта в CRM |
| Личный кабинет | Заявки, статусы, действия пользователя | Синхронизация клиентской истории |
| LMS или закрытый портал | Курсы, группы, прогресс, компании | CRM для обучения и B2B-клиентов |
| Webhook из CRM | Статус сделки, оплаты, доступы, задачи | Обратная синхронизация с сайтом |
Подходит, если CRM уже имеет официальный WordPress/WooCommerce-плагин и задача стандартная: передать заказ, создать клиента, обновить статус.
Плюсы: быстрое подключение, настройки в админке, меньше ручного кода.
Минусы: ограниченная логика, зависимость от автора плагина, не всегда можно передать кастомные поля и UTM так, как нужно.
Webhook — простой вариант, когда CRM даёт URL, на который WordPress отправляет данные формы или заказа.
Плюсы: быстро, удобно для заявок и заказов.
Минусы: часто мало контроля над ошибками, повторами и сложной структурой данных.
REST API подходит для более точной интеграции: создать контакт, проверить дубль, создать сделку, добавить товары, прикрепить UTM, обновить статус.
Плюсы: гибкость, контроль логики, можно обрабатывать сложные сценарии.
Минусы: нужно писать код, вести логи и учитывать ошибки API.
Если интеграция важна для бизнеса, лучше делать отдельный модуль, а не вставлять код в functions.php. Это особенно актуально для WooCommerce, CRM, API, cron, очередей и логов. Такой подход похож на разработку WordPress-плагина под заказ, где логика отделена от темы и удобна для поддержки.
Перед разработкой интеграции нужно понять не только “куда отправлять данные”, а весь путь заявки: от формы на сайте до сделки в CRM.
Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.
Надёжная интеграция WordPress с CRM/API строится вокруг нескольких правил: данные нужно очищать, токены хранить безопасно, ошибки логировать, отправку не делать “вслепую”, а важные заявки сохранять локально до успешной передачи.
Важно: код ниже отправляет данные сайта во внешнюю CRM через API. Не вставляйте реальные API-ключи в JavaScript, HTML или публичные файлы. Перед установкой на рабочий сайт проверьте код на тестовой копии. Если интеграция влияет на WooCommerce-заказы, оплату, доставку или персональные данные клиентов, обязательно сделайте бэкап.
Куда вставлять: в файл wp-config.php перед строкой /* That’s all, stop editing! */.
define('SC_CRM_API_URL', 'https://crm.example.com/api/leads');
define('SC_CRM_API_TOKEN', 'PASTE_YOUR_CRM_API_TOKEN_HERE');
Куда вставлять: лучше в отдельный небольшой плагин. Для теста можно временно использовать functions.php дочерней темы, но постоянную интеграцию лучше вынести в отдельный плагин.
<?php
if (!defined('ABSPATH')) {
exit;
}
function sc_send_lead_to_crm($lead_data) {
if (!defined('SC_CRM_API_URL') || !defined('SC_CRM_API_TOKEN')) {
return array(
'success' => false,
'message' => 'CRM API settings are missing.'
);
}
if (empty($lead_data['phone']) && empty($lead_data['email'])) {
return array(
'success' => false,
'message' => 'Phone or email is required.'
);
}
$body = array(
'name' => isset($lead_data['name']) ? sanitize_text_field($lead_data['name']) : '',
'phone' => isset($lead_data['phone']) ? sanitize_text_field($lead_data['phone']) : '',
'email' => isset($lead_data['email']) ? sanitize_email($lead_data['email']) : '',
'message' => isset($lead_data['message']) ? sanitize_textarea_field($lead_data['message']) : '',
'source_url' => isset($lead_data['source_url']) ? esc_url_raw($lead_data['source_url']) : '',
'utm_source' => isset($lead_data['utm_source']) ? sanitize_text_field($lead_data['utm_source']) : '',
'utm_medium' => isset($lead_data['utm_medium']) ? sanitize_text_field($lead_data['utm_medium']) : '',
'utm_campaign' => isset($lead_data['utm_campaign']) ? sanitize_text_field($lead_data['utm_campaign']) : '',
);
$response = wp_remote_post(SC_CRM_API_URL, array(
'timeout' => 20,
'headers' => array(
'Authorization' => 'Bearer ' . SC_CRM_API_TOKEN,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode($body),
));
if (is_wp_error($response)) {
error_log('CRM API error: ' . $response->get_error_message());
return array(
'success' => false,
'message' => $response->get_error_message()
);
}
$response_code = wp_remote_retrieve_response_code($response);
$response_body = wp_remote_retrieve_body($response);
if ($response_code < 200 || $response_code >= 300) {
error_log('CRM API response code: ' . $response_code);
error_log('CRM API response body: ' . $response_body);
return array(
'success' => false,
'message' => 'CRM returned HTTP ' . $response_code
);
}
return array(
'success' => true,
'message' => 'Lead sent to CRM.'
);
}
Важно: AJAX-обработчик должен использовать nonce и проверять данные. Не отправляйте в CRM сырые значения из POST без очистки.
PHP-часть:
<?php
add_action('wp_ajax_sc_send_form_to_crm', 'sc_send_form_to_crm');
add_action('wp_ajax_nopriv_sc_send_form_to_crm', 'sc_send_form_to_crm');
function sc_send_form_to_crm() {
check_ajax_referer('sc_crm_form_nonce', 'nonce');
$lead_data = array(
'name' => isset($_POST['name']) ? sanitize_text_field($_POST['name']) : '',
'phone' => isset($_POST['phone']) ? sanitize_text_field($_POST['phone']) : '',
'email' => isset($_POST['email']) ? sanitize_email($_POST['email']) : '',
'message' => isset($_POST['message']) ? sanitize_textarea_field($_POST['message']) : '',
'source_url' => isset($_POST['source_url']) ? esc_url_raw($_POST['source_url']) : '',
'utm_source' => isset($_POST['utm_source']) ? sanitize_text_field($_POST['utm_source']) : '',
'utm_medium' => isset($_POST['utm_medium']) ? sanitize_text_field($_POST['utm_medium']) : '',
'utm_campaign' => isset($_POST['utm_campaign']) ? sanitize_text_field($_POST['utm_campaign']) : '',
);
$result = sc_send_lead_to_crm($lead_data);
if (!empty($result['success'])) {
wp_send_json_success(array(
'message' => 'Заявка отправлена.'
));
}
wp_send_json_error(array(
'message' => 'Заявка сохранена, но CRM временно недоступна.'
));
}
JavaScript-часть. Куда вставлять: лучше подключать отдельным JS-файлом через wp_enqueue_script(), а не вставлять на все страницы сайта.
<script>
jQuery(document).ready(function() {
jQuery(document).on('click', '#sc_crm_send_button', function() {
var formData = {
action: 'sc_send_form_to_crm',
nonce: jQuery('#sc_crm_nonce').val(),
name: jQuery('#sc_crm_name').val(),
phone: jQuery('#sc_crm_phone').val(),
email: jQuery('#sc_crm_email').val(),
message: jQuery('#sc_crm_message').val(),
source_url: window.location.href,
utm_source: jQuery('#sc_utm_source').val(),
utm_medium: jQuery('#sc_utm_medium').val(),
utm_campaign: jQuery('#sc_utm_campaign').val()
};
jQuery.ajax({
url: '<?php echo admin_url("admin-ajax.php") ?>',
type: 'POST',
dataType: 'json',
data: formData,
success: function(response) {
if (response.success) {
jQuery('#sc_crm_result').html(response.data.message);
} else {
jQuery('#sc_crm_result').html(response.data.message);
}
},
error: function() {
jQuery('#sc_crm_result').html('Ошибка отправки. Попробуйте позже.');
}
});
});
});
</script>
Важно: этот код работает с заказами WooCommerce. Перед установкой проверьте тестовый заказ, оплату, доставку и email-уведомления. Для сложной интеграции лучше добавить очередь повторной отправки и таблицу логов.
Куда вставлять: отдельный плагин или служебный модуль, а не файл темы.
<?php
add_action('woocommerce_new_order', 'sc_send_woocommerce_order_to_crm', 20, 1);
function sc_send_woocommerce_order_to_crm($order_id) {
if (!function_exists('wc_get_order')) {
return;
}
$order = wc_get_order($order_id);
if (!$order) {
return;
}
$items = array();
foreach ($order->get_items() as $item) {
$product = $item->get_product();
$items[] = array(
'name' => $item->get_name(),
'quantity' => $item->get_quantity(),
'sku' => $product ? $product->get_sku() : '',
'total' => $item->get_total(),
);
}
$lead_data = array(
'name' => trim($order->get_billing_first_name() . ' ' . $order->get_billing_last_name()),
'phone' => $order->get_billing_phone(),
'email' => $order->get_billing_email(),
'message' => 'WooCommerce order #' . $order->get_order_number(),
'source_url' => get_edit_post_link($order_id, ''),
'utm_source' => get_post_meta($order_id, '_utm_source', true),
'utm_medium' => get_post_meta($order_id, '_utm_medium', true),
'utm_campaign' => get_post_meta($order_id, '_utm_campaign', true),
'order_id' => $order_id,
'order_total' => $order->get_total(),
'order_currency' => $order->get_currency(),
'items' => $items,
);
sc_send_lead_to_crm($lead_data);
}
После правильной интеграции WordPress с CRM/API заявки и заказы не теряются между сайтом, почтой и менеджером. Данные автоматически попадают в CRM, менеджер видит источник обращения, а владелец сайта может контролировать обработку лидов.
Подходит, если на сайте уже есть формы Contact Form 7. Можно использовать hook wpcf7_mail_sent, получить поля формы и отправить их в CRM.
WooCommerce умеет отправлять webhooks при создании или обновлении заказа. Это удобно, если CRM принимает webhooks и не нужна сложная обработка данных на стороне WordPress.
Для важных проектов лучше не зависеть от мгновенного ответа CRM. Заявку можно сначала сохранить в локальную таблицу, а затем отправлять через cron с повторными попытками.
Сервисы автоматизации подходят для простых связок: форма → CRM, заказ → таблица, заявка → Telegram. Но для сложной логики, безопасности и контроля ошибок часто нужен собственный код.
Если нужно передавать не только заявки, а заказы, товары, статусы, доставку и оплату, это уже технически связано с доработкой WooCommerce. Здесь важно не сломать checkout, оплату, сессии и email-уведомления.
CRM-интеграция часто работает с персональными данными клиентов. Поэтому токены, телефоны, email, заказы и сообщения нужно обрабатывать аккуратно.
Некоторые пытаются отправлять заявки в CRM через email-парсер. Это может работать, но такой способ менее надёжный, чем API: письмо может попасть в спам, задержаться или прийти в неправильном формате.
Без логов невозможно понять, почему заявка не попала в CRM: ошибка авторизации, неправильное поле, лимит API, недоступность CRM или проблема хостинга.
Если API token попал во фронтенд, его нужно считать скомпрометированным и перевыпустить.
Если не проверять телефон, email или внешний ID, CRM может создавать несколько одинаковых клиентов после повторной отправки формы.
Если API отвечает медленно, пользователь может ждать отправку формы. Для важных заявок лучше использовать локальное сохранение и фоновую отправку.
Без UTM сложно понять, откуда пришла заявка. Для рекламы это критично: CRM должна видеть источник, кампанию и ключевую метку.
Для теста это допустимо. Для постоянной CRM-интеграции лучше отдельный плагин, чтобы логика не зависела от темы.
CRM может изменить endpoint, поля, авторизацию или лимиты. Интеграцию нужно периодически проверять, особенно после ошибок в логах.
Интеграция WordPress с CRM/API — это автоматическая передача данных с сайта в CRM: заявок, форм, WooCommerce-заказов, пользователей, UTM-меток, статусов и клиентских данных.
WordPress может передавать заявки через готовый плагин, webhook, REST API или кастомный PHP-код с wp_remote_post().
Да. Через WooCommerce hooks можно передавать номер заказа, товары, сумму, клиента, доставку, оплату и статус заказа в CRM.
Webhook проще для базовой отправки данных. API лучше для сложной логики: проверка дублей, создание контакта, сделки, товаров, задач и обратная синхронизация.
Да. Можно написать отдельный PHP-модуль или небольшой WordPress-плагин, который будет отправлять данные в CRM через API.
Можно подключить почти любую CRM, если у неё есть API, webhook или готовый модуль для WordPress/WooCommerce.
Готовый плагин подходит для стандартной передачи заявок. Кастомный код лучше, если нужны UTM, особая структура сделки, проверка дублей, логи, очередь и нестандартные поля.
Лучше хранить токен в wp-config.php или в настройках плагина с ограниченным доступом. Нельзя выводить токен во фронтенд.
Для важных заявок — да. Если CRM временно недоступна, локальная запись поможет не потерять обращение и отправить его повторно.
Да. UTM-метки можно сохранить в cookie, скрытых полях формы или мета-данных заказа, а затем передать в CRM вместе с заявкой.
Частые причины: неправильный API token, неверный endpoint, отсутствуют обязательные поля, неправильный JSON, ошибка формата телефона или лимит запросов.
Лучше сохранить заявку локально, записать ошибку в лог и повторить отправку через cron. Пользователь не должен терять заявку из-за временной ошибки CRM.
Да. Для этого CRM должна отправлять webhook на сайт или WordPress должен периодически запрашивать статусы через API.
Может влиять, если API-запрос выполняется синхронно и CRM отвечает долго. Для сложных интеграций лучше использовать очередь и фоновую отправку.
Интеграция WordPress с CRM/API нужна, когда заявки, заказы WooCommerce и данные клиентов должны автоматически попадать в рабочую систему продаж. Это ускоряет обработку обращений, снижает риск потери заявок и помогает видеть реальный источник клиентов.
Надёжная интеграция должна учитывать не только отправку данных, но и безопасность, логи, повторы, UTM-метки, защиту от дублей, ошибки API и сценарии восстановления. Тогда WordPress становится не отдельным сайтом с формами, а частью нормальной бизнес-системы.
Об авторе