Soyons tout à fait honnêtes ; la plupart des systèmes d’affiliation sur le marché sont carrément horribles. Soit ils sont déroutants, maladroits et lents, soit ils ont l’air d’avoir été conçus dans les années 90. Ou pire, un mélange de tout ce qui précède. Certains peuvent avoir la moitié des outils dont vous avez besoin, mais il manque alors d’autres caractéristiques essentielles que vos spécialistes du marketing d’affiliation veulent. 😩

Depuis que nous avons lancé Kinsta, notre mission a été de ne jamais publier quoi que ce soit d’inférieur aux clients. Une norme que nous respectons est que si c’est quelque chose que nous n’utiliserions pas nous-mêmes, alors nous devons trouver une meilleure façon. Tout comme nous l’avons fait avec notre tableau de bord MyKinsta, nous avons donc décidé de construire le nôtre.

Aujourd’hui, nous allons discuter de certaines des raisons pour lesquelles nous avons choisi cette voie, tant du point de vue des affaires et du développement, que de ce que nous avons obtenu (du MVP au produit final).

Pourquoi nous avons créé le nôtre

Lorsque nous avons commencé à rechercher ce qu’il fallait faire pour mettre en œuvre un système d’affiliation, nous avons rapidement réalisé qu’il n’y avait pas de solution toute faite pour nous. En voici les principales raisons :

  • Le plus gros problème était que notre système d’affiliation devait être étroitement lié à nos plans et à notre système d’abonnement, et non à un fournisseur tiers.
  • L’image de marque est très importante pour nous. Alors que certains systèmes d’affiliation offrent des solutions de marque blanche, la plupart sont des implémentations à moitié réalisées et pas toujours totalement transparentes. Le construire nous-mêmes nous permettrait d’avoir un contrôle total sur la conception et l’image de marque, sans même avoir à nous soucier des solutions d’étiquetage en marque blanche.
  • Le recours à un système tiers nous empêcherait d’ajouter de nouvelles fonctionnalités rapidement ou pas du tout. Notre tableau de bord MyKinsta a été entièrement construit à partir des commentaires des utilisateurs, et c’est pourquoi il est devenu l’un des meilleurs outils de gestion de site WordPress dans l’industrie ! Merci à nos incroyables clients. 
  • 👏 Nous savions que dès le moment où nous allions lancer une solution tierce, les commentaires et les demandes commenceraient à affluer, et nous n’aurions pas la capacité de les faire aboutir.
  • La capacité de fournir et de créer des rapports personnalisés, non seulement pour nos affiliés mais aussi pour nos administrateurs était quelque chose dont nous ne pouvions nous passer. Nous aimons et avons besoin de données ! Comment prendre d’autres décisions stratégiques à l’avenir ? Il a également fallu extraire les données de reporting de nos plans complexes et de notre système d’abonnement.

En creusant un peu plus, nous savions qu’une fois que nous allions ouvrir le système d’affiliation au grand public, nous ne pouvions pas l’arrêter. Bien sûr, des bugs se glissent et sont corrigés, mais si nous avions besoin de changer de fournisseur de paiement, nous ne pourrions pas simplement mettre nos affiliés en attente pendant que nous continuons à collecter l’argent auquel ils auraient droit.

En outre, la flexibilité était une préoccupation majeure. Que se passerait-il si nous devions changer les procédures internes de gestion des abonnements (ce qui s’est finalement produit), serions-nous capables de gérer plusieurs langues et devises ? Qu’en est-il des options supplementaires que nous avons développées en cours de route comme Redis, les sauvegardes toutes les heures, etc. Pourrions-nous construire un tableau de bord extensible pour nos utilisateurs ?

D’un point de vue technique, il s’est avéré complètement redondant d’utiliser le logiciel de quelqu’un d’autre. Comme nous avons une façon particulière de gérer les abonnements via Stripe, nous avions besoin d’écrire notre propre logique pour la référence et le mécanisme de changement pour les upgrades et les downgrades.

Stripe

