1
0

Facebook广告上报分�.md 8.5 KB

Facebook ¹ã¸æÉϱ¨·ÖÎöÎĵµ

¸ÅÊö

ÕâÌ׳ÌÐòʵÏÖÁË¶àÆ½Ì¨¹ã¸æ×·×Ùϵͳ£¬Ö§³Ö Facebook Pixel¡¢Google Analytics¡¢Kwai Pixel ºÍ Firebase Analytics¡£±¾ÎĵµÖصã·ÖÎö Facebook (FB) ¹ã¸æÉϱ¨µÄʵÏÖ¡£

ºËÐÄÎļþ½á¹¹

1. Ö÷ÒªÎļþ

  • src/tracking/FacebookPixel.js - Facebook Pixel ºËÐÄʵÏÖ
  • src/tracking/TrackAll.js - ͳһµÄʼþ×·×Ù¹ÜÀíÆ÷
  • src/tracking/ApkPromote.js - APK ÍÆ¹ãÇþµÀ´¦Àí£¨°üº¬ FB ³õʼ»¯£©
  • src/features/mainSlice.js - Ö÷״̬¹ÜÀí£¬°üº¬³õʼ»¯Âß¼­
  • src/features/actions/hallClient.js - Ö§¸¶Íê³ÉµÈʼþÉϱ¨

Facebook Pixel ³õʼ»¯Á÷³Ì

1. ³õʼ»¯Èë¿Ú (src/tracking/FacebookPixel.js)

fb_setPixelID(pixelID, ex_id) º¯Êý

¹¦ÄÜ: ³õʼ»¯ Facebook Pixel

²ÎÊý»ñÈ¡ÓÅÏȼ¶:

  1. URL ²ÎÊý pixel »ò rb_pixel_id
  2. localStorage Öд洢µÄ pixelID
  3. º¯Êý´«ÈëµÄ pixelID ²ÎÊý

³õʼ»¯²½Öè:

// 1. ¶¯Ì¬¼ÓÔØ Facebook Pixel SDK
initFbq(
    window,
    document,
    "script",
    "https://connect.facebook.net/en_US/fbevents.js"
)

// 2. ³õʼ»¯ Pixel ID
if (!!ex_id) {
    window.fbq("init", pixelID, {'external_id': ex_id});
} else {
    window.fbq("init", pixelID);
}

// 3. ×Ô¶¯Éϱ¨Ò³Ãæä¯ÀÀ
window.fbq("track", "PageView");

¹Ø¼üÌØÐÔ:

  • Ö§³Ö external_id ²ÎÊý£¨Óû§ÍⲿID£¬ÓÃÓÚÓû§Æ¥Å䣩
  • Pixel ID »á±£´æµ½ localStorage£¬±ãÓÚºóÐøÊ¹ÓÃ
  • ×Ô¶¯´¥·¢ PageView ʼþ

2. ʼþ×·×Ùº¯Êý

fb_trackEvent(eventName, params)

¹¦ÄÜ: Éϱ¨×Ô¶¨Òåʼþ»ò±ê׼ʼþ

ʼþÀàÐÍÅжÏ:

  • ±ê׼ʼþ: ʹÓà fbq('track', eventName, params)
    • Ö§³ÖµÄ±ê׼ʼþ: PageView, ViewContent, Search, AddToCart, AddToWishlist, InitiateCheckout, AddPaymentInfo, Purchase, Lead, CompleteRegistration
  • ×Ô¶¨Òåʼþ: ʹÓà fbq('trackCustom', eventName, params)
    • ËùÓзDZê׼ʼþ¶¼×÷Ϊ×Ô¶¨ÒåʼþÉϱ¨

ʾÀý:

// ±ê׼ʼþ
fb_trackEvent('Purchase', { value: 100, currency: 'USD' });

// ×Ô¶¨Òåʼþ
fb_trackEvent('firstpayD0', { external_id: 'user123' });

ͳһʼþ×·×Ùϵͳ (src/tracking/TrackAll.js)

1. ³õʼ»¯º¯Êý

initTrackAll(pf_type, pf_id, ex_id)

¹¦ÄÜ: ¸ù¾Ýƽ̨ÀàÐͳõʼ»¯¶ÔÓ¦µÄ×·×Ùϵͳ

