인벤토리(판매할 수량 참조)

제품 카탈로그의 inventory 필드는 Facebook Shop이나 Instagram 쇼핑 계정에서 판매할 수 있는 각 제품의 재고 수준을 나타냅니다. 이 값은 제품 상세 정보 페이지(PDP)에 반영되며 구매자가 몇 개의 제품이 있는지 이해하는 데 도움이 됩니다. 이 값은 제품의 품절 시점을 알려주므로 정확하지 않을 경우 초과 판매로 이어질 수 있습니다. 따라서 이 값을 정확하고 최신 상태로 유지하는 것이 구매자 경험에 중요합니다.

참고:inventory 필드는 사용 중단되며 새로운 quantity_to_sell_on_facebook 필드로 교체될 예정입니다. 당분간은 기존의 필드 이름을 지원하겠지만 새로운 이름을 사용하는 것이 좋습니다. 이 업데이트에 대한 자세한 내용은 제품에 지원되는 필드 - 어드밴티지+ 카탈로그 광고 및 커머스를 참조하세요.

참고: 인벤토리가 설정되지 않은 제품은 태그를 지정하거나 구매할 수 없습니다. 그러나 결제가 없는 어드밴티지+ 카탈로그 광고에는 여전히 사용할 수 있습니다.

인벤토리 변동

inventory 필드는 동적입니다. 즉, 사용자가 Facebook Shop이나 Instagram 쇼핑 계정에서 제품을 구매하면 값이 변화합니다. 사용자가 주문을 할 때마다 해당 제품의 인벤토리 수준이 감소합니다.

커머스 플랫폼에서 이 값을 자동으로 늘리거나, 사용자가 구매를 취소할 경우 제품의 재고를 다시 채워 넣습니다. 판매자 측에서 수행한 취소 건의 경우에는, 취소 API 엔드포인트restock_items 필드를 설정하면 취소 시점에 제품 재고를 다시 채워 넣고 해당 재고 수준을 높일 수 있습니다.

제품 카탈로그 업로드나 다른 기술(인벤토리 업데이트 전략 참조)을 통해 제공하는 값은 신뢰되는 정보 출처로 간주되며 언제나 Facebook 백엔드에서 캐시되는 값을 덮어쓰는 데 사용됩니다.

Facebook 측에 저장되는 인벤토리 수의 유형은 다음과 같습니다.

  • 제공된 인벤토리: 제품 카탈로그 업로드나 다른 기술(인벤토리 업데이트 전략 참조)을 통해 제공하는 값입니다.
  • 구매 가능한 인벤토리는 고객이 구매할 수 있고 처리되지 않은 주문을 반영한 값입니다.

이러한 인벤토리 유형에 대한 자세한 내용은 제품 수명 주기를 참조하세요.

품절 제품

사용자가 Facebook Shop 또는 Instagram 쇼핑 계정에서 제품을 구매하면 inventory 값이 감소합니다. 이 값이 0에 도달하면 Facebook에서 제품을 '품절'로 표시하고 아무도 추가적으로 구매하지 못하도록 제한합니다. '품절' 제품이 사용자 경험과 브랜드 인식에 부정적인 영향을 미치므로 제품의 재고를 정기적으로 채우기 위해 최선을 다해야 합니다.

구매자가 품절 제품을 발견할 경우 Facebook에서는 제품 상세 정보 페이지를 제품 카탈로그에 있는 해당 제품 에디션의 inventory 값을 기반으로 '재고'가 있는 에디션으로 전환하고자 최선을 다합니다.

단종 제품

제품이 단종되면 제품 카탈로그에서 바로 삭제하고 싶을 수 있습니다. 이 방법은 사용하지 않는 것이 좋습니다.

카탈로그에서 제품을 삭제하면 제품 태그와 이미지가 사라지는 등, 바람직하지 못한 결과가 발생할 수 있습니다. 상당한 기간(몇 개월)이 지난 후에 제품을 삭제하는 것이 좋습니다.

제품을 삭제하기보다, 단종된 제품의 visibility 필드를 staging으로 설정해야 합니다. 그래야 커머스 플랫폼에서 알려진 엔터티로 제품을 다시 링크하고 여러 가지 상황을 적절히 관리할 수 있습니다.

제품 수명 주기

Facebook에서는 판매자의 인벤토리 업데이트에 따라 제공된 인벤토리를 업데이트합니다. 이 숫자는 고객이 구매할 수 있는 제품의 숫자와 일치하지 않습니다. Facebook에서는 들어오는 주문(상태는 다양할 수 있음)을 추적하고 승인되지 않은 주문을 제외하여 최종적으로 구매 가능한 인벤토리를 계산합니다. 이 숫자는 Facebook 플랫폼 외부로는 노출되지 않을 수 있습니다.

구매 가능한 인벤토리 = 제공된 인벤토리 - 승인되지 않은 주문.

주문이 승인된 후 주문을 처리하고 (카탈로그를 통해) 인벤토리 숫자를 업데이트하기 위한 30분 간의 버퍼를 둔 다음에 카운터에서 승인된 주문을 제거합니다.

초과 판매

Facebook에서는 커머스 플랫폼을 수천 명의 판매자로 확대하기 위해, 심사숙고를 거쳐 동기식 인벤토리 관리를 지원하지 않기로 결정을 내렸습니다. 따라서 창고에서 재고 수준이 조금씩 감소하는 것과 관련된 소규모의 구매 거래는 지원하지 않습니다. 인벤토리가 여러 채널에서 공유될 경우 판매자가 Facebook이나 Instagram에서 예상치 못하게 제품을 초과 판매할 수 있습니다. 이런 현상은 수량이 제한되고 빠르게 판매되는 제품에 발생할 수 있습니다.