Bien que je sois sûr que de nombreuses solutions ont des APIs, écrire le code pour envoyer nos données à l’API représenterait 80% du travail. Pourquoi ne pas y ajouter 20% et créer notre propre UI, ce à quoi nous sommes plutôt habitués de toute façon.

Coûts impliqués

Une autre grande préoccupation était le prix. Il y a des produits pas chers sur le marché, mais ils n’ont pas fait l’affaire à cause des caractéristiques ou de leur flexibilité. D’autres s’occupent bien des paiements et ont plus de fonctionnalités, mais leurs frais de commerçant augmentent rapidement. Jetons un coup d’oeil au coût de certains des plus populaires. Note : certains d’entre eux pourraient peut-être être négociés un peu plus bas en fonction du volume des ventes et d’autres facteurs.

  • ShareASale : des frais de réseau uniques de 550 $, un dépôt de 100 $ et des frais de transaction de 20 % sur chaque vente.
  • CJ : 3 000 $ de frais d’affiliation, 3 000 $ de dépôt, 500 $ de frais d’accès annuels et 30 % de frais de transaction ou 0,30 $ sur chaque vente, selon le montant le plus élevé.
  • ClickBank : 49,95 $ de frais d’activation, 2,50 $ de frais de traitement par période de paie et 7,5 % de frais de transaction + 1 $ sur chaque vente.

Supposons que nous faisons 250 000 $ par an à partir des ventes d’affiliation, voici à quoi les frais s’élèveraient (c’est après les dépôts uniques et les frais d’accès au réseau). Soit dit en passant, à combien s’élèvent les frais d’accès au réseau ? 🤔

  • ShareASale : 50 000 $ d’honoraires
  • CJ : 75 000 $ d’honoraires
  • ClickBank : 27 000 $ de frais de service

Waw ! C’est beaucoup. Et c’est avant de calculer les autres frais que nous payons déjà à notre processeur de paiement Stripe. Nous avons également examiné d’autres systèmes d’affiliation tels que Rakuten Marketing et Impact Radius, mais les coûts étaient encore plus élevés.L’avantage de créer notre propre système d’affiliation est que notre plus gros coût serait simplement le temps de développement. Nous avions déjà l’incroyable talent en interne pour tout construire. Mais comme vous pouvez le constater, il y a beaucoup de fonctionnalités et de choses à prendre en compte lorsque vous choisissez de créer vous-même ou d’opter pour une solution tierce.

Les bases du fonctionnement de notre système d’affiliation

J’entrerai dans les détails plus bas, mais pour comprendre comment nous avons commencé à construire le produit, il est utile de connaître le flux de données de base.