ƽ̨ÀàÐÍ:

  • pf_type === "fb" ¡ú ³õʼ»¯ Facebook Pixel
  • pf_type === "kw" ¡ú ³õʼ»¯ Kwai Pixel
  • pf_type === "gg" ¡ú ³õʼ»¯ Google Analytics
  • pf_type === "apk" ¡ú ´¦Àí APK ÍÆ¹ã
  • pf_type === "fire" ¡ú ³õʼ»¯ Firebase Analytics

µ÷ÓÃλÖÃ:

  1. src/features/mainSlice.js:280 - ´Ó·þÎñÆ÷ÅäÖÃÖлñȡƽ̨ÐÅÏ¢ºó³õʼ»¯
  2. src/tracking/ApkPromote.js:51 - APK ÇþµÀ³õʼ»¯

2. ʼþÉϱ¨º¯Êý

trackEvent(eventName, params)

¹¦ÄÜ: ͳһµÄʼþÉϱ¨½Ó¿Ú£¬¸ù¾Ýµ±Ç°Æ½Ì¨ÀàÐÍ×Ô¶¯Â·Óɵ½¶ÔÓ¦µÄ×·×Ùϵͳ

Facebook Æ½Ì¨ÌØÊâ´¦Àí:

1. Ö§¸¶Ê¼þ (eventName === "pay")
if (pf_type === 'fb') {
    let data = params;
    
    // Ê×´ÎÖ§¸¶ (first === true)
    if (data.first) {
        // D0 Ê׳䣨µ±ÌìÊ״γäÖµ£©
        if (!!data.isd0) {
            fb_trackEvent("firstpayD0", { external_id: data.udid });
            fb_trackEvent('AddToWishlist', {
                value: data.golds,
                currency: global.currency,
                external_id: data.udid
            });
        }
        // D1 Ê׳䣨Ê״γäÖµ£©
        fb_trackEvent("firstpayD1", { external_id: data.udid });
        fb_trackEvent('AddToCart', {
            value: data.golds,
            currency: global.currency,
            external_id: data.udid
        });
    } 
    // ¸´³ä£¨·ÇÊ×´ÎÇÒ·ÇD0£©
    else if (!data.isd0) {
        fb_trackEvent("payagain", { external_id: data.udid });
        fb_trackEvent('InitiateCheckout', {
            value: data.golds,
            currency: global.currency,
            external_id: data.udid
        });
    }
    
    // ËùÓÐÖ§¸¶¶¼»áÉϱ¨ Purchase ʼþ
    fb_trackEvent('Purchase', {
        value: data.golds,
        currency: global.currency,
        external_id: data.udid
    });
}

Ö§¸¶Ê¼þÉϱ¨Âß¼­:

  • firstpayD0: µ±ÌìÊ״γäÖµ£¨D0£©
  • firstpayD1: Ê״γäÖµ£¨D1£©
  • payagain: ¸´³ä£¨·ÇÊ×´ÎÇÒ·ÇD0£©
  • Purchase: ËùÓÐÖ§¸¶¶¼»áÉϱ¨µÄ±ê׼ʼþ
  • AddToCart: Ê×´ÎÖ§¸¶Ê±Éϱ¨
  • AddToWishlist: D0Ê׳äʱÉϱ¨
  • InitiateCheckout: ¸´³äʱÉϱ¨

²ÎÊý˵Ã÷:

  • data.golds: ³äÖµ½ð¶î
  • data.udid: Óû§Î¨Ò»±êʶ£¨ÓÃÓÚ external_id£©
  • data.first: ÊÇ·ñÊ×´ÎÖ§¸¶
  • data.isd0: ÊÇ·ñµ±ÌìÊ״γäÖµ
  • global.currency: »õ±ÒÀàÐÍ£¨Èç 'USD', 'BRL'£©
2. ×¢²áÍê³Éʼþ (eventName === "CompleteRegistration")
if (eventName === "CompleteRegistration") {
    fb_trackEvent('CompleteRegistration', { external_id: params.udid });
}
3. ÆäËûʼþ

Ö±½Ó͸´«¸ø fb_trackEvent


ʼþ´¥·¢Î»ÖÃ

1. Ö§¸¶Íê³Éʼþ (src/features/actions/hallClient.js)

