AFFYNOR の WooCommerce コネクタ
WooCommerce ストアの注文・カタログ・返金を同期し、売上を広告キャンペーンに帰属させます(click ref と TikTok の ttclid)。突合は自動です。
1. インストール
1.1 コンシューマーキーを作成する(読み取り・書き込み権限)
WooCommerce → 設定 → 詳細設定 → REST API → 「キーを追加」。権限は読み取り・書き込み(Webhook の登録には書き込みが必要)。ストアは HTTPS で到達可能である必要があります。
1.2 プラットフォームから接続する
マイストア → WooCommerce カードで、ストアのベース URL、コンシューマーキー、コンシューマーシークレットを入力します。接続は即座に検証され、有効なまま保たれます。
1.3 アトリビューションのスニペットを設置する
スニペットは二つの部分から成ります。サンキューページで注文を出力する PHP フック(functions.php またはコードスニペット)と、参照を記録して購入イベントを発火する JavaScript(GTM またはテーマ)です。
add_action('woocommerce_thankyou', function ($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
echo '<div id="affynor-order" data-affynor-order-id="' . esc_attr($order->get_id())
. '" data-affynor-order-total="' . esc_attr($order->get_total())
. '" data-affynor-order-currency="' . esc_attr($order->get_currency()) . '" style="display:none"></div>';
}, 10);<script>!function(){var S="https://affynor.com",K="TU_SECRETO";function u(n){try{return new URLSearchParams(location.search).get(n)}catch(e){}}function c(n){try{return document.cookie.split("; ").find(function(x){return x.indexOf(n+"=")===0}).slice(n.length+1)}catch(e){}}var r=u("affynor_ref")||c("affynor_ref")||c("tiktok_ttclid");if(r){try{document.cookie="affynor_ref="+encodeURIComponent(r)+"; path=/; max-age=31536000"}catch(e){}}var b=u("fbclid")||c("affynor_fbc");if(b&&!/^fb[.]/.test(b)){b="fb.1."+Date.now()+"."+b}if(b){try{document.cookie="affynor_fbc="+encodeURIComponent(b)+"; path=/; max-age=31536000"}catch(e){}}function f(o){try{fetch(S+"/store/pixel",{method:"POST",headers:{"Content-Type":"application/json","x-affynor-pixel-secret":K},body:JSON.stringify({order_id:o.id,revenue_cents:Math.round(+o.total*100),currency:o.cur||"EUR",ref_code:r,fbclid:b})})}catch(e){}}window.affynorPixel=f;function a(){var e=document.getElementById("affynor-order");if(e)f({id:e.getAttribute("data-affynor-order-id"),total:e.getAttribute("data-affynor-order-total")||"0",cur:e.getAttribute("data-affynor-order-currency")});}if(/thank|gracias|success|pedido|confirm/i.test(location.pathname))setTimeout(a,400)}();</script>接続したストアのカードに表示されるピクセルシークレットに置き換えます:TU_SECRETO
2. アトリビューション
広告 URL の affynor_ref パラメータ(または TikTok の ttclid)は Cookie に保存され、サンキューページで注文に添付されます。スニペットは Meta の fbclid も fb.1.<timestamp>.<fbclid> の形式で保存し、コンバージョンを Meta のクリックに突き合わせられるようにします。イベントは保留のままとなり、同期した注文と自動で突合されます。キャンペーンに帰属するのは検証済みの販売だけです。
3. 同期
WooCommerce の Webhook(order.created、order.updated、product.created、product.updated)が変更をリアルタイムで届けます。安全のための同期が 10 分ごとにストアを巡回し、GET /orders/{id}/refunds による返金も取り込みます。WordPress の cron が失敗しても、記録から漏れる注文はありません。
4. 返金
返金は自動で同期され、その月の帰属売上から差し引かれます。全額返金された注文は突合の段階で却下され、報酬を生むことはありません。
5. 手数料モデル
その月の帰属売上の 15%、最低 129.90 ユーロ。帰属売上が無い月には最低額は適用されません(初月は無料)。最低額は、複数のストアを接続していても事業者ごとに一つです(例:Shopify と WooCommerce)。
6. トラブルシューティング
事業者の WordPress cron が無効、または遅延している
WP の cron を確認します。その間は安全のための同期(10 分ごと)が注文を補います。よくある質問にも記載しています。署名の方式(body か delivery_url+body か)、またはコンシューマーシークレットが一致しない
現在のコンシューマーシークレットで HMAC を計算し直し、そのシークレットで Webhook を作り直します。コンシューマーキーが失効している、または読み取り・書き込み権限がない
WooCommerce でキーを再生成し、カードから再接続します。スニペットが発火していない(広告ブロック、Cookie、サンキューページ以外での遷移)
サンキューページでスニペットを確認します。同期が突合するまでイベントは PENDING のままです。7. 状態とロードマップ
コネクタは試験導入の事業者とともに検証中です。接続・アトリビューション・同期は完成しており(フェーズ A〜D)、実ストアでの検証(フェーズ E)が進行中です。WooCommerce マーケットプレイスで拡張機能として公開することが次の節目です。