正直なところ、Kinstaは、既存のアフィリエイトシステムに好印象を抱いていません。不便であったり、時代遅れであったり、もたつきが見られたり。このすべてが混在するケースも見られます。必要な機能が半分ほどしかなく、アフィリエイターの要望が満たされていないことも。😩

Kinstaは創設以来、お客様には質をお届けすることを使命として掲げてきました。「自分だったら使わない」と思うものは、もちろんお客様にはご提供しません。そこで、MyKinstaと同じように、アフィリエイトダッシュボードを自社開発することにしました。

こちらの記事では、ビジネスと開発の両方の観点から、この選択を行った理由と、最終的に完成したもの(MVPから最終製品まで)をご紹介したいと思います。

自社開発の訳

アフィリエイトシステム導入に際し調査を行ったところ、すぐに使える解決策がないことに気づきました。その主な理由は次のとおりです。

  • 最大の問題は、アフィリエイトシステムが、第三者システムではなく、Kinstaのプランおよび購読システムと緊密に連携する必要があったこと。
  • 私たちにとって、ブランディングは非常に重要。アフィリエイトシステムの中には、ホワイトラベル対応のものもありますが、そのほとんどは中途半端な実装で、必ずしも完全な透明性があるとは言えません。自分たちで構築すれば、ホワイトラベル対応であるかどうかを気にすることなく、デザインとブランディングを完全にコントロールすることができます。
  • サードパーティのシステムに依存すると、新しい機能を素早く追加する(または追加しないという決断を下す)ことが困難に。MyKinstaのほとんどの機能やツールは、ユーザーのフィードバックから構築されており、だからこそ、業界でも有数のWordPressサイト管理画面(コントロールパネル)を生み出すことができました。お客様のご協力には感謝してもしきれません。👏 サードパーティのソリューションではフィードバックやリクエストをうまく改善にいかすことができなかったでしょう。
  • アフィリエイターだけでなく、管理者にも詳しい情報を表示できる必要あり。私たちはデータの重要性を理解しています。戦略的な意思決定をするためには、データが必要です。また、複雑なプランと購読システムからデータを取得する必要があります。

さらに、アフィリエイトシステムそのものの管理を第三者に委ねると、必要となった時にそれを停止するなどの処理ができなくなります。もちろん、バグは修正されますが、例えば決済会社を変更するとなったらどうでしょうか。アフィリエイターが受け取るべき報酬を保留扱いにするわけにはいきません。

また、柔軟性も重要な問題です。仮に購読の処理方法を変更しなければならなくなった場合(実際にそうなりました)、複数の言語や通貨に対応できるのでしょうか?また、Redis毎時バックアップなど、途中で開発したアドオンはどうでしょうか。管理画面の拡張という問題が発生します。

技術的な観点から、他社ソフトウェアの利用は非常に冗長であると判断しました。私たちはStripeでの特殊な購読処理を行っているため、紹介の定義、そして、アップグレードやダウングレードの変更メカニズムを、Kinstaにおけるロジックの中心に据える必要がありました。

Stripe

多くのソリューションにはAPIがあると思いますが、データをAPIに送るためのコードの記述作業だけで80%ほどになります。さらに20%を追加したらどうでしょう。得意とする独自のUI作成が可能になります。

費用

もう一つの大きな懸念は、価格でした。安価な製品もありますが、機能や柔軟性に問題があるため、採用には至りませんでした。また、決済機能が充実している製品もありますが、事業者手数料が高くつきます。以下で人気の選択肢を見てみましょう。注)販売量やその他の要因に基づいて、少し値下げ交渉ができる可能性はあります。

  • ShareASale:ネットワーク手数料550ドル、デポジット100ドル、販売ごとに20%の取引手数料
  • CJ:ネットワーク手数料3,000ドル、保証金3,000ドル、年間アクセス料500ドル、取引手数料30%または販売ごとに0.30ドルのいずれか多い金額
  • ClickBank:49.95ドルのアクティベーション料金、2.50ドルの支払い期間処理手数料、7.5%の取引手数料、および販売ごとに1ドル