// ÔÚ handlePayFinish º¯ÊýÖÐ
case "pay_finish": {
    let { data } = message;
    if (!!data && !!data.event) {
        trackEvent("pay", data.params);
    }
    break;
}

´¥·¢Ê±»ú: ·þÎñÆ÷ͨ¹ý WebSocket ·¢ËÍ pay_finish ÏûϢʱ

Êý¾ÝÀ´Ô´: ·þÎñÆ÷·µ»ØµÄ data.params °üº¬:

  • golds: ³äÖµ½ð¶î
  • udid: Óû§ID
  • first: ÊÇ·ñÊ×´ÎÖ§¸¶
  • isd0: ÊÇ·ñµ±ÌìÊ״γäÖµ
  • order_sn: ¶©µ¥ºÅ

2. ×¢²áÍê³Éʼþ (src/features/mainSlice.js)

// ÔÚ parseLogin º¯ÊýÖÐ
if (!!data.reg) {
    // ÐÂ×¢²áµÄÓû§
    trackEvent("CompleteRegistration", { external_id: data.UserID })
}

´¥·¢Ê±»ú: Óû§µÇ¼ʱ£¬Èç¹û data.reg ÎªÕæ£¬±íʾÊÇÐÂ×¢²áÓû§


3. ·þÎñÆ÷Ö÷¶¯´¥·¢Ê¼þ (src/features/actions/hallClient.js)

case "call_client": {
    if (!!message.data && !!message.data.type) {
        let { data } = message;
        switch (message.data.type) {
            case "track": {
                trackEvent(data.event, data.params)
                break;
            }
        }
    }
    break;
}

´¥·¢Ê±»ú: ·þÎñÆ÷ͨ¹ý WebSocket Ö÷¶¯µ÷Óÿͻ§¶Ë½Ó¿Ú£¬ÀàÐÍΪ track ʱ


ƽ̨ÅäÖûñÈ¡

ÅäÖÃÀ´Ô´ (src/features/mainSlice.js)

// ´Ó·þÎñÆ÷·µ»ØµÄÅäÖÃÖлñÈ¡
let conf = json.conf;
if (!!conf.pf && !!conf.pf.id) {
    let { type, id } = conf.pf;
    initTrackAll(type, id, isLogin ? userInfo.UserID : null)
}

ÅäÖýṹ:

conf.pf = {
    type: "fb",  // ƽ̨ÀàÐÍ
    id: "123456789"  // Pixel ID
}

external_id: Èç¹ûÓû§ÒѵǼ£¬Ê¹Óà userInfo.UserID ×÷Ϊ external_id


APK ÍÆ¹ãÇþµÀ´¦Àí (src/tracking/ApkPromote.js)

loadInfoNew(us, userid) º¯Êý

¹¦ÄÜ: ´¦Àí APK ÍÆ¹ãÇþµÀ£¬´Ó·þÎñÆ÷»ñÈ¡Óû§ÐÅÏ¢ºÍ Pixel ÅäÖÃ

Á÷³Ì:

  1. µ÷Óà API »ñÈ¡Óû§ÐÅÏ¢
  2. ÉèÖà Cookie£¨Èç¹û·þÎñÆ÷·µ»Ø£©
  3. ÅжÏÓû§ÀàÐÍ£¨user.isfb()£©
  4. Èç¹ûÊÇ Facebook ÇþµÀ£¬³õʼ»¯ Facebook Pixel

    if(user.isfb()){
    global.pf.type="fb"
    initTrackAll('fb', user.params.pixel, userid)
    }
    

¹Ø¼üÅäÖúʹ洢

1. Pixel ID ´æ´¢

  • λÖÃ: localStorage.getItem("pixelID")
  • ÉèÖÃ: localStorage.setItem("pixelID", pixelID)

2. ƽ̨ÀàÐÍ´æ´¢

  • λÖÃ: global.pf.type
  • ÓÃ;: Åжϵ±Ç°Ê¹ÓõÄ×·×ÙÆ½Ì¨

3. Óû§ÐÅÏ¢´æ´¢

  • λÖÃ: localStorage.getItem("user")
  • °üº¬: params.pixel, params.fbclid, params.gclid µÈ

±ê׼ʼþÁбí