초과 판매 상황으로 인해 주문을 이행할 수 없을 경우 취소를 시작하고 reason_codeOUT_OF_STOCK으로 설정해야 합니다.

초과 판매가 수시로 발생할 경우 좀 더 수시로 주문을 처리하고 그에 맞게 제품의 인벤토리 수준을 조정하면 됩니다.

인벤토리 통합 전략

사용 중인 통합 유형에 따라 다음과 같이 다양한 방식으로 인벤토리를 업데이트할 수 있습니다.

  • 커머스 관리자 UI 사용(예: 소규모 제품 세트, 테스트)
  • 예약 또는 수동 업로드를 포함한 피드
  • 피드 API 사용
  • 배치 API 사용

인벤토리 업데이트 전략

분산된 시스템은 비동기식이기 때문에 제품 카탈로그의 inventory 값이 인벤토리 수준의 업데이트 속도와 관계없이 동기화 상태에서 벗어날 수 있습니다. 경합 상태를 최소화하기 위해 고려할 만한 몇 가지 기술은 다음과 같습니다.

사전 할당된 인벤토리

초과 판매를 피하는 가장 효과적인 방법은 Facebook Shop 또는 Instagram 쇼핑 채널에 인벤토리를 사전 할당하는 것입니다. 각 판매 채널에 인벤토리를 전담하여 할당하면 각 채널에서 발생하는 판매가 서로에게 영향을 주지 않습니다. 이 전략은 제품 카탈로그의 일부나 전체에 적용할 수 있습니다.

느리게 판매되는 제품

정상적인 속도로 판매되는 제품이나 인벤토리가 많은 제품의 경우, 초과 판매 위험이 상대적으로 낮습니다. 이와 같은 상황에서는 제품 카탈로그 업데이트 전략을 다음과 같이 단순하게 유지할 수 있습니다.

  • 하루/시간당 업데이트를 위해 예약된 피드를 구성합니다. 이 피드는 최신 inventory 값을 비롯한 모든 필드를 포함해야 합니다.

빠르게 판매되는 제품

인벤토리가 적거나 매우 동적인 빠르게 판매되는 제품의 경우, inventory 등의 가변 필드를 더 시기적절하게 업데이트하는 것이 좋습니다. 이를 위해 실시간 배치 API를 사용할 수 있습니다. 다음과 같은 일반적인 전략을 따라 해 보세요.

  • 하루/시간당 업데이트를 위해 예약된 피드를 구성합니다. 이 피드는 모든 필수 제품 카탈로그 필드를 포함하고 inventory와 같은 가변 필드를 생략해야 합니다. 이 피드의 목적은 좀 더 고정적인 성격의 필드를 업데이트하고 실시간 API를 사용하여 가변 필드의 업데이트를 지연하는 것입니다.
  • 실시간 배치 API를 사용하여 값이 백엔드에서 변경될 때 혹은 일정한 빈도로 inventory 등의 가변 필드를 업데이트하세요. 일관성을 위해 이 기술을 사용하여 업데이트한 필드는 피드에 포함하지 않는 것이 중요합니다.

실시간 배치 API를 사용한 업데이트의 예는 다음과 같습니다.

curl \
  -d @body.json \
  -H "Content-Type: application/json"
  {
    "access_token": "<ACCESS_TOKEN>",
    "item_type": "PRODUCT_ITEM",
    "requests": [      
      {
        "method": "UPDATE",
        "retailer_id": "SKU1234567",
        "data": {
          "inventory": "1337",
        }
      }
    ]
  } https://graph.facebook.com/<CATALOG_ID/batch

배치 API 요청은 비동기식입니다. 요청 상태와 그 결과를 확인하여 모든 업데이트가 성공했는지 확인해야 합니다. 자세한 내용은 배치 API 문서를 참조하세요.

소량의 제품을 관리할 경우 실시간 배치 API 대신 그래프 API를 직접 사용하여 각 제품을 개별적으로 업데이트할 수도 있습니다. 그래프 API 사용 제한 및 제한으로 인해 이 방법은 소량의 제품에만 적용할 수 있습니다. 이 방법으로 업데이트할 수 있는 제품의 정확한 개수는 Facebook 앱에 적용되는 할당량에 따라 달라집니다. 통상적으로는 한 번에 십여 개 이상의 제품을 업데이트할 경우 실시간 배치 API를 사용해야 합니다.

제품 내에서 특정 필드를 업데이트하기 위해 다음 API 호출을 보낼 수 있습니다.

curl -d "inventory=1337" -X POST 
https://graph.facebook.com/<FACEBOOK_PRODUCT_ID>
access_token: PAGE_ACCESS_TOKEN

그래프 API를 사용 중인 경우 Facebook 제품 ID를 사용합니다. 배치 API를 사용 중인 경우 자신의 ID(즉, retailer_id)를 사용합니다.

인벤토리 임계값

초과 판매를 완화하기 위한 또 하나의 일반적인 방법은 신중을 기하여 인벤토리를 할당하는 것입니다. 예를 들어 창고에서 확인했을 때 특정 제품이 품절에 가까워진 경우, 제품 카탈로그에서 인벤토리 수준을 0으로 설정할 수 있습니다. 이는 사실상 과소 판매에 대한 최적화이지만 초과 판매가 우려되는 경우에 도움이 될 수 있습니다.

각 제품의 판매 속도를 알고 있을 경우 이들을 서로 다른 버킷으로 나누어 판매 프로필에 따라 각 버킷에 다른 임계값을 적용할 수 있습니다. 일반적으로 빠르게 판매되는 제품은 더 높은 임계값이 필요하지만, 느리게 판매되는 제품은 품절 표시에 더 낮은 임계값을 사용할 가능성이 높습니다.