App Store 제출
Shopify App Store에 App을 등록하는 것은 중요한 이정표이지만, 제출 프로세스는 엄격합니다. Shopify의 App 심사팀은 상세한 품질, 성능, 보안, UX 기준에 따라 App을 평가합니다. 이 모듈에서는 업데이트된 요구사항, Built for Shopify 배지 프로그램, 리스팅 최적화 전략, 효과적인 가격 모델을 안내합니다.
App 심사 요구사항 (Winter '26 업데이트)
Shopify는 Winter '26 출시 주기에서 App 심사 요구사항을 업데이트했습니다. 변경 사항은 임베디드 App 경험, 성능 영향 측정, 데이터 프라이버시 규정 준수에 대한 더 강한 강조를 반영합니다.
핵심 요구사항
Shopify App Store에 제출되는 모든 App은 다음 기준 요구사항을 충족해야 합니다:
인증 및 보안
- 적절한 HMAC 검증이 포함된 OAuth 2.0 구현
- 3개의 GDPR 필수 Webhook 모두 기능하고 테스트 완료
- Access Token 저장 시 암호화
- 클라이언트 사이드 코드에 민감한 데이터 노출 없음
- 임베디드 App용 Content Security Policy 헤더 구성
사용자 경험
- App은 Shopify 관리자에 완전히 임베디드 (핵심 기능의 외부 리디렉션 없음)
- Polaris 디자인 시스템 컴포넌트 또는 App Bridge 액션 사용
- 모든 화면 크기에서 작동하는 반응형 레이아웃
- 모든 비동기 작업의 로딩 상태
- 명확한 복구 액션이 있는 오류 상태
성능
- 스토어프론트 영향이 100ms 추가 로드 시간 이하
- 동기 JavaScript 인젝션 없음
- 관리자 페이지 3초 이내 로드
- 효율적인 API 사용 (불필요한 호출 없음, 적절한 페이지네이션)
기능
- App은 즉시 명확한 가치를 제공해야 함
- 온보딩 플로우가 상인의 설정을 안내
- 모든 리소스를 정리하는 언인스톨 Webhook 핸들러
- Shopify Online Store 2.0 테마에서 올바르게 작동
Winter '26 심사 프로세스에는 자동화된 성능 프로파일링이 포함됩니다. 심사팀이 테스트 스토어에 App을 설치하고 Shopify의 내부 성능 스위트를 실행하여 스토어프론트 영향을 측정합니다. 100ms 임계값을 초과하는 App은 자동으로 수동 심사로 플래그되어 심사 타임라인에 2-4주가 추가됩니다.
일반적인 거절 사유
Shopify Partner 커뮤니티의 공개 데이터에 따르면, 가장 빈번한 App 거절 사유는 다음과 같습니다:
- GDPR Webhook 누락 -- 가장 일반적인 거절 사유. 3개 Webhook 모두 200 상태 코드로 응답하고 실제로 요청을 처리해야 합니다.
- 외부 인증 플로우 -- 로그인 또는 설정을 위해 상인을 Shopify 관리자 외부로 리디렉션.
- 불량한 오류 처리 -- 원시 오류 메시지나 빈 화면을 표시하는 처리되지 않은 예외.
- 불충분한 온보딩 -- 설치 후 상인이 App 사용법을 파악할 수 없음.
- 과도한 권한 -- App이 실제로 필요하지 않는 스코프 요청.
- 비정상 언인스톨 동작 -- App이 언인스톨 후에도 API 호출을 계속함.
제출 전 테스트 체크리스트
# 1. Test OAuth flow from scratch
shopify app dev --reset
# 2. Verify all webhook subscriptions
shopify app webhooks list
# 3. Test GDPR webhooks manually
curl -X POST https://your-app.com/webhooks/customers/data_request \
-H "Content-Type: application/json" \
-H "X-Shopify-Hmac-Sha256: $(echo -n '{"shop_domain":"test.myshopify.com"}' | openssl dgst -sha256 -hmac 'your-secret' -binary | base64)" \
-d '{"shop_domain":"test.myshopify.com","customer":{"id":1,"email":"test@example.com"}}'
# 4. Test uninstall and reinstall
# Uninstall app from test store, verify cleanup, then reinstall
# 5. Run Lighthouse on storefront with app installed
npx lighthouse https://your-test-store.myshopify.com --only-categories=performance
Built for Shopify 배지
Built for Shopify 배지는 App이 획득할 수 있는 최고 품질 인증입니다. 상인에게 App이 Shopify의 가장 엄격한 품질 기준을 충족하고 플랫폼과 깊이 통합되어 있음을 알립니다.
배지 요구사항
Built for Shopify 배지를 획득하고 유지하려면, App은 다음을 충족해야 합니다:
- 완전 임베디드 -- Shopify 관리자 외부로 리디렉션 없음
- App Bridge 4.x 이상 사용 -- 최신 App Bridge API 사용 필수
- 적용 가능한 모든 Extension Points 구현 -- 레거시 방식 대신 Shopify Functions, Checkout UI Extensions, Theme App Extensions 사용
- 성능 임계값 충족 -- 스토어프론트 영향이 일관되게 50ms 미만 (기본 요구사항보다 엄격)
- 높은 상인 만족도 유지 -- 평균 평점 4.0 이상, 의미 있는 리뷰 수
- 지원 요청에 응답 -- 중앙값 응답 시간 24시간 미만
- 의존성 최신 유지 -- 의존성에 알려진 심각한 취약점 없음
Shopify가 배지 요구사항을 업데이트하면, 기존 배지 보유자는 새 기준을 준수하기 위한 60일 유예 기간을 받습니다. App이 규정을 벗어나면 배지 제거 60일, 30일, 7일 전에 이메일 알림을 받습니다. Shopify Changelog에서 요구사항 업데이트를 주의 깊게 모니터링하세요.
배지 신청
Partner Dashboard → Apps → [Your App] → Distribution → Built for Shopify
배지 심사는 표준 App 심사와 별도이며 더 철저합니다. 배지 심사에 2-4주가 소요될 것으로 예상하세요. App이 배지 심사에서 실패하는 일반적인 영역:
- 더 이상 사용되지 않는 API 또는 레거시 Extension 패턴 사용
- Polaris 컴포넌트를 일관되게 사용하지 않음
- 딥링크 지원 누락 (App이 특정 관리자 URL에 응답해야 함)
- 불완전한 오류 복구 플로우
App 리스팅 최적화
App Store 리스팅은 주요 세일즈 도구입니다. 상인은 소비자가 전자상거래 사이트를 탐색하는 것처럼 App Store를 탐색합니다 -- 첫인상에 기반하여 빠르게 결정합니다.
제목 및 태그라인
- 제목: 30자 이내로 유지. 주요 키워드 포함.
- 태그라인: App이 무엇을 하고 누구를 위한 것인지 명확히 설명하는 한 문장.
Title: "SyncMaster - Inventory Sync"
Tagline: "Real-time inventory synchronization across all your sales channels"
카테고리에서 상위 랭크된 App을 연구하세요. 제목과 태그라인의 구성 방식에 주목하세요. 최고의 리스팅은 기능이 아닌 혜택을 우선합니다. "재고 관리에서 주당 10시간 절약"이 "멀티채널 재고 관리 도구"보다 효과적입니다.
App 설명 구조
읽기 위해서가 아니라 스캔하기 위해 작성하세요. 상인은 결정하기 전에 리스팅에 평균 30초를 소비합니다.
권장 구조:
- 오프닝 훅 (2문장) -- 해결하는 문제와 제공하는 결과
- 주요 기능 (4-6개 항목의 글머리 기호) -- App이 하는 것
- 사회적 증거 (1 문단) -- 상인 수, 유명 브랜드, 성능 통계
- 사용 방법 (3단계 번호 목록) -- 간단한 설정 플로우
- 지원 및 가격 (간략히) -- 포함된 지원
키워드 및 카테고리
Shopify의 App Store 검색은 다음의 조합을 사용합니다:
- App 제목 및 태그라인
- 설명 텍스트
- 카테고리 선택 (기본 및 보조)
- 상인 리뷰 콘텐츠
이상적인 고객이 탐색할 위치에 따라 기본 카테고리를 선택하세요. 인접 검색을 포착하기 위해 보조 카테고리를 선택하세요.
스크린샷 및 데모 비디오
스크린샷 모범 사례
최대 6장의 스크린샷을 업로드할 수 있습니다. 각 스크린샷은 이야기를 전달해야 합니다:
| 스크린샷 | 콘텐츠 | 목적 |
|---|---|---|
| 1 | 실제 데이터가 포함된 메인 대시보드 | 동작 중인 App 표시 |
| 2 | 사용 중인 핵심 기능 | 주요 가치 시연 |
| 3 | 설정/구성 | 설정 용이성 표시 |
| 4 | 결과/분석 | 성과 증명 |
| 5 | 모바일 반응형 뷰 | 크로스 디바이스 지원 표시 |
| 6 | 통합 터치포인트 | Shopify 관리자에 맞는 방식 표시 |
기술 요구사항:
- 최소 1600 x 900 픽셀
- PNG 또는 JPEG 포맷
- 스크린샷에 브라우저 크롬이나 OS 레벨 UI 포함 금지
- 실제처럼 보이는 데이터 사용 ("Lorem ipsum"이나 빈 상태 아님)
데모 비디오 가이드라인
60-90초 데모 비디오는 전환율을 크게 향상시킵니다. 구성:
- 0-10초: App이 해결하는 문제 설명
- 10-40초: App이 문제를 해결하는 과정 표시 (화면 녹화)
- 40-60초: 결과/성과 표시
- 60-90초: 행동 촉구 (지금 설치, 무료 체험)
Shopify가 App Store 리스팅에 데모 비디오를 직접 호스팅합니다. MP4 파일 (최대 200MB)을 업로드하세요. YouTube나 Vimeo에 링크하지 마세요 -- 비디오는 자체 포함되어야 합니다. 저작권으로 플래그될 수 있는 배경 음악은 피하세요.
가격 전략
올바른 가격 모델을 선택하는 것은 App 비즈니스에서 가장 중요한 결정 중 하나입니다.
Shopify의 가격 모델
| 모델 | 설명 | 최적 용도 |
|---|---|---|
| 무료 | 무료 | 리드 생성, 생태계 App |
| 프리미엄 | 무료 티어 + 유료 업그레이드 | 성장 중심 App |
| 월정액 | 월 고정 가격 | 단순하고 예측 가능한 App |
| 단계별 | 사용량/기능에 따른 다중 플랜 | 다양한 상인 요구를 가진 App |
| 사용량 기반 | 액션/트랜잭션당 과금 | 대량 트랜잭션 App |
Shopify Billing API 구현
// services/billing.js
export async function createSubscription(client, shop, plan) {
const response = await client.query({
data: {
query: `mutation AppSubscriptionCreate(
$name: String!,
$returnUrl: URL!,
$lineItems: [AppSubscriptionLineItemInput!]!,
$test: Boolean
) {
appSubscriptionCreate(
name: $name,
returnUrl: $returnUrl,
lineItems: $lineItems,
test: $test
) {
appSubscription {
id
status
}
confirmationUrl
userErrors { field message }
}
}`,
variables: {
name: plan.name,
returnUrl: `${process.env.HOST}/billing/callback?shop=${shop}`,
test: process.env.NODE_ENV !== 'production',
lineItems: [
{
plan: {
appRecurringPricingDetails: {
price: { amount: plan.price, currencyCode: 'USD' },
interval: plan.interval,
},
},
},
],
},
},
});
const result = response.body.data.appSubscriptionCreate;
if (result.userErrors.length > 0) {
throw new Error(result.userErrors.map((e) => e.message).join(', '));
}
return result.confirmationUrl;
}
가격 팁
- 항상 무료 체험을 제공하세요 (7-14일). 상인은 가치를 보기 전에 지불하기를 꺼립니다.
- 상인의 Shopify 플랜에 기반하여 가격을 설정하세요. 월 $2,000의 Shopify Plus 상인은 App에 $99/월을 지불합니다. 월 $39의 Basic 상인은 그렇지 않습니다.
- App에 네트워크 효과나 더 많은 설치에서 오는 데이터 이점이 있다면 무료 티어를 포함하세요.
- 15-20% 연간 할인은 더 긴 약정을 장려하고 이탈을 줄입니다.
Shopify는 Billing API를 통해 처리되는 모든 App 과금에 대해 수익 분배를 가져갑니다. 2026년 기준, Shopify는 Partner당 연간 첫 $1M USD에 대해 0%, 그 이상에 대해 15%를 가져갑니다. 가격 계산에 이를 반영하세요.
App Store SEO
검색 최적화
Shopify의 App Store 검색 알고리즘은 다음을 고려합니다:
- 관련성 -- 리스팅이 검색 쿼리와 얼마나 일치하는지
- 품질 신호 -- 평점, 리뷰 수, 설치 수, 제거율
- 최신성 -- 최근 업데이트와 활동이 유지되는 App을 나타냄
- 성능 -- Built for Shopify 배지가 있는 App이 더 높은 순위
실행 가능한 SEO 전술
- App 제목에 기본 키워드 포함
- 설명에 키워드의 자연스러운 변형 사용 (키워드 스터핑이 아닌)
- 모든 상인 리뷰에 응답 (긍정적이든 부정적이든)
- 정기적인 업데이트를 푸시 (사소한 것이라도) 하여 적극적인 유지보수를 표시
- 만족한 상인에게 리뷰를 남기도록 독려 (그러나 리뷰에 인센티브를 절대 제공하지 마세요 -- Shopify 약관 위반)
App Store 성능 추적
Partner Dashboard에서 다음 메트릭을 모니터링하세요:
- 노출 수 -- 리스팅이 검색 결과에 표시되는 빈도
- 페이지 뷰 -- 상인이 리스팅을 클릭하는 빈도
- 설치율 -- 페이지 뷰에서 설치로의 전환
- 제거율 -- 30일 이내에 제거하는 상인 비율
- 평점 트렌드 -- 평균 평점의 이동 방향
성공적인 App Store 리스팅은 절대 "완료"되지 않습니다. 살아 있는 문서로 취급하세요 -- 주요 기능을 출시하면 스크린샷을 업데이트하고, 상인이 검색하는 내용에 기반하여 설명을 개선하며, 노출에서 설치, 유료 구독까지의 전환 퍼널을 지속적으로 최적화하세요.