WhatsApp 미리보기에서의 WooCommerce 가격 동기화
WhatsApp 미리보기에서의 WooCommerce 가격 동기화란 카드에 표시되는 숫자가 카드가 생성되는 시점에 카탈로그에서 가져온 값이라는 뜻입니다. 누군가 한 번 만들어 둔 이미지에 박혀 있는 값이 아닙니다. 이 점이 사실이라면 남은 질문은 WhatsApp이 언제 링크를 다시 읽는가 하나뿐이며, 이는 어떤 스토어도 제어할 수 없는 부분입니다.
간단한 답변
가격은 이미지가 실시간 상품 데이터로 만들어질 때만 미리보기에 나타날 수 있습니다. 정적 대표 이미지에는 보여줄 가격이 아예 없으며, 한 번 디자인된 카드는 그날의 가격을 가질 뿐입니다. WooCommerce는 기본적으로 가격 태그가 붙은 이미지를 제공하지 않으므로, "미리보기에 예전 가격이 나온다"는 불만은 사실 두 가지 질문입니다:
- 카드가 현재 가격을 알고 있는가? — 설계 결정이며, 여러분이 고칠 수 있는 부분입니다.
- 가격이 바뀐 뒤 플랫폼이 페이지를 다시 읽었는가? — 이는 여러분이 아니라 WhatsApp의 시계입니다.
가격이 오래된 채로 남는 이유
| 원인 | 보이는 증상 | 발생 이유 |
|---|---|---|
| 태그가 대표 이미지를 가리킴 | 가격이 전혀 없음 | 상품 사진에는 가격이 들어 있지 않음 |
| 카드가 한 번만 작성됨 | 디자인 시점의 가격 | 이를 다시 생성하는 것이 없음 |
| 세일이 종료됨 | 이미 끝난 할인에 대한 취소선 | 이미지에 여전히 예전 배지가 남아 있음 |
| 페이지 캐시가 오래된 HTML을 제공함 | 다시 예전 카드 | 크롤러가 새로운 og:image URL을 절대 보지 못함 |
처음 세 가지는 카드 자체에 관한 것입니다. 네 번째는 캐싱 계층에 관한 것이며, 외부에서 보면 완전히 동일하게 보입니다. 그래서 Instant WhatsApp Image Update for WooCommerce의 확인 순서가 중요합니다.
동기화된 카드가 실제로 읽는 값
FastOG는 요청마다 커버 URL에 서명하며, props는 라이브 상품에서 가져옵니다:
| 카드 요소 | 출처 | 비고 |
|---|---|---|
| 가격 | get_price() |
할인 중인 상품에서는 이 값이 바로 판매 가격입니다 |
| 비교 가격("정가") | 정가 | 상품이 실제로 할인 중일 때만 전송됩니다 — 현재 가격과 같은 "정가"는 아무도 얻지 못한 취소선입니다 |
| 할인 배지 | 상품의 할인 상태 | 할인과 함께 나타나고 사라집니다 |
| 재고 | 재고 상태 | 렌더링 시점의 카탈로그를 반영합니다 |
| 사진 | 대표 이미지 우선, 그다음 갤러리 | 플랫폼이 자르는 것이 아니라 카드 내부에서 구성됩니다 |
이것이 "동적"과 진짜 동적의 차이입니다: 값은 디자이너가 채워 넣은 플레이스홀더가 아니라, 카드가 만들어질 때마다 스토어에서 읽어온 값입니다.
양방향에서 "동기화"가 동작하는 방식
카탈로그 → 카드. 위의 모든 값은 렌더링 시점에 읽힙니다. 가격을 변경하면 다음 렌더링에서 새 가격이 표시됩니다. 내보내기 단계도, 다시 업로드할 파일도 없습니다.
카드 → 캐시. 각 값은 서명된 커버 URL 내부로도 전달됩니다. 따라서 가격을 수정하면 URL이 변경됩니다. 즉, 이전 이미지는 더 이상 주소 지정이 불가능하고, CDN에 오래된 이미지를 제공할 대상이 없으며, 캐시 무효화가 필요하지 않습니다. 이 카테고리의 다른 어떤 것도 이런 방식으로 동작하지 않습니다. 셀프 호스팅 플러그인은 절대 변경되지 않는 파일명을 기준으로 이미지를 키잉하기 때문입니다.
카드 → Facebook. 상품을 저장하면 WooCommerce의 기본 product.updated 웹훅이 실행되고, FastOG는 해당 상품의 퍼머링크에 대해 Meta 재스크래핑을 큐에 넣습니다. 따라서 Facebook은 몇 주를 기다리지 않고 캐시된 카드를 교체합니다. Facebook Open Graph 캐시 강제 새로고침을 참고하십시오.
카드 → WhatsApp. 푸시할 수 있는 것은 없습니다. 올바른 카드가 다음 읽기를 기다리고 있습니다.
예약 판매의 예외 상황
자정에 시작되는 판매를 아무도 건드리지 않으면 웹훅이 전혀 발생하지 않습니다. 이는 "저장할 때 새로고침한다"는 모든 설계를 깨뜨리는 세부 사항이며, Facebook 핑도 여기에 해당합니다.
카드를 살리는 것은 카드가 미리 생성되지 않는다는 점입니다. 커버는 현재 카탈로그 데이터로부터 요청 시점에 만들어지므로, 자정 이후 첫 번째 가져오기에서 이미 판매 가격과 배지가 표시됩니다. 오래된 숫자는 플랫폼의 미리보기 캐시에만 남을 수 있으며, 해당 플랫폼 자체의 일정에 따라 교체됩니다. 내보내지 않고 렌더링되는 카드만이 아무도 저장하지 않은 판매를 견뎌내는 유일한 종류입니다.
숫자가 동기화되었는지 확인
가격은 커버 URL 자체에 표시되므로 디버거 없이도 확인할 수 있습니다:
# What the page is serving right now
curl -s https://your-store.com/product/example | grep -o 'og:image[^>]*' | head -1
# Open that cover URL in a browser and compare the number against the product page.
URL의 파라미터와 렌더링된 카드 모두 현재 가격을 담고 있고 상품 페이지도 동일하게 표시한다면, 스토어 측은 동기화된 상태이며 남은 지연은 플랫폼 캐시입니다. URL에 여전히 이전 가격이 담겨 있다면 페이지 캐시가 수정 전 HTML을 제공하고 있는 것이므로 캐시를 비워야 합니다.
전체 흐름을 확인하려면 상품 URL을 See Your Links The Way Buyers Do에 붙여 넣으십시오. 라이브 태그를 읽어 동일한 상품 데이터로 커버를 렌더링하며, 오늘 플랫폼이 표시할 내용과 나란히 보여 줍니다.
FAQ
WhatsApp 링크 미리보기에 가격을 표시하려면 어떻게 해야 합니까?
가격이 포함된 og:image를 제공해야 합니다. 즉, 정적 사진이 아니라 카탈로그에서 생성된 이미지여야 합니다. WhatsApp은 태그가 가리키는 이미지를 1200×630 크기로 렌더링하며, 가격은 그 이미지에 그려져 있을 때만 표시됩니다.
세일을 종료했는데도 미리보기에 이전 가격이 계속 표시되는 이유는 무엇입니까?
가능한 원인은 두 가지입니다. 페이지가 제공하는 이미지가 변경되지 않았거나(페이지 캐시 또는 정적 이미지), WhatsApp이 수정 이전의 캐시된 미리보기를 표시하고 있는 경우입니다. 먼저 현재 og:image URL을 확인하십시오. 해당 URL의 가격도 이전 가격이라면 스토어가 문제이고, 최신 가격이라면 WhatsApp이 문제입니다.
카드에는 세일 가격이 표시됩니까, 정규 가격이 표시됩니까?
세일 가격이 표시됩니다. 이는 WooCommerce가 현재 가격으로 보고하는 값이며, 정규 가격이 비교 가격(compare-at)으로 함께 표시되고, 이는 상품이 실제로 세일 중일 때만 적용됩니다.
모든 플랜에서 가격과 세일 배지를 그립니까?
예. FastOG에서는 템플릿 필드가 등급별로 제한되지 않습니다. 가격, 비교 가격, 재고 배지는 모든 플랜에서 사용할 수 있습니다. 플랜 간 차이는 페이지 유형, 항목 허용량, 템플릿 범위에 있으며, 커버에 표시할 수 있는 내용에는 차이가 없습니다.
이미 공유된 링크의 가격도 업데이트됩니까?
Facebook의 경우 FastOG가 상품 업데이트 후 재스크레이프(re-scrape)를 요청합니다. WhatsApp, LinkedIn, X의 경우 다음 읽기는 각 플랫폼 자체 일정에 따라 발생하며, 해당 플랫폼에 대해서는 공개된 타이밍 보장이나 프로그래밍 방식의 새로 고침 API를 주장하지 않습니다.
템플릿은 그대로 두고 가격만 변경하면 어떻게 됩니까?
이는 일반적인 경우이며 정상적으로 동작합니다. 템플릿은 레이아웃을 정의하고 카탈로그가 값을 제공합니다. 다시 디자인할 필요도, 이미지를 다시 내보낼 필요도 없습니다.
세일 중에 공유된 링크는 세일 종료 후에도 세일 가격을 계속 표시합니까?
플랫폼의 캐시된 미리보기가 유지되는 동안에만 그렇습니다. 커버 URL은 카탈로그와 함께 변경되므로, 첫 번째 새로운 읽기에서 세일 종료 후의 카드를 받게 됩니다.
무료 플랜이 있습니까?
예. 무료 Community 등급은 상품, 카테고리, 샵, 블로그 게시물 페이지 전반에 걸쳐 최대 100개 항목을 지원하며, 다섯 가지 기본 템플릿과 Black Friday 및 Seasonal Offer 상품 템플릿을 제공합니다. 커버는 깔끔합니다. Community를 포함한 어떤 플랜에도 워터마크가 없습니다. Community는 공유 Community 서버에서 렌더링되며, 브랜딩이 아니라 스토어/IP 속도 제한에 의해 제약을 받습니다. 유료 플랜은 Community와 분리된 전용 서버를 사용하며, 항목 허용량을 늘리고 추가 템플릿과 기능을 제공합니다(Starter부터 평점 배지, Pro부터 메타필드 매핑, Scale부터 범위 지정 규칙 및 우선 렌더링). 유료 플랜에는 신용 카드 요구 사항이 없는 14일 체험이 포함됩니다.