Facebook Shop - Product Feed

Pada SWIFT, dapat mengintegrasikan product ke Catalog yang terdapat pada Facebook Business Manager. Terkait Facebook Shop & Instagram Shop, approval dari Facebook masih dibutuhkan sesuai dengan Page & akun dari masing-masing pengguna.

Konfigurasi Facebook Shop Melalui Admin


Untuk mengkonfigurasi supaya dapat terhubung dengan Facebook Business Manager, dapat melakukan hal berikut :


  1. Konfigurasikan hal dasar dari modul ini, dengan klik Store > Configuration > ICUBE Extension > Facebook Shop


Gambar 1: Tampilan Bagian Dari Konfigurasi Facebook Shop



Enable Facebook Shop : Opsi untuk mengaktifkan atau menonaktifkan fitur ini


Brand ID : Brand ID mandatory digunakan pada modul ini, nilai dari Brand ID didapat dari pembuatan Sirclo Store dengan mengambil nama toko yang dibuat. Untuk pembuatan toko nya bisa melalui link ini : https://store.sirclo.com/create-online-shop-2.0 

Source : By default source berisikan “swift” dan direkomendasikan tidak ubah karena ini sebagai pengenal pada sistem


Production Mode : Opsi untuk menentukan apakah mode yang digunakan sekarang diperuntukkan untuk Production / Staging


Staging URL : URL yang digunakan untuk environment Staging, by default nilai ini tidak diubah. Default value : https://analytics.sirclo-integrations.com.dmmy.me/facebook/productCatalog/batch 


Production URL : URL yang digunakan untuk environment Production, by default nilai ini tidak diubah. Default value : https://analytics.sirclo-integrations.com/facebook/productCatalog/batch 


Catalog ID : ID dari Catalog dari Facebook Business Manager yang digunakan untuk sinkronisasi fitur ini dengan Facebook Business Manager


Access Token User : Token yang didapatkan dari Facebook Business Manager


PWA URL : URL PWA yang digunakan oleh website, jika website tidak menggunakan full PWA maka bisa mengosongkan nilai ini


  1. Create / Edit suatu product dengan ke Catalog > Inventory > Products

  2. Pada bagian “Is Sync Facebook”, ubah value menjadi “Yes”


Gambar 2: Tampilan Bagian Dari Pembuatan Product


  1. Save Product yang baru di Create / Edit sebelumnya

  2. Product akan tersinkronisasi secara otomatis setiap hari pada malam hari. (Perlu dipastikan kembali dengan developer terkait keberadaan Cron-nya)

Menu Report Synchronization


Sinkronisasi dijalankan secara otomatis & juga bisa secara ad-hoc, dari user dapat melihat apa saja product yang sudah tersinkronisasi ke Catalog Facebook Business Manager dengan klik Marketing > Facebook Shop




Gambar 3: Tampilan Bagian Dari Menu Facebook Shop - Product Feed

Product Report


Pada menu ini, user dapat melihat SKU apa saja yang sudah & gagal tersinkronisasi ke Facebook Business Manager. Di field “Action” akan muncul Button “Retry” hanya untuk produk yang gagal tersinkronisasi atau dengan status “Failed”.



Gambar 4: Tampilan Bagian Dari Menu Product Report

Request Log


Pada menu ini, user dapat melihat lebih detail log dari response yang dikirimkan via API. Berapa banyak request yang sukses atau tidak suksesnya bisa dilihat di field “Total Failed”, “Total Success” & “Total Request”.



Gambar 5: Tampilan Bagian Dari Menu Request Log


Facebook Business Manager

Sebagai kelengkapan terkait modul Facebook Shop - Product feed ini, diperlukan beberapa hal yang berhubungan dengan Facebook Business Manager, antara lain :

Catalog ID

Catalog ID ini akan digunakan untuk request API client, langkah untuk mendapatkan Catalog ID adalah sebagai berikut :

  1. Login ke Business Manager 

  2. Masuk ke Data Source > Catalog

  3. Klik Add, dan klik Create a New Catalog

  4. Masukan nama

Generate System User Token

System user token adalah access token yang digunakan untuk request API client, langkah untuk mendapatkan System User Token adalah sebagai berikut :


STEP 1:

  • Login ke Business Manager 

  • Masuk ke Business Settings > Accounts > Apps

  • Klik Add, dan klik Create a New App ID

  • Pilih Business sebagai App ID, dan klik Continue

  • Masukkan App Display Name dan App Contact Email, dan klik Create App


STEP 2:

  • Masuk ke Business Settings > Users > System Users, lalu klik Add

  • Masukkan System Username, dan pilih System User Role untuk user. Klik Create System User


STEP 3:

  • Masuk ke Business Settings > Accounts > Apps

  • Cari dan pilih App, lalu klik Add People

  • Dari jendela Add People dan Set Permissions, pilih System User dan enable App Developer Permission. Klik Assign




STEP 4:

  • Masuk ke Business Settings > Users > System Users > System User Name

  • Klik Generate New Token dan pilih app

  • Masukan catalogs_management di App

  • Klik Generate Token

  • Simpan Token


STEP 5:

  • Masuk ke Business Settings > Users > System Users, dan pilih System User

  • Pilih Add Assets > Properties

  • Pilih Asset Name, lalu aktifkan Manage Property slider

  • Klik Save Changes

Setup Modul

Pada modul facebook shop terdapat penambahan 2 atribut produk yaitu : 

  • sync_fbshop” sebagai penanda apakah produk tersebut sudah pernah berhasil sinkronisasi buat produk bar atau belum, default value is false.

  • is_sync_fb” sebagai permission apakah produk tersebut akan di sinkronisasikan atau tidak, default value is true.