Facebook Pixel Ö§³ÖµÄ±ê׼ʼþ£¨ÔÚ FacebookPixel.js Öж¨Ò壩:

  1. PageView - Ò³Ãæä¯ÀÀ£¨×Ô¶¯´¥·¢£©
  2. ViewContent - ²é¿´ÄÚÈÝ
  3. Search - ËÑË÷
  4. AddToCart - ¼ÓÈ빺Îï³µ
  5. AddToWishlist - ¼ÓÈëÔ¸ÍûÇåµ¥
  6. InitiateCheckout - ·¢Æð½áÕË
  7. AddPaymentInfo - Ìí¼ÓÖ§¸¶ÐÅÏ¢
  8. Purchase - ¹ºÂò
  9. Lead - DZÔÚ¿Í»§
  10. CompleteRegistration - Íê³É×¢²á

×Ô¶¨Òåʼþ

³ÌÐòÖÐʹÓõÄ×Ô¶¨Òåʼþ:

  1. firstpayD0 - µ±ÌìÊ״γäÖµ
  2. firstpayD1 - Ê״γäÖµ
  3. payagain - ¸´³ä
  4. InstallPWA - °²×° PWA£¨Í¨¹ý installready ʼþ´¥·¢£©

Êý¾ÝÉϱ¨²ÎÊý˵Ã÷

ͨÓòÎÊý

  • external_id: Óû§ÍⲿID£¬ÓÃÓÚÓû§Æ¥Å䣨ͨ³£ÊÇ UserID »ò udid£©
  • value: ½ð¶îÊýÖµ
  • currency: »õ±ÒÀàÐÍ£¨Èç 'USD', 'BRL'£©

Ö§¸¶Ê¼þ²ÎÊý

{
    golds: 100,           // ³äÖµ½ð¶î
    udid: "user123",      // Óû§Î¨Ò»±êʶ
    first: true,          // ÊÇ·ñÊ×´ÎÖ§¸¶
    isd0: false,          // ÊÇ·ñµ±ÌìÊ״γäÖµ
    order_sn: "ORD123"    // ¶©µ¥ºÅ
}

×¢ÒâÊÂÏî

  1. Pixel ID ÓÅÏȼ¶: URL ²ÎÊý > localStorage > º¯Êý²ÎÊý
  2. external_id: ÓÃÓÚÓû§Æ¥Å䣬½¨ÒéʹÓÃÓû§Î¨Ò»±êʶ
  3. ʼþÉϱ¨: ËùÓÐʼþ¶¼»á¼ì²é window.fbq ÊÇ·ñ´æÔÚ£¬±ÜÃâδ³õʼ»¯Ê±±¨´í
  4. ƽ̨Çл»: ͨ¹ý global.pf.type Åжϵ±Ç°Æ½Ì¨£¬Ö§³Ö¶àƽ̨Çл»
  5. ´íÎó´¦Àí: initTrackAll ʹÓà try-catch °ü¹ü£¬±ÜÃâ³õʼ»¯Ê§°ÜÓ°ÏìÖ÷Á÷³Ì

×ܽá

ÕâÌ× Facebook ¹ã¸æÉϱ¨ÏµÍ³ÊµÏÖÁË:

  1. ? Áé»îµÄ Pixel ID ÅäÖã¨URL²ÎÊý¡¢localStorage¡¢·þÎñÆ÷ÅäÖã©
  2. ? ±ê׼ʼþºÍ×Ô¶¨ÒåʼþÖ§³Ö
  3. ? Ö§¸¶Á÷³ÌµÄÍêÕû×·×Ù£¨Ê׳䡢¸´³ä¡¢D0/D1£©
  4. ? Óû§×¢²áÍê³É×·×Ù
  5. ? ·þÎñÆ÷Ö÷¶¯´¥·¢Ê¼þÖ§³Ö
  6. ? ¶àƽ̨֧³Ö£¨FB¡¢Google¡¢Kwai¡¢Firebase£©
  7. ? Óû§IDÆ¥Å䣨external_id£©

Õû¸öϵͳÉè¼ÆºÏÀí£¬Ö§³Ö¶àÇþµÀÍÆ¹ãºÍ¾«Ï¸»¯Ê¼þ×·×Ù¡£