Le point d’entrée dans le système est un lien spécial qui contient un ID d’affilié. Nous appelons cela le Kinsta affiliate ID ou KAID pour faire court (exemple : https://kinsta.com?kaid=affiliateid)

La plupart des autres outils d’affiliation sont tout simplement confus quand il s’agit de savoir quelle URL vous devez utiliser et où lier. Dès le début, nous voulions donc en faire un processus simple en deux étapes.

Étape 1

La première étape serait de saisir la destination sur le site web de Kinsta. Cela pourrait être n’importe où, pas seulement sur notre page d’accueil. Peut-être veulent-ils faire un lien direct vers notre page des plans (voir ci-dessous).

Créer un lien d'affilié Kinsta
Créer un lien d’affilié Kinsta

Étape 2

La deuxième étape serait de générer le lien pour eux afin qu’ils puissent facilement copier et coller ce lien où ils le souhaitent. Et aussi de fournir le HTML d’accompagnement avec l’attribut de lien rel= »sponsored » (qui est très important) pour se conformer aux directives de Google concernant les liens d’affiliation. Google recommandait auparavant d’utiliser l’attribut nofollow, qui est toujours une option viable.

Générer un lien d'affilié et du code HTML
Générer un lien d’affilié et du code HTML

Lorsque nous détectons un visiteur utilisant l’un de ces liens, nous mettons en place un cookie qui contient des informations sur la personne qui a référé l’utilisateur. Nous récompensons le parrain initial et n’offrons pas de commissions fractionnées. Ceci est plus juste pour l’affilié et conduit à une compétition de qualité plutôt que sur la quantité.

Stripe s’occupe de tous les achats, nous utilisons son API étendue et (pour la plupart) bien documentée pour créer des utilisateurs, des abonnements, initier des paiements, et plus encore. Le flux d’achat se déroule sur le site Web qui utilise à son tour l’API interne de MyKinsta pour lancer les processus dont nous avons besoin pour que l’utilisateur s’inscrive. Les informations sur la personne qui a référé le client sont également enregistrées dans notre système.

The MVP (Start Building)

Chaque fois que vous lancez quelque chose de nouveau, il peut être sage de construire un MVP (produit minimum viable) et de commencer la commercialisation immédiatement pour tester les tendances. Obtenez de la rétroaction dès le début et tirez-en des leçons. S’adapter, changer et apporter des améliorations. C’est exactement ce que nous avons fait lorsque nous avons lancé Kinsta pour la première fois, et comment nous sommes passés de 0 $ à 7 chiffres de revenus.

Nous savions dès le départ que la partie la plus difficile du système serait la logique qui s’occupe du suivi et du calcul des commissions. Initialement, tout le système était écrit en PHP et s’appuyait uniquement sur Stripe pour calculer tout ce qui était ponctuel.

La façon dont nous avons calculé les commissions pour un parrainage consistait à examiner l’historique complet de l’abonnement recommandé et à déterminer combien de commissions uniques sont dues et combien de commissions récurrentes sont dues. Des facteurs tels que le temps écoulé et le type de plan influeraient sur le calcul.

Paiements du système d'affiliation Kinsta
Paiements du système d’affiliation Kinsta

Par exemple, si le parrainage WordPress a été créé il y a deux jours, il n’y avait bien sûr pas de commission unique. Si le parrainage de WordPress a été créé il y a quatre mois, nous avons dû attribuer la commission unique (qui est due après deux mois) et deux commissions récurrentes (dues une fois par mois après la commission unique).

Pour obtenir le montant total de la commission à payer pour un mois, nous avons fait ce qui précède pour toutes les références d’un affilié spécifique. Ce calcul s’est avéré plus intensif qu’on ne le pensait au départ. Nous savions que nous devions faire un changement, mais nous avons trouvé un bon compromis entre la fonctionnalité et le temps de développement.

Le front-end a été construit en utilisant Flight PHP, un micro-framework PHP. Nous avons créé des routes, rassemblé des tableaux et des graphiques et nous nous sommes lancés.

FlightPHP

Changer le MVP (Adaptation et amélioration)

Après environ sept mois de bêta privée et peut-être six mois d’opération régulière, nous avons dû reconstruire. Notre MVP original n’a tout simplement pas été construit à l’échelle. Un changement s’imposait dans la façon dont nous gérons les abonnements en raison de nos nouveaux systèmes d’options additionnelles et de dépassements. Jusqu’à présent, un client avait toujours un seul abonnement. Nous devions changer cela et permettre des abonnements multiples par utilisateur.

Puisque nos clients ont toujours eu un et un seul abonnement, nous pouvons dire sans risque de se tromper que tout abonnement référé actif est égal à un plan d’hébergement référé. En d’autres termes, les abonnements étaient ce que nous considérions comme des références. Nous avions besoin de faire une refonte complète qui considère nos clients Stripe comme des références.

Système d’affiliation et de clients référés Kinsta
Système d’affiliation et de clients référés Kinsta

De plus, la façon non optimale dont nous calculions les commissions commençait à se manifester. Cela a surtout affecté nos administrateurs, mais nous avons eu 1-2 affiliés qui ont connu des temps de chargement plus élevés pendant que nous calculions toutes leurs commissions à chaque fois qu’ils consultaient le tableau de bord.

Pour compléter le tout, nous voulions déplacer l’ensemble du système sur Node + React pour qu’il utilise la même pile que MyKinsta. Cela permettrait à un plus grand nombre de nos développeurs de se joindre à nous si nécessaire et de commencer à utiliser plus facilement un langage de conception commun.

Le produit final

Lorsque nous avons terminé la reconstruction, nous nous sommes retrouvés avec un système largement supérieur qui exigeait beaucoup moins de gestion, avait beaucoup plus de fonctionnalités, automatisait les tâches d’administration des affiliés communs, et partageait la même pile technologique que notre produit principal, MyKinsta.

La pile

Le système d’affiliation fonctionne maintenant sur Node sur le backend et React sur le front. Il utilise GraphQL pour nos besoins de requête et Ant Design pour le framework du design.

nodejs

Il y a en fait quatre processus distincts qui fonctionnent en même temps :

  • Le backend de l’affiliation : C’est l’arrière-plan de tout le système. Il est complètement coupé du monde extérieur ; seules les communications internes peuvent l’atteindre. C’est essentiellement un point d’entrée dans la base de données, tout ce qu’il fait est d’accepter et de répondre aux requêtes GraphQL.
  • Tableau de bord des affiliés : C’est le côté utilisateur du système d’affiliation. Il se compose d’un ensemble de composants React qui obtiennent leurs données via des requêtes GraphQL à partir du backend
  • Admin de l’affiliation : Il s’agit d’une interface d’administration spéciale où les administrateurs se rendent pour consulter les statistiques globales, gérer les applications et effectuer d’autres tâches.
  • Synchronisation de l’affiliation : Un ensemble de tâches cron qui garde tout synchronisé – nous arriverons à cette partie bientôt étant donné que c’est le cœur du système.

Améliorations des données et des calculs

Dans la version initiale du système, nous calculions tout provisoirement. Cela s’est avéré être intensif en données, mais ce n’est pas génial non plus parce que si nous changeons quelque chose – comme le montant de la commission payée – soit cela change tout rétrospectivement, soit nous avons besoin d’ajouter au code des déclarations basées sur la date.

Le nouveau système d’affiliation utilise deux mécanismes pour le rendre beaucoup plus efficace : un meilleur moyen de saisir les données de Stripe et un système de journal pour enregistrer les événements.

Le système d’événements garantit que quoi qu’il arrive, il reste. Si un renvoi est dû pour une commission unique, nous enregistrons cette commission et la joignons au renvoi. Nous marquons alors ce renvoi et nous n’examinons plus jamais les commissions ponctuelles. Le même mécanisme s’applique aux commissions récurrentes. Une fois qu’une période a fait calculer et enregistrer sa commission récurrente, on « oublie » cette période.

Cela signifie que les calculs ne doivent être effectués que pour de courtes périodes de temps et que les agrégations de commissions se font par simple addition de quelques lignes dans la base de données.

La deuxième composante repose sur les tâches cron pour la collecte des données. Nous récupérons toutes les données de Stripe toutes les 10 minutes et les sauvegardons dans une base de données locale en apportant quelques modifications pour faciliter le traitement ultérieur.

Par exemple, il faut une quantité non négligeable de code pour déterminer si un changement d’abonnement implique un plan d’hébergement. Nous pouvons calculer cela ponctuellement quand nous en avons besoin, mais plutôt que de faire cela, nous utilisons une tâche cron pour ajouter un drapeau à l’objet enregistré. Étant donné que nous prenons 10 minutes de données, l’ensemble du processus prend environ 100 millisecondes et rend les requêtes de sélection beaucoup plus efficaces.

Une deuxième tâche cron redistribue les données à leur place finale, en calculant les commissions, en créant des événements et d’autres opérations. 

La raison pour laquelle elles sont faites séparément est que la première opération est très simple mais repose sur Stripe alors que la seconde opération est beaucoup plus intense et complexe. Si nous introduisons un bug dans la deuxième opération qui la fait échouer, nous n’aurons pas besoin de resynchroniser des heures/jours/semaines de données Stripe ; nous aurons juste besoin de réexécuter la deuxième opération.

Cette configuration offre de nombreux autres avantages, chaque tâche cron est composée à son tour de plusieurs composants distincts comme l’obtention de nouveaux abonnements, l’approbation des commissions en attente et ainsi de suite. À l’avenir, il se peut que nous voulions décomposer davantage nos tâches cron afin de nous assurer de pouvoir détecter les problèmes le plus tôt possible sans affecter d’autres parties du système.

Après avoir optimisé nos calculs et migré vers un nouveau framework, notre tableau de bord d’affiliation se charge maintenant deux fois plus vite ! 🚀

Le système d’affiliation et le programme d’affiliation en action

L’article ne serait pas complet sans montrer notre système d’affiliation et notre programme d’affiliation en action. Voici quelques-unes des caractéristiques et avantages que nous offrons à tous les affiliés de Kinsta.

Tableau de bord des affiliés Kinsta
Tableau de bord des affiliés Kinsta

1. Commissions imbattables (Bonus d’inscription + Récurrent)

Nous avons travaillé longtemps et durement sur notre structure de commissions et de paiements car nous réalisons que c’est probablement l’un des facteurs les plus importants pour les affiliés. En fait, de nombreux blogueurs et propriétaires de sites Web que nous hébergeons gagnent leur vie grâce aux revenus de leurs affiliés. Nous sommes fiers d’offrir maintenant les paiements les plus élevés de l’industrie ! Et nous offrons des commissions quels que soient les services d’hébergement référencés.

Pour chaque plan d’hébergement WordPress Kinsta que quelqu’un recommande, il reçoit un bonus d’inscription unique, comme ci-dessous :

  • Plan de départ (50 $)
  • Forfait Pro (100 $)
  • Entreprise 1-4 (150 $)
  • Entreprise 1-2 (500 $)

Les affiliés reçoivent également une commission mensuelle récurrente de 10 % pour chaque parrainage WordPress, en plus du bonus d’inscription. Et pour les parrainages d’hébergement d’applications et de bases de données, nous offrons également des commissions mensuelles récurrentes de 5 %. Mais attendez, nous ne nous arrêtons pas là ! Les commissions récurrentes sont cumulatives, ce qui en fait l’une des meilleures offres de l’industrie de l’hébergement.

Vous trouverez ci-dessous quelques-uns des nombreux exemples que nous avons de la façon dont fonctionnent nos paiements de commissions WordPress. Apprenez plus d’exemples de scénarios de paiement dans nos conditions d’affiliation.

Exemple de prime d’inscription WordPress

Exemple de paiement d'affilié
Exemple de paiement d’affilié

Exemple de commission récurrente WordPress

Exemple de commission récurrente
Exemple de commission récurrente

2. Suivi en temps réel

Notre tableau de bord d’affiliation n’a pas son pareil sur le marché ! Vous pouvez consulter les données d’affiliation en temps quasi réel, les pages vues, les abonnements, les détails détaillés du plan, et même effectuer une analyse descendante jusqu’aux références individuelles et vérifier tous les paiements à partir de cette seule référence (comme indiqué ci-dessous).

Paiement d’affiliation Kinsta
Paiement d’affiliation Kinsta

3. Haute valeur à vie

L’un des plus grands avantages de référer les gens à Kinsta est que nous avons une valeur à vie incroyablement élevée pour chaque client. Notre taux de désabonnement est inférieur à 2 % ! Cela signifie que les affiliés peuvent facilement gagner des commissions récurrentes pour la durée de vie de ce client.

4. Versements mensuels

Il n’est pas nécessaire pour les affiliés de s’inquiéter ou de marquer leurs calendriers. Kinsta paie toujours à temps et c’est envoyé directement sur le compte PayPal de l’affilié chaque mois.

5. Matériel de promotion rapide

Besoin de bannières pour promouvoir Kinsta sur un site web ou un blog ? Ne vous inquiètez pas, on en a plein ! Les bannières promotionnelles et les logos sont facilement accessibles directement depuis le tableau de bord de l’affilié.

Kinsta affiliate banners
Kinsta affiliate banners

6. Fenêtre de conversion longue

Les gens sont occupés et pourraient ne pas se convertir tout de suite. Souvent, les gens aiment faire les boutiques quand il s’agit de choisir un nouvel hébergeur cloud. C’est pourquoi nous fournissons aux affiliés des cookies de suivi de 60 jours pour s’assurer qu’ils sont crédités pour la vente.

7. Prêt pour l’ ITP 2.0

Le système d’affiliation Kinsta est prêt pour ITP 2.0 ! Intelligent Tracking Prevention 2.0 (ITP) est un nouveau paramètre d’Apple dans Safari 11 et au-delà qui limite essentiellement l’accès des solutions de suivi basées sur le Web aux cookies dans le navigateur. Selon Statcounter, en octobre 2018, Safari détenait toujours une part de marché de plus de 15 % des navigateurs Web. Ce changement a donc un impact important sur l’industrie de la publicité.
Cependant, ne vous inquiétez pas. Le système d’affiliation de Kinsta s’appuie uniquement sur des cookies de première partie sans rebondissement ou d’autres méthodes de contournement de l’ITP. Par conséquent, tous les renvois feront l’objet d’un suivi et d’un enregistrement appropriés, comme c’était le cas avant ITP 2.0.
Nous avons délibérément construit le système sans recourir à des méthodes « ITP-proof » pour les raisons suivantes :

  1. Nous croyons en un suivi honnête et transparent et en la collecte du moins de données possible.
  2. Nous n’avons pas besoin de suivre les visiteurs sur plusieurs sites.
  3. Nous nous attendions à ce que les règles du web deviennent plus strictes avec le temps.

Vous pouvez en savoir plus sur les ramifications d’ITP 2.0.

8. Tableau de bord multilingue – Disponible en cinq langues

Notre tableau de bord d’affiliation Kinsta est maintenant disponible en huit langues différentes et d’autres sont à venir. Actuellement, vous pouvez choisir les options suivantes :

  • Anglais
  • Allemand
  • Français
  • Espagnol
  • Italien
  • Néerlandais
  • Portugais
  • Japonais

9. Aider les affiliés à réussir

En plus de construire un système d’affiliation et un tableau de bord impressionnants, nous voulons vraiment que les affiliés réussissent. Il n’y a vraiment aucune limite sur le montant d’argent qu’ils peuvent gagner. C’est totalement gratuit pour tout le monde. Inscrivez-vous ici.

Note : Nous approuvons les comptes d’affiliation manuellement, juste pour nous assurer que les sites respectent nos conditions d’affiliation.

L’équipe marketing de Kinsta, ainsi que notre responsable des affiliés, sont là pour vous aider. Nous sommes heureux de fournir des conseils de marketing d’affiliation et des conseils de vente d’affiliation sur les moyens de faire passer les promotions au niveau supérieur. En fait, nous travaillons à la production de contenu supplémentaire sur notre blog conçu spécialement pour les spécialistes du marketing d’affiliation, et aux moyens d’augmenter les gains.

Résumé

Notre implémentation actuelle s’est avérée beaucoup plus stable, à des années-lumière plus rapide et une meilleure expérience pour nos affiliés et administrateurs. Elle a jeté les bases solides sur lesquelles nous pouvons bâtir un produit et un programme fantastiques.

L’un des grands avantages est que nous pouvons maintenant nous concentrer davantage sur l’amélioration de l’interface utilisateur. Nous avons ajouté plus de graphiques, de suivis d’URLs et plus dans les deux mois qui ont suivi la publication. Nous prévoyons d’améliorer encore l’expérience utilisateur et de donner à nos affiliés des outils qui leur permettront de gagner plus.

On est loin d’avoir fini ! 🤘

Vous songez à construire votre propre système d’affiliation ? Nous ne mentirons pas, c’est beaucoup de travail, mais cela en vaut la peine. Nous avons maintenant un système dont toute notre équipe est fière et que nos affiliés aiment utiliser.

Daniel Pataki

Hi, my name is Daniel, I'm the CTO here at Kinsta. You may know me from Smashing Magazine, WPMU Dev, Tuts+ and other WordPress/Development magazines. Aside from WordPress and PHP I spend most of my time around Node, React, GraphQL and other technologies in the Javascript space.

When not working on making the best hosting solution in the Universe I collect board games, play table football in the office, travel or play guitar and sing in a pretty bad band.