Kedua atribut produk itu tidak akan terpasang secara otomatis di setiap produk yang sudah ada, maka diperlukan mengeksekusi cli icube:facebookshop:sync-all-products  untuk memasang kedua atribut produk tersebut ke setiap produk yang sudah ada.


CLI Sinkronisasi Buat Produk Baru

Cara mengirimkan produk baru dengan API yaitu dengan menjalankan script icube:facebookshop:sync-create [<sku>] menggunakan command line interface (CLI)


CLI Sinkronisasi Pembaharuan Produk

Cara mengirimkan pembaharuan produk dengan API yaitu dengan menjalankan script icube:facebookshop:sync-update [<sku>] menggunakan command line interface (CLI)


CLI Hapus Single Atau Multiple SKU Produk

Salah satu cara untuk menghapus produk dengan API dapat menggunakan cli single / multiple sku produk.


Caranya yaitu dengan menjalankan script icube:facebookshop:sync-delete <sku> menggunakan command line interface (CLI)

 

Sinkronisasi Hapus Produk Dengan Event / Trigger

Sebelum data produk berhasil dihapus, akan ada event “catalog_product_delete_before” untuk mendapatkan SKU produk, yang nantinya akan dikirimkan dengan API untuk menghapus produk pada facebook shop. 


Ketentuan dan catatan sama halnya dengan cli hapus single atau multiple sku produk.


CLI Sinkronisasi Ulang

Fungsi sinkronisasi ulang yaitu mengirimkan data product kembali berdasarkan method / action yang didapat ketika gagal sinkronisasi create, update bahkan delete produk.

 

Caranya dengan menjalankan script icube:facebookshop:sync-retry menggunakan command line interface (CLI)



Cleanup API Log

Cleanup API Log dibuat untuk mengurangi besarnya ukuran data pada tabel “facebookshop_api_log” dikarenakan adanya pencatatan log di setiap request dan respon API. 

Berikut konfigurasi cleanup API log berdasarkan “created_at” setelah beberapa hari dari hari yang telah ditentukan / di setting, default value 7 (hari).



Gambar 6: Tampilan Bagian Dari Konfigurasi Facebook Shop


Catalog Payload

Contoh untuk membuat payload katalog produk :

{

"brandId": "nexus-sandbox",

"catalogId": "string",

"accessToken": "string",

"facebookProductCatalogSpecs": [{

"method": "CREATE",

"sku": "QATEST123",

"name": "Product 1595392694139",

"image_url": "https://storage.googleapis.com/sirclo-1152-storefront/products/9d1b357c-12d1-4156-b20d-574a5b8aab81-QA.jpg",

             "additional_image_urls": ["https://storage.googleapis.com/sirclo-1152-storefront/products/9d1b357c-12d1-4156-b20d-574a5b8aab81-QA.jpg"],

"additional_variant_attributes": {

"Color": "Red",

"Size": "XS"

},

"availability": "in stock",

"brand": "-",

"category": "-",

"condition": "new",

"currency": "IDR",

"description": "This product is created using automation by QA",

        "inventory" : 999,

"retailer_product_group_id": "product-1595392694139",

"price": 10000000,

"url": "http://nexus-sandbox.sirclo.me.dmmy.me/id/product/product-1595392694139",

"visibility": "published"

}]

}

Contoh untuk Update payload katalog produk :

{

"brandId": "nexus-sandbox",

"catalogId": "string",

"accessToken": "string",

"facebookProductCatalogSpecs": [{

"method": "UPDATE",

"sku": "QATEST123",

"name": "updated Product 1595392694139",

"image_url": "https://storage.googleapis.com/sirclo-1152-storefront/products/9d1b357c-12d1-4156-b20d-574a5b8aab81-QA.jpg",

           "additional_image_urls": ["https://storage.googleapis.com/sirclo-1152-storefront/products/9d1b357c-12d1-4156-b20d-574a5b8aab81-QA.jpg"],

"additional_variant_attributes": {

"Color": "Blue,

"Size": "L"

},

"availability": "discontinued",

"brand": "Jeans",

"category": "-",

"condition": "new",

"currency": "IDR",

"description": "This product is created using automation by QA",

        "inventory" : 999,

"retailer_product_group_id": "product-1595392694139",

"price": 10000000,

"url": "http://nexus-sandbox.sirclo.me.dmmy.me/id/product/product-1595392694139",

"visibility": "published"

}]

}


Contoh untuk menghapus payload katalog produk :

{

"brandId": "nexus-sandbox",

"catalogId": "string",

"accessToken": "string",

"facebookProductCatalogSpecs": [{

"method": "DELETE",

"sku": "QATEST123"

}]

}



Catatan

  • Jika berhasil, tidak ada response apapun.

  • Is required : 

    • method

    • sku

    • name

    • image Url, jika empty diisi placeholder image url

    • brand, example : "tupperware"

    • condition : 

      • Default "new", 

      • “DamagedCondition” : “used_fair”,

      • “RefurbishedCondition” : “refurbished”,  

      • “UsedCondition” : “used”

    • currency

    • url, url product


  • Optional :

    • additional_image_urls, sama dengan "image Url" dalam array 

    • additional_variant_attributes, default null 

    • availability, “in stock” / “out of stock”

    • category, diambil category terakhir

    • description

    • inventory, kuantitas produk

    • retailer_product_group_id, default null

    • price, harga produk harus dikalikan 100 dikarenakan di server wakanda akan dibagi 100.  

    • visibility, jika produk status “Yes” maka di set “published” dan jika produk status “No” maka di set “staging”.