仮にアフィリエイトプログラムを通した売上が年間25万ドルだとすると、手数料は以下のようになります(※保証金とネットワークアクセス料の計算後の額)。そもそも「ネットワークアクセス料」って…という疑問は拭えませんが。 🤔

  • ShareASale:手数料5万ドル
  • CJ:手数料7万5,000ドル
  • ClickBank:手数料2万7,000ドル

かなりの額になります。しかも、これは、決済代行会社であるStripeに支払う他の手数料を計算する前の金額です。楽天(Rakuten Marketing)やImpact Radiusなど、他のアフィリエイトシステムも検討しましたが、費用はさらに高くなりました。

自社アフィリエイトシステムの良さは、最大のコストが単純に開発のみであることです。問題なく構築にあたることのできる人材が社内に既に存在します。しかし、おそらく皆さんもお分かりのように、自社で構築するかサードパーティーのソリューションを利用するかの考慮には、多くの変数が関係しています。

アフィリエイトの基本的な仕組み

詳細は後述しますが、どのように製品を作り始めたかを理解するためには、データの基本的な流れを知っておくと便利です。

まずは、アフィリエイトIDを含む紹介用リンクです。私たちはこれをKinstaアフィリエイトID、略してKAIDと呼んでいます(例:https://kinsta.com?kaid=affiliateid)

他のほとんどのアフィリエイトツールでは、どのURLを使用し、どこにリンクを貼ればいいのかが分かりにくい傾向にあります。そこで、最初から、シンプルな2つのステップを採用しました。

ステップ1

まずは、Kinstaのウェブサイト上でリンク先(リンクをクリックした後に表示されるページ)を入力します。ホームページだけでなく、どこでもかまいません。例えば、プラン一覧のページに直接リンクしても(以下のように)問題ありません。

Kinstaのアフィリエイトリンクを作成する
Kinstaのアフィリエイトリンクを作成する

ステップ2

続いてリンクを生成して、好きな場所にコピー&ペーストします。また、アフィリエイトリンクに関するGoogleのガイドラインに準拠するために、rel=”sponsored”リンク属性(これは非常に重要です)が適用されていることをご確認ください。Googleは以前、nofollow属性の使用を推奨しています。この方針は今でも依然として、有効な選択肢だと言えるでしょう。

アフィリエイトリンクとHTMLコードを生成する
アフィリエイトリンクとHTMLコードを生成する

リンクを使用した訪問者が検出されると、そのユーザーを紹介した人に関する情報を格納したCookieを、Kinstaが設定します。私たちは、最初の紹介者を評価し、報酬の分割は行っていません。これは、アフィリエイターにとってより公平な環境、そしてひいては「量ではなく質」を優先した競争を促すことにつながります。

Stripeによりすべてのお支払い情報が処理され、その広範にわたり文書化されたAPIを使用し、Kinstaがユーザー、購読情報、お支払いの開始タイミングといったデータを扱います。購入フローはサイト上で実行され、MyKinstaの内部APIを使用し、ユーザー登録に必要なプロセスを開始することができます。また、誰がクライアントを紹介したかという情報も、システムで記録されます。

MVP(構築の開始)

新しく何かを作る時に便利な概念が、MVP(minimum viable product)です。これを市場に投入し、すぐにマーケティングを開始することが一つの賢明な策です。早い段階でフィードバックを得て、そこから学ぶことができます。それに続くのが適応、変更、改善。Kinsta立ち上げにもこの法則を適用しており、0ドルから収益7桁までブートストラップ方式で成長した背景には、この考えがあります。

システムの最も困難な部位は、追跡と報酬の計算を行うロジック─これについては、最初からわかっていました。当初、システム全体はPHPで書いており、すべてを都度計算する上でStripeに依存していました。

成果保証の計算方法は、紹介相手のStripeの履歴をすべて確認し、1回限りの報酬と継続的な報酬を算出するもので、経過時間やプランの種類などの要素が計算に影響を及ぼします。

Kinstaアフィリエイトシステムにおける報酬の処理
Kinstaアフィリエイトシステムにおける報酬の処理

例えば、WordPressホスティングプランの紹介が2日前に行われた場合、もちろんまだ、この段階では一度限りの報酬はありません。WordPressホスティングプランの紹介が4ヶ月前に行われた場合、1回限りの報酬(2ヶ月後に支払われる)と2回の定期的な報酬(1回限りの報酬の後に1ヶ月ごとに支払われる)を計算する必要があります。

1ヶ月分の報酬の合計額を算出するために、特定のアフィリエイトからのすべての紹介に対して上記の作業を行いました。そして、当初考えていたよりも計算が大変なことが判明しています。しかし、機能性と開発期間との兼ね合いで、ちょうど良い着地点を見つけることができました。

フロントエンドは、PHPのマイクロフレームワークであるFlight PHPを使用して構築しています。いくつかルートを作成し、テーブルとグラフを組み立てて、スタートを切りました。

FlightPHP

MVPの変更(適応と改善)

プライベートベータ版で7ヶ月、通常版で6ヶ月ほど運用した後、再構築を行いました。というのも、当初のMVPは、スケーリングを考えて作られていませんでした。新たに導入されたアドオンと超過料金のシステムにより、購読の処理方法を変更する必要性が生じたのです。以前は、顧客の購読は1つまで。これを変更し、ユーザーごとに複数のプランが購読できるようにする必要がありました。

以前の購読は1つまででしたので、紹介により成立した有効なプランが何を指しているのかは明確でした。言い換えれば、購読=紹介です。そんな過去からの変更点として、Stripeを介した紹介者の特定のために、完全な作り直しが求められました。

Kinstaアフィリエイトシステムで紹介成約となった顧客
Kinstaアフィリエイトシステムで紹介成約となった顧客

さらに、報酬の計算方法が最適でないという点も頭をもたげ始めていました。主に管理者に影響が出たのですが、管理画面を見るたびに(すべての報酬の計算のために)読み込み時間に遅延が見られるアフィリエイターの方が1〜2名いました。

そこで、システム全体をNode+Reactへ移行し、MyKinstaと同じスタックを使用するようにしました。これにより、必要に応じてより多くの開発者が参加できるようになり、共通のデザイン言語を今まで以上に簡単に使えるようになりました。

最終製品

再構築が終わると、必要な管理が大幅に減りました。機能も増え、よくあるアフィリエイト管理のタスクを自動化し、Kinstaの主要製品であるMyKinstaと同じ技術スタックを共有する、はるかに優れたシステムの出来上がりです。

スタック

アフィリエイトシステムは現在、バックエンドにNode、フロントエンドにReactを採用し、クエリにはGraphQLを、デザインフレームワークにはAnt Designを利用しています。

nodejs

実際には、4つのプロセスが同時に動いています。

  • アフィリエイトバックエンド:システム全体のバックエンドです。外部からは完全に遮断され、内部の通信のみが可能です。基本的にはデータベースへの入り口であり、GraphQLクエリを受け付け、それに答えるのがこれの役割となります。
  • アフィリエイトダッシュボード/管理画面:アフィリエイトシステムの中でもユーザー側を司ります。バックエンドからGraphQLクエリでデータを取得するReactコンポーネントで構成されます。
  • アフィリエイト管理者:統計データを見たり、アプリケーションを管理したり、その他のタスクを実行したりできます。
  • アフィリエイトシンク:cronジョブにより、すべての同期を行っています。システムの骨格であるため、以下で説明します。

データと計算における改善

システムの初期バージョンでは、すべてをその場で計算していました。データ集約的であるだけでなく、何かを変更した場合(例えば支払った報酬の額)、すべてを後から変更するか、日付ベースのif文でコードを「散らかす」ことになったため、あまり良い方法ではないと判断されました。

新しいアフィリエイトシステムでは、Stripeからデータを取得する優れた方法と、イベントを記録する台帳という、2つの仕組みを使うことで、より効率的なシステムを実現しました。

イベントシステムにより、何が起こっても、それが確実に残ります。紹介者に1回限りの報酬が発生した場合、その報酬を記録し、紹介者に紐付けます。そして、その紹介者に二度と1回限りの報酬が発生しないようにします。同じ仕組みが、継続報酬にも適用されます。一度、定期的な報酬が計算、記録されると、その期間のことは「忘れる」ことができます。

つまり、計算は短期間のみ行われ、報酬の集計はデータベースの行を合計するだけで済みます。

2つ目のコンポーネントは、データ収集の方法としてcronジョブに依存しています。10分ごとにStripeからすべてのデータを取得し、ローカルのデータベースに保存し、その後の処理が簡単になるよう少しの変更を加えます。

例えば、契約変更のイベントがホスティングプランに関係しているかどうかを調べるには、少なからぬ量のコードが必要です。必要なときにその場で計算することもできますが、そうするよりも、cronジョブを使用して、保存してあるオブジェクトにフラグを追加する方が好ましいでしょう。10分間のデータを取得しているため、全体の処理は100ミリ秒程度で済み、さらなる選択クエリの効率が大幅に向上します。

2番目のcronジョブは、データを最終的な場所にシャッフルするかたちで組み込み、報酬を計算、イベントを作成し、その他の処理を行います。

この作業を別々に行う理由は、最初の操作が非常にシンプルでStripeに依存しているのに対し、2番目の操作はかなり集中的で複雑なためです。2番目の操作にバグがあり失敗した場合、何時間、何日、何週間ものStripeのデータを再同期する必要はありません。

このセットアップには他にも多くのメリットがあります。各cronジョブは、新しい購読の取得、保留中の報酬の承認など、複数のコンポーネントで構成されています。将来的には、システムの他の部分に影響を与えることなく問題を早期に発見できるようにするために、cronジョブをさらに分解することも考えられます。

計算を最適化し、新しいフレームワークに移行した後、アフィリエイトダッシュボードの読み込みは2倍高速になりました。🚀

アフィリエイトの仕組みとプログラム

Kinstaのすべてのアフィリエイト関連機能と強みのほんの一部にはなってしまいますが、アフィリエイトシステムとプログラムのもう少し奥の方をご紹介したいと思います。

Kinstaアフィリエイトダッシュボード
Kinstaアフィリエイトダッシュボード

1. 破格の報酬(初回ボーナス+定期的な報酬)

アフィリエイトプログラムにおける最も重要な要素の1つである報酬と払い出しの構造について、Kinstaは長い間懸命に思考し、取り組んできました。実際、多くのブロガーやウェブサイト所有者の方々が、アフィリエイト収入で生計を立てています。だからこそ、業界でも最も高い報酬の提供を是としています。また、成約となったサービスに関係なく報酬対象としています。

KinstaのWordPress専用マネージドホスティングプランでは、以下のように初回報酬がもらえます。

  • Starterプラン (50ドル)
  • Proプラン (100ドル)
  • Business1-4 (150ドル)
  • Enterprise1-2 (500ドル)

上記のようなWordPressホスティングプランの紹介に成功した際には、初回ボーナスに加えて、毎月10%の継続的報酬も支払われます。また、アプリケーションホスティングとデータベースホスティングの紹介であれば、毎月5%の継続的報酬が進呈されます。しかし、これだけでは終わりません。この報酬は累積されます。ホスティング/サーバー業界で最もアフィリエイターに優しいプログラムの1つだと言えるでしょう。

以下は、WordPressの成果報酬についての一例です。アフィリエイト規約で、詳しい情報をご確認ください。

WordPressサインアップ(初回登録)ボーナスの例

アフィリエイト報酬の支払い例
アフィリエイト報酬の支払い例

WordPressの継続的報酬の例

定期的な報酬の例
定期的な報酬の例

2. リアルタイムの追跡

Kinstaのアフィリエイトダッシュボードは、他社サービスとは大きく異なります。アフィリエイトデータをほぼリアルタイムで見ることができ、ページビュー(PV)、購読、プランの中身、さらに個々の紹介者に紐付いたお支払い履歴を確認可能です。以下のスクリーンショットをご覧ください。

Kinstaアフィリエイトの詳細データ
Kinstaアフィリエイトの詳細データ

3. 報酬がずっともらえる

Kinstaのサービスを紹介することのメリットは、各クライアントの生涯価値が非常に高い(期間が長い)ことです。Kinstaの解約率は2%以下です。アフィリエイトプログラムにより、紹介相手がホスティングプランを利用する限り、継続して報酬を受け取ることができます。

4. 毎月の払い出し

いつになったら払い出しがあるのかと思案する必要はありません。Kinstaでは常に期限内での払い出しを行っています。毎月アフィリエイトアカウントに紐付けられたPayPalアカウントに直接、報酬額が送金されます。

5. 豊富な宣伝素材

サイトやブログでKinstaを宣伝するのに便利なバナーを豊富にご用意しています。アフィリエイトダッシュボードから簡単に確認・入手できます。

Kinstaのアフィリエイト用バナー各種
Kinstaのアフィリエイト用バナー各種

6. 長いコンバージョンウィンドウ

紹介されたからといって、誰もがすぐに購入に至る(つまりコンバージョン発生)とは限りません。クラウドホスティング関連サービスの選択前には、実際、多くの人が様々な選択肢の比較検討を行うものです。そのため、私たちはアフィリエイトに60日間の追跡用Cookieを使い、紹介者の努力ができるだけ報われるようにしています。

7. ITP2.0に対応

Kinstaのアフィリエイトシステムは、ITP 2.0に対応しています。Intelligent Tracking Prevention 2.0(ITP)は、Safari 11以上を対象にしたAppleによる新しい設定で、基本的にウェブベースのトラッキングソリューションがブラウザのCookieにアクセスすることを制限するものです。最近の調査によると、2020年10月現在、Safariはウェブブラウザ市場シェアの約8%を占めています。つまり、この変更は広告業界に大きな影響を与えています。

しかし、心配は要りません。Kinstaのアフィリエイトシステムは、ファーストパーティCookieのみに依存しています。その結果、すべての紹介はITP 2.0以前と同様に適切に追跡の上、記録されます。

私たちは以下の理由から、意図的に「ITP対策」に頼らずにシステムを構築しています。

  1. 誠実で透明性のあるトラッキングと、可能な限り少ないデータの収集が重要
  2. 複数のサイトを通じて訪問者を追跡する必要はない
  3. ウェブのルールが時代とともに厳しくなることは予見済み

ITP 2.0の影響についてはこちらで詳しく解説されています。

8. 多言語ダッシュボード

Kinstaアフィリエイトダッシュボードは現在8つの言語でご利用可能です。さらに多くの言語が追加される予定です。現在、以下に対応しています。

  • 英語
  • 日本語
  • ドイツ語
  • フランス語
  • スペイン語
  • イタリア語
  • オランダ語
  • ポルトガル語

9. アフィリエイトの成功を支援

優れたアフィリエイトシステムとダッシュボードの構築だけでは不十分です。私たちは、アフィリエイターの皆さんの成功を心から願っています。アフィリエイトプログラムから手にすることのできる金額に制限はありません。誰でも無料で参加申請可能です登録はこちらからどうぞ。

注意)サイトがアフィリエイトの条件を遵守していることを確認するために、一つ一つ審査の上、アフィリエイトアカウントを承認しています。

Kinstaのマーケティング部門とアフィリエイトマネージャーがお手伝いします。アフィリエイトマーケティングのヒントアフィリエイトからの報酬アップのヒントもご用意しています。アフィリエイトに取り組む人々をサポートできるように、ブログ記事執筆等に積極的に取り組んでいます。

まとめ

現在の仕様により、高い安定性が確保され、速度も向上し、アフィリエイターと管理者の両方にとっての使いやすさが実現しています。素晴らしい製品とプログラムを構築するための強固な基盤が出来上がりました。

大きなメリットとして、ユーザー向けの改良に今まで以上に集中できるようになっています。リリース後数ヶ月の間に、チャート、URLトラッキングなどを追加しました。今後は、さらにユーザーエクスペリエンスの向上を進め、アフィリエイターの皆さんによる報酬UPを支援するツールを導入する予定です。

Kinstaアフィリエイトプログラムの本領発揮は、まだまだこれからです。🤘

アフィリエイトシステムの自力での構築は、正直言って、大変な作業ですが、時間と労力を費やす価値は十分にあります。自信をもってお届けできる、そして、アフィリエイターの方々に活用してもらえるシステムを構築することができ嬉しく思います。

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.