Інтеграція Canny для збору Feature Requests на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

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

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

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція Canny для збору Feature Requests на сайті
Проста
від 1 робочого дня до 3 робочих днів
Часті питання

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

Етапи розробки

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція Canny для збору запитів на функції

Canny — платформа для збору та приоритизації фічареквестів від користувачів. Вбудовується в продукт через SDK, дозволяє авторизованим користувачам створювати запити, голосувати та підписуватися на оновлення.

SSO-інтеграція з вашим продуктом

Canny підтримує SSO через JWT, щоб користувачі не створювали окремий аккаунт:

// CannyTokenController
public function generate(): JsonResponse
{
    $user = auth()->user();

    $userData = [
        'avatarURL' => $user->avatar_url,
        'email'     => $user->email,
        'id'        => (string) $user->id,
        'name'      => $user->name,
        // Опціонально: companies для B2B сегментації
        'companies' => [[
            'id'   => (string) $user->company_id,
            'name' => $user->company->name,
        ]],
    ];

    $token = \Firebase\JWT\JWT::encode(
        ['userData' => $userData],
        config('services.canny.private_key'),
        'HS256'
    );

    return response()->json(['token' => $token]);
}

Вбудовування віджета

// У React-компоненті
useEffect(() => {
  // Завантаження Canny SDK
  (function(w, d, i, s) {
    // ... Canny SDK loader
  })(window, document, 'Canny', 'https://cdn.canny.io/sdk.js');

  const initCanny = async () => {
    const { token } = await fetch('/api/canny-token').then(r => r.json());

    window.Canny('identify', {
      appID: process.env.NEXT_PUBLIC_CANNY_APP_ID,
      user:  { ssoToken: token },
    });

    window.Canny('render', {
      boardToken: 'YOUR_BOARD_TOKEN',
      basePath:   '/feedback',
      ssoToken:   token,
    });
  };

  initCanny();
}, []);

Webhook для сповіщень

Canny відправляє вебхуки при зміні статусу запиту:

Route::post('/webhooks/canny', function (Request $request) {
    // Верифікація підпису
    $signature = hash_hmac('sha256', $request->getContent(), config('services.canny.webhook_secret'));
    if (!hash_equals($signature, $request->header('Canny-Signature'))) abort(401);

    $event = $request->json('type');
    $post  = $request->json('object');

    if ($event === 'post.statusChanged' && $post['status'] === 'complete') {
        // Сповіщаємо всіх проголосувавших по email
        // Canny робить це автоматично, але можна додати власну логіку
        Log::info("Canny feature completed: {$post['title']}");
    }

    return response('ok');
});

Терміни

Інтеграція Canny з SSO та вебхуками: 1–2 робочих дні.