Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.
OneSignal은 Vendo와 파트너십을 맺어 원활한 Shopify 통합을 만들었습니다. Vendo는 클릭 한 번으로 Shopify 스토어에 OneSignal SDK를 배포합니다 — 테마 코드를 수동으로 편집할 필요가 없습니다. 고객 태그, 클라이언트 사이드 탐색 이벤트, 서버 사이드 커머스 이벤트를 OneSignal에 동기화하여 실제 행동과 구매 이력을 기반으로 세그먼트를 만들고 푸시 캠페인을 트리거할 수 있습니다.Vendo 문서는 Vendo OneSignal Destination을 참조하세요.
반드시 Custom Code를 선택해야 합니다. Typical Site 옵션은 서비스 워커 경로 설정을 노출하지 않으므로 SDK가 스토어 루트에서 /OneSignalSDKWorker.js를 로드하려고 시도합니다 — Shopify는 이를 차단하고 푸시 구독이 조용히 실패합니다. 이미 Typical Site로 앱을 만들었다면 Settings > Platforms > Web에서 Custom Code로 전환하거나 앱을 삭제하고 다시 만드세요.
2
웹 푸시 설정 구성
OneSignal 앱에서 Settings > Push & In-App > Web Settings으로 이동하거나 웹 푸시 설정 가이드를 따릅니다.사이트 설정
Site Name: 스토어 이름으로, 기본 알림 제목으로 사용됩니다.
Site URL: Shopify 스토어의 공개적으로 액세스 가능한 URL(예: https://yourstore.com).
고객이 https://your-site.com/과 같은 커스텀 도메인을 통해 사이트에 액세스하는 경우 https://your-site.myshopify.com/을 사용하지 마세요.
Default Icon URL: 알림 및 프롬프트에 표시되는 정사각형 256×256 PNG, JPG 또는 애니메이션이 아닌 GIF를 업로드합니다. 설정하지 않으면 기본 아이콘으로 벨이 사용됩니다. 알림 아이콘을 참조하세요.
3
서비스 워커 경로 구성
Shopify는 사이트 루트에서 파일을 제공할 수 없으므로 Vendo가 서비스 워커 파일을 제공하는 위치를 OneSignal에 알려야 합니다.OneSignal에서 Settings > Push & In-App > Web Settings으로 이동하고 Advanced Push Settings까지 스크롤하여 Customize service worker paths and filenames를 켠 다음 다음과 같이 구성합니다:
설정
값
Path to service worker files
/apps/vendo/
Main service worker filename
OneSignalSDKWorker.js
Updater service worker filename
OneSignalSDKWorker.js
Service worker registration scope
/apps/vendo/
Vendo를 사용하는 Shopify 스토어의 서비스 워커 구성.
Vendo는 https://yourstore.myshopify.com/apps/vendo/OneSignalSDKWorker.js에 필요한 OneSignalSDKWorker.js 파일을 자동으로 제공합니다 — 수동 파일 업로드가 필요하지 않습니다.
Vendo 앱의 OneSignal > Push Settings 페이지에는 클릭하여 복사할 수 있는 이 정확한 값들이 표시되므로 다시 입력할 필요가 없습니다.Updater Filename과 Main Service Worker Filename은 동일한 파일입니다. OneSignal v16+는 두 가지 목적 모두에 단일 서비스 워커를 사용합니다.
4
자격 증명 복사
OneSignal에서 Settings > Keys & IDs로 이동하여 App ID와 REST API Key를 복사합니다. Vendo에 입력할 것입니다.
이전 섹션의 OneSignal App ID와 REST API Key를 입력한 다음 Save를 클릭합니다.
4
Vendo 테마 블록 활성화
Vendo 테마 블록은 스토어프론트에 OneSignal SDK를 로드합니다. 이것 없이는 푸시 프롬프트가 나타나지 않고 클라이언트 사이드 추적이 작동하지 않습니다.
Shopify 관리자에서 Online Store > Themes > Customize로 이동합니다.
App embeds(왼쪽 사이드바의 퍼즐 조각 아이콘)를 클릭합니다.
Vendo를 켭니다.
Save를 클릭합니다.
테마 블록은 SDK 초기화, 서비스 워커 등록, 푸시 프롬프트 표시, 사용자 식별(푸시 구독, 로그인, 뉴스레터 가입) 및 식별된 사용자에 대한 태그 동기화를 처리합니다.
5
동기화할 이벤트 선택
Vendo 앱의 OneSignal > Events에서 OneSignal에 보내려는 클라이언트 사이드 및 서버 사이드 이벤트를 활성화합니다. 전체 이벤트 목록은 아래 추적을 참조하세요.
6
푸시 프롬프트 구성
각 프롬프트가 스토어프론트에 표시되는지 여부와 시기는 OneSignal 대시보드가 아니라 Vendo 앱에서 제어됩니다. Vendo 앱에서 OneSignal > Push Settings를 엽니다. 각각 자체 토글이 있는 네 개의 섹션이 표시됩니다:
섹션
기능
Subscription Bell
방문자가 언제든지 클릭하여 구독할 수 있는 플로팅 벨 아이콘
Push Slide Prompt
푸시 권한을 요청하는 브랜드화된 슬라이드인 배너
Native Browser Prompt
브라우저의 기본 제공 권한 대화 상자를 직접 트리거
Welcome Notification
방문자가 구독할 때 자동으로 전송되는 푸시 알림
Push Slide 및 Native 프롬프트의 경우 트리거도 설정합니다 — 프롬프트가 실행되기 전에 기다릴 페이지 조회 수와 시간(초)입니다. 합리적인 기본값이 미리 입력되어 있습니다.네 개의 프롬프트는 모두 기본적으로 꺼져 있습니다 — 원하는 것만 활성화하세요. 페이지 하단에서 한 번 저장하면 테마 재배포 없이 다음 스토어프론트 로드 시 변경 사항이 적용됩니다.
프롬프트 버튼 문구, 액션 메시지 텍스트, 아이콘, A/B 테스트 및 현지화와 같은 고급 옵션은 OneSignal 대시보드에서 구성됩니다. Vendo의 Push Settings에서 Open OneSignal Dashboard를 클릭하면 Permission Prompt Setup 페이지로 바로 이동합니다. 프롬프트가 OneSignal 대시보드에 구성되어 있어도 Vendo 토글이 꺼져 있으면 렌더링되지 않습니다 — 표시 여부에 대해서는 Vendo의 토글이 기준입니다.
7
히스토리 데이터 동기화(선택 사항)
Vendo는 기존 고객과 최근 주문 내역을 OneSignal에 역채울 수 있습니다. 자격 증명을 저장한 후 백그라운드에서 자동으로 실행됩니다.
모바일 앱이나 서드파티 연결이 있는 경우, 사용자 프로필이 플랫폼 전반에 걸쳐 일관되게 유지되도록 다른 도구와 일치하는 식별자(Shopify Customer ID 대 Email)를 선택하세요. Vendo 앱의 Settings > Customer Identifier에서 구성합니다.
푸시 구독자(OneSignal ID로 식별)가 나중에 로그인하거나 구매를 완료하면 Vendo는 해당 Shopify Customer ID 또는 이메일로 OneSignal.login()을 호출합니다. OneSignal은 푸시 구독을 식별된 사용자에 연결합니다 — 중복 사용자가 생성되지 않습니다. 모든 과거 푸시 구독이 보존되고, 서버 사이드 이벤트(주문, 이행)가 올바른 사용자 프로필에 도달합니다.
브라우저에서 https://yourstore.myshopify.com/apps/vendo/OneSignalSDKWorker.js를 방문합니다. JavaScript 코드가 보여야 합니다. 404가 표시되면 Vendo 앱이 설치되어 있고 테마 블록이 활성화되어 있는지 확인하세요.브라우저 DevTools(F12)를 열고 Application > Service Workers로 이동하여 OneSignalSDKWorker.js가 범위 /apps/vendo/로 등록되어 있는지 확인할 수도 있습니다.
서비스 워커는 /apps/vendo/OneSignalSDKWorker.js에 있어야 합니다. 루트 경로(/OneSignalSDKWorker.js)에서 404 오류가 표시되면 OneSignal에 서비스 워커 경로가 구성되지 않은 것입니다 — 서비스 워커 구성 단계를 따르세요. /apps/vendo/ 경로에서 404가 발생하면 Vendo 앱이 설치되어 있고 테마 블록이 활성화되어 있는지 확인하세요.
Vendo는 Custom Code 통합 유형이 필요합니다. Typical Site는 서비스 워커 경로 설정을 노출하지 않으므로 SDK가 스토어 루트에서 /OneSignalSDKWorker.js를 로드하려고 시도합니다 — Shopify는 이를 차단하고 푸시 구독이 조용히 실패합니다.해결 방법: OneSignal 대시보드에서 Settings > Platforms > Web에서 앱의 통합 유형을 Custom Code로 전환하거나, 앱을 삭제하고 처음부터 Custom Code를 사용하여 다시 만드세요.
Vendo 앱의 OneSignal > Push Settings에서 프롬프트 토글(Subscription Bell, Push Slide Prompt 또는 Native Browser Prompt) 중 하나 이상이 켜져 있는지 확인하세요 — 네 개 모두 기본적으로 꺼져 있습니다.
트리거 지연을 확인하세요 — 여러 페이지 조회로 설정된 Push Slide는 첫 페이지 로드 시 실행되지 않습니다.
Vendo 앱의 OneSignal > Events에서 이벤트가 활성화되어 있는지 확인하세요. 클라이언트 사이드 이벤트는 Shopify Web Pixel이 활성화되어 있고 사용자가 식별되어 있어야 합니다. 서버 사이드 이벤트는 REST API Key가 구성되어 있어야 합니다.
식별되지 않은 방문자의 이벤트는 OneSignal로 전송되지 않습니다. 방문자가 자신을 식별하면(푸시 구독, 로그인, 뉴스레터 가입 또는 결제 완료), Vendo가 이벤트를 보내기 시작합니다. 이 식별된 사용자 전용 접근 방식은 중복 사용자를 방지하고 깔끔한 데이터를 보장합니다.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal","description":"OneSignal is a platform for sending push notifications, emails, in-app messages, and SMS campaigns via a single API, Journey Builder, and a dashboard.","colors":{"primary":"#3A3DB3","light":"#E54B4D","dark":"#3A3DB3"},"logo":{"light":"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107","dark":"https://mintcdn.com/onesignal/s4WC_KzLxf8ornqq/logo/OneSignal-Logo-White.svg?fit=max\u0026auto=format\u0026n=s4WC_KzLxf8ornqq\u0026q=85\u0026s=2573a53b5aea961e18c82b3af8f31925"},"favicon":"https://mintcdn.com/onesignal/SGduBFHpiRdg5l6h/favicon.ico?fit=max\u0026auto=format\u0026n=SGduBFHpiRdg5l6h\u0026q=85\u0026s=c0a99fadc0553c658a83741c5611cef4","api":{"examples":{"languages":["curl","typescript","python","php","go","ruby","java","csharp","rust"],"autogenerate":true}},"navbar":{"links":[{"href":"mailto:support@onesignal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.onesignal.com"}},"footer":{"socials":{"github":"https://github.com/OneSignal","linkedin":"https://linkedin.com/company/onesignal","youtube":"https://www.youtube.com/@onesignalofficial/playlists"}},"seo":{"metatags":{"apple-mobile-web-app-title":"OneSignal Docs"}},"fonts":{"family":"Nunito Sans"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"G-2DGWL0VYP5"},"posthog":{"apiKey":"phc_vZpvE0f5eyzcOt30FHer34yddVmNdo9kmlMVRBzLMtn","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"docs/en/home"},{"language":"cn","href":"docs/cn/home"},{"language":"ko","href":"docs/ko/home"},{"language":"ja","href":"docs/ja/home"},{"language":"tr","href":"docs/tr/home"},{"language":"pt-BR","href":"docs/pt-BR/home"},{"language":"es","href":"docs/es/home"},{"language":"fr","href":"docs/fr/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onesignal","hasAudioNarration":false,"actualSubdomain":"onesignal","customDomains":["documentation.onesignal.com"],"gitSource":{"type":"github","owner":"onesignal","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aebb1cc40574e0e146e06f5","collectionId":"7de601f2-2191-44e0-a201-86d097330b1f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aebb1cc40574e0e146e06f5"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aebb1cc40574e0e146e06f5","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"User Guides","count":202},{"language":"es","tag":"Guías del Usuario","count":178},{"language":"fr","tag":"Guides utilisateur","count":178},{"language":"ja","tag":"ユーザーガイド","count":178},{"language":"ko","tag":"사용자 가이드","count":178},{"language":"pt-BR","tag":"Guia do Usuário","count":178},{"language":"tr","tag":"Kullanıcı Kılavuzları","count":178},{"language":"cn","tag":"用户指南","count":176},{"language":"en","tag":"Message channels","count":90},{"language":"es","tag":"Canales de mensajería","count":84},{"language":"fr","tag":"Canaux de messagerie","count":84},{"language":"ja","tag":"メッセージングチャネル","count":84},{"language":"ko","tag":"메시지 채널","count":84},{"language":"pt-BR","tag":"Canais de mensagem","count":84},{"language":"tr","tag":"Mesaj kanalları","count":84},{"language":"cn","tag":"消息渠道","count":83},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"API reference","count":64},{"language":"en","tag":"Analytics \u0026 Integrations","count":53},{"language":"es","tag":"Analítica \u0026 Integraciones","count":52},{"language":"fr","tag":"Analyses et intégrations","count":52},{"language":"ja","tag":"分析 \u0026 統合","count":52},{"language":"ko","tag":"분석 \u0026 통합","count":52},{"language":"pt-BR","tag":"Análises \u0026 Integrações","count":52},{"language":"tr","tag":"Analitik ve Entegrasyonlar","count":52},{"language":"cn","tag":"分析和集成","count":51},{"language":"cn","tag":"开发者指南","count":48},{"language":"es","tag":"Guías del desarrollador","count":48},{"language":"fr","tag":"Guides développeur","count":48},{"language":"ja","tag":"開発者ガイド","count":48},{"language":"ko","tag":"개발자 가이드","count":48},{"language":"tr","tag":"Geliştirici Kılavuzları","count":48},{"language":"en","tag":"Developer Guides","count":47},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"language":"en","tag":"Integrations","count":37},{"language":"es","tag":"Integraciones","count":37},{"language":"fr","tag":"Intégrations","count":37},{"language":"ja","tag":"統合","count":37},{"language":"ko","tag":"통합","count":37},{"language":"pt-BR","tag":"Integrações","count":37},{"language":"tr","tag":"Entegrasyonlar","count":37},{"language":"cn","tag":"集成","count":36},{"language":"en","tag":"Tutorials","count":35},{"language":"cn","tag":"推送通知","count":31},{"language":"cn","tag":"OneSignal 作为目的地","count":31},{"language":"en","tag":"Push","count":31},{"language":"en","tag":"OneSignal as destination","count":31},{"language":"es","tag":"Push notificaciones","count":31},{"language":"es","tag":"OneSignal como destino","count":31},{"language":"fr","tag":"Push","count":31},{"language":"fr","tag":"OneSignal comme destination","count":31},{"language":"ja","tag":"プッシュ通知","count":31},{"language":"ja","tag":"OneSignal as 宛先","count":31},{"language":"ko","tag":"푸시","count":31},{"language":"ko","tag":"OneSignal을 데이터 목적지로 사용","count":31},{"language":"pt-BR","tag":"Push notificações","count":31},{"language":"pt-BR","tag":"OneSignal como destino","count":31},{"language":"tr","tag":"Anlık bildirimler","count":31},{"language":"tr","tag":"OneSignal hedef","count":31},{"language":"en","tag":"Mobile SDKs","count":26},{"language":"cn","tag":"移动SDK","count":25},{"language":"es","tag":"SDKs móviles","count":25},{"language":"fr","tag":"SDK mobiles","count":25},{"language":"ja","tag":"モバイルSDK","count":25},{"language":"ko","tag":"모바일 SDKs","count":25},{"language":"pt-BR","tag":"SDKs móveis","count":25},{"language":"tr","tag":"Mobil SDK'lar","count":25},{"language":"cn","tag":"教程","count":24},{"language":"es","tag":"Tutoriales","count":24},{"language":"fr","tag":"Tutoriels","count":24},{"language":"ja","tag":"チュートリアル","count":24},{"language":"ko","tag":"튜토리얼","count":24},{"language":"pt-BR","tag":"Tutoriais","count":24},{"language":"tr","tag":"Eğitimler","count":24},{"language":"en","tag":"Mobile SDK setup","count":19},{"language":"cn","tag":"移动SDK设置","count":18},{"language":"es","tag":"Configuración del SDK móvil","count":18},{"language":"fr","tag":"Configuration SDK mobile","count":18},{"language":"ja","tag":"モバイルSDKセットアップ","count":18},{"language":"ko","tag":"모바일 SDK 설정","count":18},{"language":"pt-BR","tag":"Configuração do SDK móvel","count":18},{"language":"tr","tag":"Mobil SDK kurulumu","count":18},{"language":"default","tag":"Messages","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"Organization","count":9},{"language":"default","tag":"Journeys","count":8},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Templates","count":6},{"language":"default","tag":"Subscriptions","count":6},{"language":"default","tag":"Segments","count":5}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@onesignal.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/ko/shopify","slug":"/docs/ko/shopify","pageMetadata":{"title":"Shopify 웹 푸시 통합","description":"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.","keywords":["Shopify","Vendo","통합","웹 푸시","사용자 지정 이벤트","고객 태그","이커머스","장바구니 이탈"],"href":"/docs/ko/shopify"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,Columns,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`OneSignal은 Vendo와 파트너십을 맺어 원활한 Shopify 통합을 만들었습니다. Vendo는 클릭 한 번으로 Shopify 스토어에 OneSignal SDK를 배포합니다 — 테마 코드를 수동으로 편집할 필요가 없습니다. 고객 태그, 클라이언트 사이드 탐색 이벤트, 서버 사이드 커머스 이벤트를 OneSignal에 동기화하여 실제 행동과 구매 이력을 기반으로 세그먼트를 만들고 푸시 캠페인을 트리거할 수 있습니다.`}),`\n`,_jsxs(_components.p,{children:[`Vendo 문서는 `,_jsx(_components.a,{href:`https://docs.vendodata.com/destinations/onesignal/overview`,children:`Vendo OneSignal Destination`}),`을 참조하세요.`]}),`\n`,_jsx(Heading,{level:`2`,id:`필수-조건`,children:`필수 조건`}),`\n`,_jsx(_components.p,{children:`시작하기 전에 다음이 준비되어 있는지 확인하세요:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://apps.shopify.com/`,children:`Vendo 앱`}),`이 설치된 Shopify 스토어`]}),`\n`,_jsx(_components.li,{children:`OneSignal 계정 및 앱(웹 플랫폼)`}),`\n`,_jsxs(_components.li,{children:[`OneSignal `,_jsx(_components.strong,{children:`App ID`}),`(필수)`]}),`\n`,_jsxs(_components.li,{children:[`OneSignal `,_jsx(_components.strong,{children:`REST API Key`}),`(주문 동기화 및 사용자 태그 지정과 같은 서버 사이드 이벤트에 필요)`]}),`\n`,_jsx(_components.li,{children:`Shopify 테마 설정에서 Vendo 앱 임베드 활성화`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`onesignal-설정`,children:`OneSignal 설정`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`OneSignal 앱 만들기`,children:[_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://onesignal.com`,children:`onesignal.com`}),`에 로그인하여 앱을 만들거나 선택합니다. 플랫폼으로 `,_jsx(_components.strong,{children:`Web`}),`을 선택하고 통합 유형으로 `,_jsx(_components.strong,{children:`Custom Code`}),`를 선택합니다.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`반드시 `,_jsx(_components.strong,{children:`Custom Code`}),`를 선택해야 합니다. `,_jsx(_components.strong,{children:`Typical Site`}),` 옵션은 서비스 워커 경로 설정을 노출하지 않으므로 SDK가 스토어 루트에서 `,_jsx(_components.code,{children:`/OneSignalSDKWorker.js`}),`를 로드하려고 시도합니다 — Shopify는 이를 차단하고 푸시 구독이 조용히 실패합니다. 이미 Typical Site로 앱을 만들었다면 `,_jsx(_components.strong,{children:`Settings > Platforms > Web`}),`에서 Custom Code로 전환하거나 앱을 삭제하고 다시 만드세요.`]})})]}),_jsxs(Step,{title:`웹 푸시 설정 구성`,children:[_jsxs(_components.p,{children:[`OneSignal 앱에서 `,_jsx(_components.strong,{children:`Settings > Push \u0026 In-App > Web Settings`}),`으로 이동하거나 `,_jsx(_components.a,{href:`/docs/ko/web-push-setup`,children:`웹 푸시 설정`}),` 가이드를 따릅니다.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`사이트 설정`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Site Name`}),`: 스토어 이름으로, 기본 알림 제목으로 사용됩니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Site URL`}),`: Shopify 스토어의 공개적으로 액세스 가능한 URL(예: `,_jsx(_components.code,{children:`https://yourstore.com`}),`).`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`사이트의 정확한 `,_jsx(_components.a,{href:`https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy`,children:`출처`}),`여야 합니다.`]}),`\n`,_jsxs(_components.li,{children:[`고객이 `,_jsx(_components.code,{children:`https://your-site.com/`}),`과 같은 커스텀 도메인을 통해 사이트에 액세스하는 경우 `,_jsx(_components.code,{children:`https://your-site.myshopify.com/`}),`을 사용하지 마세요.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Default Icon URL`}),`: 알림 및 프롬프트에 표시되는 정사각형 `,_jsx(_components.code,{children:`256×256`}),` PNG, JPG 또는 애니메이션이 아닌 GIF를 업로드합니다. 설정하지 않으면 기본 아이콘으로 벨이 사용됩니다. `,_jsx(_components.a,{href:`/docs/ko/notification-icons#web-notification-icons`,children:`알림 아이콘`}),`을 참조하세요.`]}),`\n`]})]}),_jsxs(Step,{title:`서비스 워커 경로 구성`,children:[_jsx(_components.p,{children:`Shopify는 사이트 루트에서 파일을 제공할 수 없으므로 Vendo가 서비스 워커 파일을 제공하는 위치를 OneSignal에 알려야 합니다.`}),_jsxs(_components.p,{children:[`OneSignal에서 `,_jsx(_components.strong,{children:`Settings > Push \u0026 In-App > Web Settings`}),`으로 이동하고 `,_jsx(_components.strong,{children:`Advanced Push Settings`}),`까지 스크롤하여 `,_jsx(_components.strong,{children:`Customize service worker paths and filenames`}),`를 켠 다음 다음과 같이 구성합니다:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`설정`}),_jsx(_components.th,{children:`값`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Path to service worker files`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/apps/vendo/`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Main service worker filename`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`OneSignalSDKWorker.js`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Updater service worker filename`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`OneSignalSDKWorker.js`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Service worker registration scope`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/apps/vendo/`})})]})]})]}),_jsx(Frame,{caption:`Vendo를 사용하는 Shopify 스토어의 서비스 워커 구성.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=b7bc1794445e002bd3427c94a6ec6ccf`,alt:`OneSignal Advanced Push Settings showing service worker paths configured for Vendo`,\"data-og-width\":`3038`,width:`3038`,\"data-og-height\":`1108`,height:`1108`,\"data-path\":`images/integrations/shopify/vendo-service-worker-configuration.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=280\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=f9f035641926065e0143a813b32f97cd 280w, https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=560\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=1388d484dca925c629b100fb846276c8 560w, https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=840\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=77b96e7af65f0af82537ea1d5dfcbb6f 840w, https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=1100\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=1e3b388f7aed2ea888597d3ed2895bc7 1100w, https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=1650\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=77bd6af31b6109d131225c8fe852badd 1650w, https://mintcdn.com/onesignal/N_-d1DtCTRgGPN4l/images/integrations/shopify/vendo-service-worker-configuration.png?w=2500\u0026fit=max\u0026auto=format\u0026n=N_-d1DtCTRgGPN4l\u0026q=85\u0026s=4c669b0f4b6f23abd7666f2338ac07ce 2500w`})}),_jsxs(_components.p,{children:[`Vendo는 `,_jsx(_components.code,{children:`https://yourstore.myshopify.com/apps/vendo/OneSignalSDKWorker.js`}),`에 필요한 `,_jsx(_components.code,{children:`OneSignalSDKWorker.js`}),` 파일을 자동으로 제공합니다 — 수동 파일 업로드가 필요하지 않습니다.`]}),_jsxs(Note,{children:[_jsxs(_components.p,{children:[`Vendo 앱의 `,_jsx(_components.strong,{children:`OneSignal > Push Settings`}),` 페이지에는 클릭하여 복사할 수 있는 이 정확한 값들이 표시되므로 다시 입력할 필요가 없습니다.`]}),_jsx(_components.p,{children:`Updater Filename과 Main Service Worker Filename은 동일한 파일입니다. OneSignal v16+는 두 가지 목적 모두에 단일 서비스 워커를 사용합니다.`})]})]}),_jsx(Step,{title:`자격 증명 복사`,children:_jsxs(_components.p,{children:[`OneSignal에서 `,_jsx(_components.a,{href:`/docs/ko/keys-and-ids`,children:_jsx(_components.strong,{children:`Settings > Keys \u0026 IDs`})}),`로 이동하여 `,_jsx(_components.strong,{children:`App ID`}),`와 `,_jsx(_components.strong,{children:`REST API Key`}),`를 복사합니다. Vendo에 입력할 것입니다.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`vendo-설정`,children:`Vendo 설정`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Vendo 앱 설치`,children:_jsx(_components.p,{children:`Shopify App Store에서 Vendo 앱을 설치합니다.`})}),_jsxs(Step,{title:`OneSignal 통합 추가`,children:[_jsxs(_components.p,{children:[`Vendo에서 `,_jsx(_components.strong,{children:`Destinations > OneSignal`}),`로 이동합니다.`]}),_jsx(Frame,{caption:`Vendo에서 OneSignal 통합 추가.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=13acfaf4e6b01f77535f1a1386c4212d`,alt:`Vendo Integrations page showing the OneSignal integration option`,\"data-og-width\":`2520`,width:`2520`,\"data-og-height\":`1756`,height:`1756`,\"data-path\":`images/integrations/shopify/vendo-onesignal-integrations.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=280\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=094d74aa6803a73332fece950acf2220 280w, https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=560\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=a0db5dcf258f52557d8081d4143790b0 560w, https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=840\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=a6bbbdfc27769e5d1d45711ac85ef16a 840w, https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=1100\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=bf548380a6bcbbb3c008a74ec1ab270d 1100w, https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=1650\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=4d1949cdcae2c3867ea83ce58cc112f9 1650w, https://mintcdn.com/onesignal/PoskQI_qr0DD8jDV/images/integrations/shopify/vendo-onesignal-integrations.png?w=2500\u0026fit=max\u0026auto=format\u0026n=PoskQI_qr0DD8jDV\u0026q=85\u0026s=641ebffe4be3aa129aaf4ce1cb50dd1b 2500w`})})]}),_jsx(Step,{title:`OneSignal 자격 증명 입력`,children:_jsxs(_components.p,{children:[`이전 섹션의 OneSignal `,_jsx(_components.strong,{children:`App ID`}),`와 `,_jsx(_components.strong,{children:`REST API Key`}),`를 입력한 다음 `,_jsx(_components.strong,{children:`Save`}),`를 클릭합니다.`]})}),_jsxs(Step,{title:`Vendo 테마 블록 활성화`,children:[_jsx(_components.p,{children:`Vendo 테마 블록은 스토어프론트에 OneSignal SDK를 로드합니다. 이것 없이는 푸시 프롬프트가 나타나지 않고 클라이언트 사이드 추적이 작동하지 않습니다.`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Shopify 관리자에서 `,_jsx(_components.strong,{children:`Online Store > Themes > Customize`}),`로 이동합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`App embeds`}),`(왼쪽 사이드바의 퍼즐 조각 아이콘)를 클릭합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Vendo`}),`를 켭니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Save`}),`를 클릭합니다.`]}),`\n`]}),_jsx(_components.p,{children:`테마 블록은 SDK 초기화, 서비스 워커 등록, 푸시 프롬프트 표시, 사용자 식별(푸시 구독, 로그인, 뉴스레터 가입) 및 식별된 사용자에 대한 태그 동기화를 처리합니다.`})]}),_jsx(Step,{title:`동기화할 이벤트 선택`,children:_jsxs(_components.p,{children:[`Vendo 앱의 `,_jsx(_components.strong,{children:`OneSignal > Events`}),`에서 OneSignal에 보내려는 클라이언트 사이드 및 서버 사이드 이벤트를 활성화합니다. 전체 이벤트 목록은 아래 `,_jsx(_components.a,{href:`#tracking`,children:`추적`}),`을 참조하세요.`]})}),_jsxs(Step,{title:`푸시 프롬프트 구성`,children:[_jsxs(_components.p,{children:[`각 프롬프트가 스토어프론트에 표시되는지 여부와 시기는 OneSignal 대시보드가 아니라 Vendo 앱에서 제어됩니다. Vendo 앱에서 `,_jsx(_components.strong,{children:`OneSignal > Push Settings`}),`를 엽니다. 각각 자체 토글이 있는 네 개의 섹션이 표시됩니다:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`섹션`}),_jsx(_components.th,{children:`기능`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Subscription Bell`})}),_jsx(_components.td,{children:`방문자가 언제든지 클릭하여 구독할 수 있는 플로팅 벨 아이콘`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Push Slide Prompt`})}),_jsx(_components.td,{children:`푸시 권한을 요청하는 브랜드화된 슬라이드인 배너`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Native Browser Prompt`})}),_jsx(_components.td,{children:`브라우저의 기본 제공 권한 대화 상자를 직접 트리거`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Welcome Notification`})}),_jsx(_components.td,{children:`방문자가 구독할 때 자동으로 전송되는 푸시 알림`})]})]})]}),_jsxs(_components.p,{children:[`Push Slide 및 Native 프롬프트의 경우 `,_jsx(_components.strong,{children:`트리거`}),`도 설정합니다 — 프롬프트가 실행되기 전에 기다릴 페이지 조회 수와 시간(초)입니다. 합리적인 기본값이 미리 입력되어 있습니다.`]}),_jsxs(_components.p,{children:[`네 개의 프롬프트는 모두 `,_jsx(_components.strong,{children:`기본적으로 꺼져 있습니다`}),` — 원하는 것만 활성화하세요. 페이지 하단에서 한 번 저장하면 테마 재배포 없이 다음 스토어프론트 로드 시 변경 사항이 적용됩니다.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`프롬프트 버튼 문구, 액션 메시지 텍스트, 아이콘, A/B 테스트 및 현지화와 같은 고급 옵션은 OneSignal 대시보드에서 구성됩니다. Vendo의 Push Settings에서 `,_jsx(_components.strong,{children:`Open OneSignal Dashboard`}),`를 클릭하면 Permission Prompt Setup 페이지로 바로 이동합니다. 프롬프트가 OneSignal 대시보드에 구성되어 있어도 Vendo 토글이 꺼져 있으면 렌더링되지 않습니다 — 표시 여부에 대해서는 Vendo의 토글이 기준입니다.`]})})]}),_jsxs(Step,{title:`히스토리 데이터 동기화(선택 사항)`,children:[_jsx(_components.p,{children:`Vendo는 기존 고객과 최근 주문 내역을 OneSignal에 역채울 수 있습니다. 자격 증명을 저장한 후 백그라운드에서 자동으로 실행됩니다.`}),_jsx(Frame,{caption:`Vendo의 히스토리 데이터 동기화 옵션.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=4eb61a384a7ac3f4596661348f98ac48`,alt:`Vendo historical data settings showing sync options for Shopify data`,\"data-og-width\":`1724`,width:`1724`,\"data-og-height\":`762`,height:`762`,\"data-path\":`images/integrations/shopify/vendo-historical-data.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=280\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=033f4c21ac8b9d1095228df3f4002766 280w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=560\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=b2c532afd8ae302675689113f55dd756 560w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=840\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=458b756d712d8606a6d2929bfe8f3671 840w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=1835889af2b5075bd9662932d19e6bf6 1100w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=7c5a11069ffbf3ac0af33a530f4f6ef2 1650w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-historical-data.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=5d81cb48d8760e6c334c51857eee2e83 2500w`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`추적`,children:`추적`}),`\n`,_jsx(Heading,{level:`3`,id:`사용자-식별`,children:`사용자 식별`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 `,_jsx(_components.strong,{children:`식별된 사용자 전용`}),` 접근 방식을 사용합니다 — 익명 방문자는 OneSignal에서 추적되지 않습니다. 이벤트가 전송되기 전에 사용자는 네 가지 방법 중 하나로 식별되어야 합니다. 이를 통해 중복 사용자를 방지하고 깔끔하고 실행 가능한 데이터를 보장합니다.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`방법`}),_jsx(_components.th,{children:`작동 방식`}),_jsx(_components.th,{children:`사용된 식별자`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`웹 푸시 구독`})}),_jsx(_components.td,{children:`방문자가 푸시 프롬프트에서 “허용”을 클릭합니다. OneSignal이 자동으로 사용자를 생성하고 Vendo가 OneSignal ID를 캡처합니다.`}),_jsx(_components.td,{children:`OneSignal ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`뉴스레터 가입`})}),_jsxs(_components.td,{children:[`방문자가 뉴스레터 또는 이메일 양식을 제출합니다. Vendo가 이메일을 캡처하고 `,_jsx(_components.code,{children:`OneSignal.login(email)`}),`을 호출합니다.`]}),_jsx(_components.td,{children:`Email`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`고객 로그인`})}),_jsxs(_components.td,{children:[`고객이 Shopify 계정에 로그인합니다. Vendo가 이를 감지하고 구성된 식별자로 `,_jsx(_components.code,{children:`OneSignal.login()`}),`을 호출합니다.`]}),_jsx(_components.td,{children:`Shopify Customer ID 또는 Email`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`결제 완료`})}),_jsxs(_components.td,{children:[`고객이 구매를 완료합니다. Vendo가 식별자를 저장하고 `,_jsx(_components.code,{children:`OneSignal.login()`}),`을 호출합니다.`]}),_jsx(_components.td,{children:`Shopify Customer ID 또는 Email`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`모바일 앱이나 서드파티 연결이 있는 경우, 사용자 프로필이 플랫폼 전반에 걸쳐 일관되게 유지되도록 다른 도구와 일치하는 식별자(Shopify Customer ID 대 Email)를 선택하세요. Vendo 앱의 `,_jsx(_components.strong,{children:`Settings > Customer Identifier`}),`에서 구성합니다.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`아이덴티티-병합`,children:`아이덴티티 병합`}),`\n`,_jsxs(_components.p,{children:[`푸시 구독자(OneSignal ID로 식별)가 나중에 로그인하거나 구매를 완료하면 Vendo는 해당 Shopify Customer ID 또는 이메일로 `,_jsx(_components.code,{children:`OneSignal.login()`}),`을 호출합니다. OneSignal은 푸시 구독을 식별된 사용자에 연결합니다 — 중복 사용자가 생성되지 않습니다. 모든 과거 푸시 구독이 보존되고, 서버 사이드 이벤트(주문, 이행)가 올바른 사용자 프로필에 도달합니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`고객-태그`,children:`고객 태그`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 세그멘테이션을 위해 고객 속성을 OneSignal의 `,_jsx(_components.a,{href:`/docs/ko/add-user-data-tags`,children:`태그`}),`로 동기화합니다. 모든 값은 문자열로 저장됩니다(OneSignal의 네이티브 형식).`]}),`\n`,_jsx(Heading,{level:`4`,id:`아이덴티티-및-프로필`,children:`아이덴티티 및 프로필`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`태그`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`email`})}),_jsx(_components.td,{children:`고객 이메일`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`first_name`})}),_jsx(_components.td,{children:`이름`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`last_name`})}),_jsx(_components.td,{children:`성`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`phone`})}),_jsx(_components.td,{children:`고객 전화번호`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`shopify_customer_id`})}),_jsx(_components.td,{children:`Shopify 고객 ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`verified_email`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`\"true\"`}),` 또는 `,_jsx(_components.code,{children:`\"false\"`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tax_exempt`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`\"true\"`}),` 또는 `,_jsx(_components.code,{children:`\"false\"`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`customer_tags`})}),_jsx(_components.td,{children:`쉼표로 구분된 Shopify 태그`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`customer_created_at`})}),_jsx(_components.td,{children:`고객 생성 날짜(ISO 8601)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`first_seen`})}),_jsx(_components.td,{children:`첫 번째 식별 이벤트의 ISO 타임스탬프`})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`마케팅-동의`,children:`마케팅 동의`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`태그`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`marketing_state`})}),_jsx(_components.td,{children:`전체 마케팅 동의 상태`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`email_marketing_consent`})}),_jsx(_components.td,{children:`이메일 마케팅 동의 상태`})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`커머스-통계`,children:`커머스 통계`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`태그`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`total_spent`})}),_jsx(_components.td,{children:`누적 지출액`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_count`})}),_jsx(_components.td,{children:`총 주문 수`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`first_order_date`})}),_jsx(_components.td,{children:`첫 주문 날짜(ISO 8601)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`last_order_date`})}),_jsx(_components.td,{children:`가장 최근 주문 날짜(ISO 8601)`})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`어트리뷰션-태그`,children:`어트리뷰션 태그`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 결제 시 UTM 매개변수와 클릭 ID를 캡처하여 태그로 동기화합니다. 라스트 터치 값은 각 결제 시 덮어쓰기되고, 퍼스트 터치 값(`,_jsx(_components.code,{children:`initial_utm_*`}),`)은 한 번만 기록됩니다.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`태그`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`utm_source`})}),_jsx(_components.td,{children:`라스트 터치 UTM 소스`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`utm_medium`})}),_jsx(_components.td,{children:`라스트 터치 UTM 매체`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`utm_campaign`})}),_jsx(_components.td,{children:`라스트 터치 UTM 캠페인`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`utm_content`})}),_jsx(_components.td,{children:`라스트 터치 UTM 콘텐츠`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`utm_term`})}),_jsx(_components.td,{children:`라스트 터치 UTM 검색어`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`initial_utm_source`})}),_jsx(_components.td,{children:`퍼스트 터치 UTM 소스(한 번만 설정)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`initial_utm_medium`})}),_jsx(_components.td,{children:`퍼스트 터치 UTM 매체(한 번만 설정)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`initial_utm_campaign`})}),_jsx(_components.td,{children:`퍼스트 터치 UTM 캠페인(한 번만 설정)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`gclid`})}),_jsx(_components.td,{children:`Google Ads 클릭 ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`fbclid`})}),_jsx(_components.td,{children:`Meta(Facebook/Instagram) 클릭 ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ttclid`})}),_jsx(_components.td,{children:`TikTok 클릭 ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`msclkid`})}),_jsx(_components.td,{children:`Microsoft Ads 클릭 ID`})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`세그먼트-멤버십`,children:`세그먼트 멤버십`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 Shopify 세그먼트 멤버십을 `,_jsx(_components.code,{children:`shopify_segment_{segment_id}`}),` 형식의 태그로 값 `,_jsx(_components.code,{children:`\"true\"`}),`와 함께 동기화할 수 있습니다. 동기화 실행에 대한 자세한 내용은 `,_jsx(_components.a,{href:`https://docs.vendodata.com/destinations/onesignal/events-and-properties`,children:`Vendo의 Events \u0026 Properties 레퍼런스`}),`를 참조하세요.`]}),`\n`,_jsx(Heading,{level:`3`,id:`클라이언트-사이드-이벤트`,children:`클라이언트 사이드 이벤트`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 Shopify Web Pixel을 통해 스토어프론트의 클라이언트 사이드 `,_jsx(_components.a,{href:`/docs/ko/custom-events`,children:`사용자 지정 이벤트`}),`를 추적하여 OneSignal로 보냅니다. 이 이벤트는 사용자가 식별된 후에만 전송됩니다.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`이벤트`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`page_viewed`})}),_jsx(_components.td,{children:`고객이 페이지를 방문(스토어프론트, 결제 또는 주문 상태)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`product_viewed`})}),_jsx(_components.td,{children:`고객이 상품 상세 페이지를 조회`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`collection_viewed`})}),_jsx(_components.td,{children:`고객이 상품 컬렉션 페이지를 조회`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`search_submitted`})}),_jsx(_components.td,{children:`고객이 스토어프론트 검색 실행`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`product_added_to_cart`})}),_jsx(_components.td,{children:`상품이 장바구니에 추가됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`product_removed_from_cart`})}),_jsx(_components.td,{children:`상품이 장바구니에서 제거됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`cart_viewed`})}),_jsx(_components.td,{children:`고객이 장바구니 페이지를 조회`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`checkout_started`})}),_jsx(_components.td,{children:`고객이 결제 시작`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`checkout_contact_info_submitted`})}),_jsx(_components.td,{children:`연락처 정보 단계 제출됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`checkout_address_info_submitted`})}),_jsx(_components.td,{children:`주소 정보 단계 제출됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`checkout_shipping_info_submitted`})}),_jsx(_components.td,{children:`배송 방법 선택됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payment_info_submitted`})}),_jsx(_components.td,{children:`결제 정보 제출됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`checkout_completed`})}),_jsx(_components.td,{children:`결제가 성공적으로 완료됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`alert_displayed`})}),_jsx(_components.td,{children:`결제 경고 또는 알림이 표시됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ui_extension_errored`})}),_jsx(_components.td,{children:`결제 UI 확장 런타임 오류`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`all_custom_events`})}),_jsx(_components.td,{children:`사용자 지정 Shopify 고객 이벤트`})]})]})]}),`\n`,_jsx(Frame,{caption:`Vendo의 클라이언트 사이드 이벤트 구성.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=c94b99465b8c200ebb1bb475e492f8a1`,alt:`Vendo client-side events settings showing available custom events`,\"data-og-width\":`865`,width:`865`,\"data-og-height\":`726`,height:`726`,\"data-path\":`images/integrations/shopify/vendo-client-side-events.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=280\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=d1e41237a617cf28a37896112a3eaf2c 280w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=560\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=8b40389eb561959186fd8e0d6cabd121 560w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=840\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=99ccb2f69828386a1e094e78b9901911 840w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=ef9ed5e02a0c42aeff7af27634a6e0e5 1100w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=ae5621c278b99321f00fe51d794e56db 1650w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-client-side-events.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=0b6f72a0bbbc2a21f1e0048cad374389 2500w`})}),`\n`,_jsx(Heading,{level:`3`,id:`서버-사이드-이벤트`,children:`서버 사이드 이벤트`}),`\n`,_jsxs(_components.p,{children:[`Shopify 커머스 이벤트는 Vendo 파이프라인을 통해 내보내고 OneSignal로 전달됩니다. 항상 Shopify Customer ID를 `,_jsx(_components.code,{children:`external_id`}),`로 사용합니다.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`이벤트`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_received`})}),_jsx(_components.td,{children:`새 주문이 생성됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_fulfilled`})}),_jsx(_components.td,{children:`주문이 이행/배송됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_delivered`})}),_jsx(_components.td,{children:`주문이 배달됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_refunded`})}),_jsx(_components.td,{children:`주문이 전액 환불됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`order_partially_refunded`})}),_jsx(_components.td,{children:`주문이 부분 환불됨`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`cart_abandoned`})}),_jsx(_components.td,{children:`결제가 이탈됨`})]})]})]}),`\n`,_jsx(Frame,{caption:`Vendo의 서버 사이드 이벤트 구성.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=c9bed30c26b0bec3b8a53eb8cde8098d`,alt:`Vendo server-side events settings showing available Shopify webhook events`,\"data-og-width\":`865`,width:`865`,\"data-og-height\":`394`,height:`394`,\"data-path\":`images/integrations/shopify/vendo-server-side-events.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=280\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=690636fef91b80a933c4eead29bd4ae1 280w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=560\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=a3a6abf2812eed57c9ef6679210bc3aa 560w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=840\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=54af0946d01f41d8019a0b0f7a50070c 840w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=e86d2c7e36e1bd0ec147df3a8a40aada 1100w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=91583da7d36d3afa45c01bb092e31709 1650w, https://mintcdn.com/onesignal/dknFSNQuQfw5IM0j/images/integrations/shopify/vendo-server-side-events.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dknFSNQuQfw5IM0j\u0026q=85\u0026s=46ebfe07dbe982664ad947a97a2c2384 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`플랫폼-세부-정보`,children:`플랫폼 세부 정보`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`설정`}),_jsx(_components.th,{children:`값`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`동기화 방법`}),_jsx(_components.td,{children:`Vendo를 통한 클라이언트 + 서버 사이드`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`아이덴티티`}),_jsx(_components.td,{children:`Shopify Customer ID, Email 또는 OneSignal ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`중복 제거`}),_jsx(_components.td,{children:`이벤트당 UUID v5 해싱`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`배치 크기`}),_jsx(_components.td,{children:`요청당 1,000개 이벤트`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`데이터 형식`}),_jsx(_components.td,{children:`모든 값을 문자열로 저장`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`사용-사례`,children:`사용 사례`}),`\n`,_jsx(Heading,{level:`3`,id:`이탈-장바구니-복구`,children:`이탈 장바구니 복구`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`cart_abandoned`}),` 이벤트로 트리거되는 `,_jsx(_components.a,{href:`/docs/ko/journeys-overview`,children:`Journey`}),`를 만듭니다. 이탈 후 1시간을 기다린 다음 `,_jsx(_components.code,{children:`checkout_url`}),` 속성을 사용하여 복구 링크가 포함된 푸시 알림을 보냅니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`주문-상태-업데이트`,children:`주문 상태 업데이트`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`order_fulfilled`}),` 및 `,_jsx(_components.code,{children:`order_delivered`}),`에 대한 Journey를 만들어 주문이 발송되고 도착할 때 추적 정보가 담긴 즉시 푸시 알림을 보냅니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`vip-고객-인게이지먼트`,children:`VIP 고객 인게이지먼트`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`total_spent`}),`가 임계값보다 큰 `,_jsx(_components.a,{href:`/docs/ko/segmentation`,children:`세그먼트`}),`를 만든 다음 `,_jsx(_components.code,{children:`first_name`}),` 태그로 개인화된 독점 혜택을 보냅니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`재참여-캠페인`,children:`재참여 캠페인`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`last_order_date`}),`가 90일 이상 된 세그먼트를 만들어 비활성 고객을 타겟팅하고 윈백 캠페인을 보냅니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`호환-소스`,children:`호환 소스`}),`\n`,_jsx(_components.p,{children:`OneSignal은 다음 Vendo 데이터 소스와 함께 작동합니다:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`소스`}),_jsx(_components.th,{children:`이벤트`}),_jsx(_components.th,{children:`사용자 태그`}),_jsx(_components.th,{children:`오디언스`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Shopify`}),_jsx(_components.td,{children:`예`}),_jsx(_components.td,{children:`예`}),_jsx(_components.td,{children:`예`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Stripe`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Mixpanel`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Amplitude`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`}),_jsx(_components.td,{children:`출시 예정`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`테스트`,children:`테스트`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`서비스 워커 확인`,children:[_jsxs(_components.p,{children:[`브라우저에서 `,_jsx(_components.code,{children:`https://yourstore.myshopify.com/apps/vendo/OneSignalSDKWorker.js`}),`를 방문합니다. JavaScript 코드가 보여야 합니다. 404가 표시되면 Vendo 앱이 설치되어 있고 테마 블록이 활성화되어 있는지 확인하세요.`]}),_jsxs(_components.p,{children:[`브라우저 DevTools(`,_jsx(_components.strong,{children:`F12`}),`)를 열고 `,_jsx(_components.strong,{children:`Application > Service Workers`}),`로 이동하여 `,_jsx(_components.code,{children:`OneSignalSDKWorker.js`}),`가 범위 `,_jsx(_components.code,{children:`/apps/vendo/`}),`로 등록되어 있는지 확인할 수도 있습니다.`]})]}),_jsx(Step,{title:`푸시 프롬프트 테스트`,children:_jsxs(_components.p,{children:[`시크릿/비공개 창에서 스토어프론트를 엽니다. OneSignal 알림 권한 프롬프트가 표시되어야 합니다. `,_jsx(_components.strong,{children:`허용`}),`을 클릭하여 구독합니다.`]})}),_jsx(Step,{title:`테스트 알림 보내기`,children:_jsxs(_components.p,{children:[`OneSignal 대시보드에서 `,_jsx(_components.strong,{children:`Messages > New Push`}),`로 이동합니다. 구독자에게 테스트 알림을 보내고 나타나는지 확인합니다.`]})}),_jsx(Step,{title:`OneSignal에서 사용자 데이터 확인`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Audience > All Users`}),`로 이동하여 테스트 사용자가 나타나는지 확인합니다. 식별된 사용자에 대해 사용자 태그(이메일, 이름 등)가 동기화되는지 확인합니다.`]})}),_jsx(Step,{title:`테스트 이벤트 트리거`,children:_jsx(_components.p,{children:`스토어에서 상품을 탐색하거나 테스트 결제를 완료합니다. OneSignal 대시보드의 사용자 활동에 이벤트가 나타나는지 확인합니다.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`문제-해결`,children:`문제 해결`}),`\n`,_jsx(Heading,{level:`3`,id:`서비스-워커가-404를-반환`,children:`서비스 워커가 404를 반환`}),`\n`,_jsxs(_components.p,{children:[`서비스 워커는 `,_jsx(_components.code,{children:`/apps/vendo/OneSignalSDKWorker.js`}),`에 있어야 합니다. 루트 경로(`,_jsx(_components.code,{children:`/OneSignalSDKWorker.js`}),`)에서 404 오류가 표시되면 OneSignal에 서비스 워커 경로가 구성되지 않은 것입니다 — `,_jsx(_components.a,{href:`#configure-the-service-worker-path`,children:`서비스 워커 구성 단계`}),`를 따르세요. `,_jsx(_components.code,{children:`/apps/vendo/`}),` 경로에서 404가 발생하면 Vendo 앱이 설치되어 있고 테마 블록이 활성화되어 있는지 확인하세요.`]}),`\n`,_jsx(Heading,{level:`3`,id:`onesignal-설정-중-“typical-site”가-선택됨`,children:`OneSignal 설정 중 “Typical Site”가 선택됨`}),`\n`,_jsxs(_components.p,{children:[`Vendo는 `,_jsx(_components.strong,{children:`Custom Code`}),` 통합 유형이 필요합니다. Typical Site는 서비스 워커 경로 설정을 노출하지 않으므로 SDK가 스토어 루트에서 `,_jsx(_components.code,{children:`/OneSignalSDKWorker.js`}),`를 로드하려고 시도합니다 — Shopify는 이를 차단하고 푸시 구독이 조용히 실패합니다.`]}),`\n`,_jsxs(_components.p,{children:[`해결 방법: OneSignal 대시보드에서 `,_jsx(_components.strong,{children:`Settings > Platforms > Web`}),`에서 앱의 통합 유형을 Custom Code로 전환하거나, 앱을 삭제하고 처음부터 Custom Code를 사용하여 다시 만드세요.`]}),`\n`,_jsx(Heading,{level:`3`,id:`푸시-프롬프트가-나타나지-않음`,children:`푸시 프롬프트가 나타나지 않음`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`App embeds`}),`에서 Vendo 테마 블록이 활성화되어 있는지 확인하세요.`]}),`\n`,_jsxs(_components.li,{children:[`Vendo 앱의 `,_jsx(_components.strong,{children:`OneSignal > Push Settings`}),`에서 프롬프트 토글(Subscription Bell, Push Slide Prompt 또는 Native Browser Prompt) 중 하나 이상이 켜져 있는지 확인하세요 — 네 개 모두 기본적으로 꺼져 있습니다.`]}),`\n`,_jsx(_components.li,{children:`트리거 지연을 확인하세요 — 여러 페이지 조회로 설정된 Push Slide는 첫 페이지 로드 시 실행되지 않습니다.`}),`\n`,_jsx(_components.li,{children:`브라우저가 알림을 허용하는지 확인하세요(주소 표시줄의 자물쇠 아이콘 클릭).`}),`\n`,_jsx(_components.li,{children:`프롬프트가 이전에 거부되었을 경우를 대비해 시크릿/비공개 창을 시도해 보세요.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`onesignal에-태그가-나타나지-않음`,children:`OneSignal에 태그가 나타나지 않음`}),`\n`,_jsx(_components.p,{children:`태그는 식별된 사용자에게만 동기화됩니다 — 익명 방문자는 추적되지 않습니다. 사용자가 푸시 구독, 로그인, 뉴스레터 가입 또는 결제를 통해 식별되었는지 확인하세요. 초기 태그 동기화는 몇 시간이 걸릴 수 있습니다.`}),`\n`,_jsx(Heading,{level:`3`,id:`이벤트가-트리거되지-않음`,children:`이벤트가 트리거되지 않음`}),`\n`,_jsxs(_components.p,{children:[`Vendo 앱의 `,_jsx(_components.strong,{children:`OneSignal > Events`}),`에서 이벤트가 활성화되어 있는지 확인하세요. 클라이언트 사이드 이벤트는 Shopify Web Pixel이 활성화되어 있고 사용자가 식별되어 있어야 합니다. 서버 사이드 이벤트는 REST API Key가 구성되어 있어야 합니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`알림이-“전달됨”으로-표시되지만-나타나지-않음`,children:`알림이 “전달됨”으로 표시되지만 나타나지 않음`}),`\n`,_jsx(_components.p,{children:`통합이 작동하고 있습니다 — 문제는 브라우저 또는 OS 알림 설정에 있습니다. 브라우저의 OS 알림 설정을 확인하고, 방해 금지/집중 모드가 꺼져 있는지 확인하고, 브라우저 수준의 알림 권한을 확인하세요.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Heading,{level:`3`,id:`설정-후-고객-식별자를-변경할-수-있나요`,children:`설정 후 고객 식별자를 변경할 수 있나요?`}),`\n`,_jsxs(_components.p,{children:[`예. Vendo 앱의 `,_jsx(_components.strong,{children:`Settings > Customer Identifier`}),`에서 설정을 업데이트합니다. 기존 사용자가 이미 이전 방법으로 식별된 경우 식별자를 변경하면 별도의 사용자 프로필이 생성될 수 있습니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`vendo-통합이-모바일-앱을-지원하나요`,children:`Vendo 통합이 모바일 앱을 지원하나요?`}),`\n`,_jsx(_components.p,{children:`Vendo 통합은 Shopify 스토어프론트와 웹 푸시에 초점을 맞춥니다. 모바일 앱도 있는 경우, 사용자 프로필이 일관되게 유지되도록 Vendo에서 선택하는 식별자가 모바일 앱에서 사용하는 식별자와 일치하는지 확인하세요.`}),`\n`,_jsx(Heading,{level:`3`,id:`방문자가-식별되지-않으면-어떻게-되나요`,children:`방문자가 식별되지 않으면 어떻게 되나요?`}),`\n`,_jsx(_components.p,{children:`식별되지 않은 방문자의 이벤트는 OneSignal로 전송되지 않습니다. 방문자가 자신을 식별하면(푸시 구독, 로그인, 뉴스레터 가입 또는 결제 완료), Vendo가 이벤트를 보내기 시작합니다. 이 식별된 사용자 전용 접근 방식은 중복 사용자를 방지하고 깔끔한 데이터를 보장합니다.`}),`\n`,_jsx(Heading,{level:`3`,id:`vendo가-식별된-사용자-전용-접근-방식을-사용하는-이유는-무엇인가요`,children:`Vendo가 식별된 사용자 전용 접근 방식을 사용하는 이유는 무엇인가요?`}),`\n`,_jsx(_components.p,{children:`익명 방문자를 추적하면 적절하게 병합할 수 없는 중복 OneSignal 사용자가 생성되어 사용자 수 부풀리기와 데이터 단편화가 발생합니다. 식별된 사용자 전용 접근 방식은 모든 OneSignal 사용자가 실제로 존재하고 실행 가능함을 보장합니다.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`관련-페이지`,children:`관련 페이지`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Keys \u0026 IDs`,icon:`key`,href:`/docs/ko/keys-and-ids`,children:_jsx(_components.p,{children:`OneSignal App ID와 REST API 키를 찾습니다.`})}),_jsx(Card,{title:`사용자 지정 이벤트`,icon:`bolt`,href:`/docs/ko/custom-events`,children:_jsx(_components.p,{children:`사용자 행동을 추적하고 Shopify 이벤트를 기반으로 자동화를 트리거합니다.`})}),_jsx(Card,{title:`웹 푸시 설정`,icon:`globe`,href:`/docs/ko/web-push-setup`,children:_jsx(_components.p,{children:`Shopify 스토어의 웹 푸시 알림을 설정합니다.`})}),_jsx(Card,{title:`웹 권한 프롬프트`,icon:`bell`,href:`/docs/ko/permission-requests`,children:_jsx(_components.p,{children:`방문자에게 웹 푸시 권한을 요청하는 방법과 시기를 구성합니다.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Shopify 웹 푸시 통합","description":"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.","keywords":["Shopify","Vendo","통합","웹 푸시","사용자 지정 이벤트","고객 태그","이커머스","장바구니 이탈"],"href":"/docs/ko/shopify"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"필수 조건","slug":"필수-조건","depth":2,"children":[]},{"title":"OneSignal 설정","slug":"onesignal-설정","depth":2,"children":[]},{"title":"Vendo 설정","slug":"vendo-설정","depth":2,"children":[]},{"title":"추적","slug":"추적","depth":2,"children":[{"title":"사용자 식별","slug":"사용자-식별","depth":3,"children":[]},{"title":"아이덴티티 병합","slug":"아이덴티티-병합","depth":4,"children":[]},{"title":"고객 태그","slug":"고객-태그","depth":3,"children":[]},{"title":"아이덴티티 및 프로필","slug":"아이덴티티-및-프로필","depth":4,"children":[]},{"title":"마케팅 동의","slug":"마케팅-동의","depth":4,"children":[]},{"title":"커머스 통계","slug":"커머스-통계","depth":4,"children":[]},{"title":"어트리뷰션 태그","slug":"어트리뷰션-태그","depth":4,"children":[]},{"title":"세그먼트 멤버십","slug":"세그먼트-멤버십","depth":4,"children":[]},{"title":"클라이언트 사이드 이벤트","slug":"클라이언트-사이드-이벤트","depth":3,"children":[]},{"title":"서버 사이드 이벤트","slug":"서버-사이드-이벤트","depth":3,"children":[]}]},{"title":"플랫폼 세부 정보","slug":"플랫폼-세부-정보","depth":2,"children":[]},{"title":"사용 사례","slug":"사용-사례","depth":2,"children":[{"title":"이탈 장바구니 복구","slug":"이탈-장바구니-복구","depth":3,"children":[]},{"title":"주문 상태 업데이트","slug":"주문-상태-업데이트","depth":3,"children":[]},{"title":"VIP 고객 인게이지먼트","slug":"vip-고객-인게이지먼트","depth":3,"children":[]},{"title":"재참여 캠페인","slug":"재참여-캠페인","depth":3,"children":[]}]},{"title":"호환 소스","slug":"호환-소스","depth":2,"children":[]},{"title":"테스트","slug":"테스트","depth":2,"children":[]},{"title":"문제 해결","slug":"문제-해결","depth":2,"children":[{"title":"서비스 워커가 404를 반환","slug":"서비스-워커가-404를-반환","depth":3,"children":[]},{"title":"OneSignal 설정 중 “Typical Site”가 선택됨","slug":"onesignal-설정-중-“typical-site”가-선택됨","depth":3,"children":[]},{"title":"푸시 프롬프트가 나타나지 않음","slug":"푸시-프롬프트가-나타나지-않음","depth":3,"children":[]},{"title":"OneSignal에 태그가 나타나지 않음","slug":"onesignal에-태그가-나타나지-않음","depth":3,"children":[]},{"title":"이벤트가 트리거되지 않음","slug":"이벤트가-트리거되지-않음","depth":3,"children":[]},{"title":"알림이 “전달됨”으로 표시되지만 나타나지 않음","slug":"알림이-“전달됨”으로-표시되지만-나타나지-않음","depth":3,"children":[]}]},{"title":"FAQ","slug":"faq","depth":2,"children":[{"title":"설정 후 고객 식별자를 변경할 수 있나요?","slug":"설정-후-고객-식별자를-변경할-수-있나요","depth":3,"children":[]},{"title":"Vendo 통합이 모바일 앱을 지원하나요?","slug":"vendo-통합이-모바일-앱을-지원하나요","depth":3,"children":[]},{"title":"방문자가 식별되지 않으면 어떻게 되나요?","slug":"방문자가-식별되지-않으면-어떻게-되나요","depth":3,"children":[]},{"title":"Vendo가 식별된 사용자 전용 접근 방식을 사용하는 이유는 무엇인가요?","slug":"vendo가-식별된-사용자-전용-접근-방식을-사용하는-이유는-무엇인가요","depth":3,"children":[]}]},{"title":"관련 페이지","slug":"관련-페이지","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/onesignal/e069c1b9f3157e14/hotjar-koala.js","/_mintlify/custom/onesignal/3e5d03885ab32f49/intercom.js","/_mintlify/custom/onesignal/dbb7af4794d1b586/munchkin-marketo.js"],"subdomain":"onesignal","siteName":"OneSignal","title":"Shopify 웹 푸시 통합 - OneSignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/shopify","matchLevel":1},"cn":{"href":"/docs/cn/shopify","matchLevel":1},"ko":{"href":"/docs/ko/shopify","matchLevel":0},"ja":{"href":"/docs/ja/shopify","matchLevel":1},"tr":{"href":"/docs/tr/shopify","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/shopify","matchLevel":1},"es":{"href":"/docs/es/shopify","matchLevel":1},"fr":{"href":"/docs/fr/shopify","matchLevel":1}}},"lastModified":"2026-08-31T16:02:11.724Z","originalFileLocation":"docs/ko/shopify.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Shopify 웹 푸시 통합 - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/ko/shopify\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=%EC%9B%B9+%ED%91%B8%EC%8B%9C\u0026amp;title=Shopify+%EC%9B%B9+%ED%91%B8%EC%8B%9C+%ED%86%B5%ED%95%A9\u0026amp;description=Vendo+%ED%86%B5%ED%95%A9%EC%9C%BC%EB%A1%9C+Shopify+%EC%8A%A4%ED%86%A0%EC%96%B4%EB%A5%BC+OneSignal%EC%97%90+%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94+%EC%84%A4%EC%A0%95+%EA%B3%BC%EC%A0%95%EC%9D%84+%EC%95%88%EB%82%B4%ED%95%A9%EB%8B%88%EB%8B%A4.+%ED%85%8C%EB%A7%88+%EC%BD%94%EB%93%9C+%EC%88%98%EC%A0%95+%EC%97%86%EC%9D%B4+%EC%9B%B9+%ED%91%B8%EC%8B%9C+%EC%95%8C%EB%A6%BC%EC%9D%84+%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B3%A0+%EA%B3%A0%EA%B0%9D+%ED%83%9C%EA%B7%B8%2C+%EC%84%9C%EB%B2%84+%EC%82%AC%EC%9D%B4%EB%93%9C+%EC%BB%A4%EB%A8%B8%EC%8A%A4+%EC%9D%B4%EB%B2%A4%ED%8A%B8%2C+%EC%9E%A5%EB%B0%94%EA%B5%AC%EB%8B%88+%EC%9D%B4%ED%83%88+%EB%93%B1+%ED%96%89%EB%8F%99+%ED%83%80%EA%B2%9F%ED%8C%85+%EC%BA%A0%ED%8E%98%EC%9D%B8%EC%9D%84+%EA%B5%AC%EC%B6%95%ED%95%98%EC%84%B8%EC%9A%94.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=8ab5901f67f1540d111aa40259070917d53c8cbe47965d1d4c454ede55547597\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Shopify 웹 푸시 통합 - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=%EC%9B%B9+%ED%91%B8%EC%8B%9C\u0026amp;title=Shopify+%EC%9B%B9+%ED%91%B8%EC%8B%9C+%ED%86%B5%ED%95%A9\u0026amp;description=Vendo+%ED%86%B5%ED%95%A9%EC%9C%BC%EB%A1%9C+Shopify+%EC%8A%A4%ED%86%A0%EC%96%B4%EB%A5%BC+OneSignal%EC%97%90+%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94+%EC%84%A4%EC%A0%95+%EA%B3%BC%EC%A0%95%EC%9D%84+%EC%95%88%EB%82%B4%ED%95%A9%EB%8B%88%EB%8B%A4.+%ED%85%8C%EB%A7%88+%EC%BD%94%EB%93%9C+%EC%88%98%EC%A0%95+%EC%97%86%EC%9D%B4+%EC%9B%B9+%ED%91%B8%EC%8B%9C+%EC%95%8C%EB%A6%BC%EC%9D%84+%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B3%A0+%EA%B3%A0%EA%B0%9D+%ED%83%9C%EA%B7%B8%2C+%EC%84%9C%EB%B2%84+%EC%82%AC%EC%9D%B4%EB%93%9C+%EC%BB%A4%EB%A8%B8%EC%8A%A4+%EC%9D%B4%EB%B2%A4%ED%8A%B8%2C+%EC%9E%A5%EB%B0%94%EA%B5%AC%EB%8B%88+%EC%9D%B4%ED%83%88+%EB%93%B1+%ED%96%89%EB%8F%99+%ED%83%80%EA%B2%9F%ED%8C%85+%EC%BA%A0%ED%8E%98%EC%9D%B8%EC%9D%84+%EA%B5%AC%EC%B6%95%ED%95%98%EC%84%B8%EC%9A%94.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=8ab5901f67f1540d111aa40259070917d53c8cbe47965d1d4c454ede55547597\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneSignal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A3DB3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://documentation.onesignal.com/docs/ko/shopify\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/ko/shopify.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/shopify\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/shopify\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107\"}},{\"@type\":\"WebSite\",\"@id\":\"https://documentation.onesignal.com#website\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/ko/shopify#webpage\",\"url\":\"https://documentation.onesignal.com/docs/ko/shopify\",\"name\":\"Shopify 웹 푸시 통합\",\"description\":\"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\",\"dateModified\":\"2026-08-31T16:02:11.724Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/ko/shopify#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/ko/shopify#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"메시지 채널\",\"item\":\"https://documentation.onesignal.com/docs/ko/channel-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"푸시\",\"item\":\"https://documentation.onesignal.com/docs/ko/push\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"웹 푸시\",\"item\":\"https://documentation.onesignal.com/docs/ko/web-push-setup\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Shopify 웹 푸시 통합\",\"item\":\"https://documentation.onesignal.com/docs/ko/shopify\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/ko/shopify#article\",\"headline\":\"Shopify 웹 푸시 통합\",\"name\":\"Shopify 웹 푸시 통합\",\"description\":\"Vendo 통합으로 Shopify 스토어를 OneSignal에 연결하는 설정 과정을 안내합니다. 테마 코드 수정 없이 웹 푸시 알림을 배포하고 고객 태그, 서버 사이드 커머스 이벤트, 장바구니 이탈 등 행동 타겟팅 캠페인을 구축하세요.\",\"url\":\"https://documentation.onesignal.com/docs/ko/shopify\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/ko/shopify#webpage\"},\"dateModified\":\"2026-08-31T16:02:11.724Z\",\"keywords\":\"Shopify, Vendo, 통합, 웹 푸시, 사용자 지정 이벤트, 고객 태그, 이커머스, 장바구니 이탈\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneSignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/docs/en/shopify"}]},{"language":"cn","pages":[{"title":"cn","href":"/docs/cn/shopify"}]},{"language":"ko","tabs":[{"tab":"홈","pages":[{"title":"홈","href":"/docs/ko/home"}]},{"tab":"사용자 가이드","groups":[{"group":"시작하기 \u0026 설정","pages":[{"title":"OneSignal 시작하기","href":"/docs/ko/quickstart-guide"},{"group":"OneSignal 대시보드","pages":[{"title":"앱, 조직 및 계정","href":"/docs/ko/apps-organizations"},{"title":"팀 멤버","href":"/docs/ko/manage-team-members"},{"title":"키 및 ID","href":"/docs/ko/keys-and-ids"},{"title":"감사 로그","href":"/docs/ko/audit-logs"},{"title":"사용량 및 청구","href":"/docs/ko/billing-faq"},{"title":"비활성화된 앱 및 조직","href":"/docs/ko/disabled-apps"}]},{"title":"OneSignal로 마이그레이션","href":"/docs/ko/migrating-to-onesignal"}]},{"group":"메시지 채널","pages":[{"title":"채널 설정","href":"/docs/ko/channel-setup"},{"group":"푸시","pages":[{"title":"푸시 개요","href":"/docs/ko/push"},{"group":"모바일 푸시","pages":[{"title":"모바일 푸시 설정","href":"/docs/ko/mobile-push-setup"},{"title":"푸시 권한 요청","href":"/docs/ko/prompt-for-push-permissions"},{"title":"iOS 임시 푸시 알림","href":"/docs/ko/ios-provisional-push-notifications"},{"title":"Android 알림 카테고리","href":"/docs/ko/android-notification-categories"},{"title":"데이터 및 백그라운드 알림","href":"/docs/ko/data-notifications"},{"title":"VoIP 푸시 알림","href":"/docs/ko/voip-notifications"}]},{"group":"웹 푸시","pages":[{"title":"웹 푸시 설정","href":"/docs/ko/web-push-setup"},{"title":"Web 권한 프롬프트","href":"/docs/ko/permission-requests"},{"title":"웹 푸시 FAQ","href":"/docs/ko/web-push-setup-faq"},{"title":"웹 푸시 브라우저 동작","href":"/docs/ko/browser-behavior-and-unsubscribes"},{"title":"웹 푸시를 위한 OneSignal WordPress 플러그인 설정","href":"/docs/ko/wordpress"},{"title":"WordPress 문제 해결","description":"브라우저 호환성(Chrome, Firefox, Safari), 플러그인 통합, CDN 또는 캐싱 충돌 해결을 포함하여 WordPress의 OneSignal 웹 푸시 알림과 관련된 일반적인 설정 문제 해결을 위한 포괄적인 가이드입니다.","href":"/docs/ko/troubleshooting-wordpress-web-push"},{"title":"Shopify 웹 푸시 통합","href":"/docs/ko/shopify"}]},{"group":"푸시 기능","pages":[{"title":"알림 아이콘","description":"Android, iOS, 웹에서 기본 및 메시지별 푸시 알림 아이콘을 설정하는 방법을 안내합니다. 소형·대형 아이콘 크기 및 형식 요구 사항, 흰색 사각형 문제를 방지하는 투명도 규칙, Android 웹 푸시 뱃지 아이콘까지 다룹니다.","href":"/docs/ko/notification-icons"},{"title":"알림 이미지 및 리치 미디어","href":"/docs/ko/rich-media"},{"title":"알림 사운드","href":"/docs/ko/notification-sounds"},{"title":"알림 배지","href":"/docs/ko/badges"},{"title":"푸시 알림용 액션 버튼","href":"/docs/ko/action-buttons"},{"title":"푸시 빈도 제한","href":"/docs/ko/frequency-capping"},{"title":"푸시 제한","href":"/docs/ko/throttling"},{"title":"iOS: 집중 모드 및 중단 수준","href":"/docs/ko/ios-focus-modes-and-interruption-levels"},{"title":"iOS: 관련성 점수","href":"/docs/ko/ios-relevance-score"}]},{"group":"푸시 분석 \u0026 문제 해결","pages":[{"title":"푸시 메시지 리포트","href":"/docs/ko/push-notification-message-reports"},{"title":"확인된 전달","href":"/docs/ko/confirmed-delivery"},{"title":"알림 CTR","href":"/docs/ko/notification-ctr"},{"title":"모바일 푸시: 알림이 표시되지 않거나 지연됨","href":"/docs/ko/notifications-show-successful-but-are-not-being-shown"},{"title":"Web push: 알림이 표시되지 않음","href":"/docs/ko/notifications-not-shown-web-push"},{"title":"알림 이미지가 표시되지 않음","href":"/docs/ko/notification-images-not-showing"},{"title":"중복 알림","href":"/docs/ko/duplicated-notifications"},{"title":"FCM 만료 토큰 FAQ","href":"/docs/ko/fcm-expired-token-faq"}]}]},{"group":"인앱 메시지","pages":[{"title":"인앱 개요","href":"/docs/ko/in-app-messages-setup"},{"title":"인앱 트리거","href":"/docs/ko/iam-triggers"},{"title":"인앱 클릭 작업","href":"/docs/ko/iam-click-actions"},{"group":"인앱 디자인","pages":[{"title":"드래그 앤 드롭으로 인앱 메시지 디자인하기","href":"/docs/ko/design-your-in-app-message"},{"title":"HTML로 인앱 메시지 디자인하기","href":"/docs/ko/design-your-in-app-message-with-html"},{"title":"인앱 메시지 템플릿 및 퀵스타트","href":"/docs/ko/in-app-html-templates"},{"title":"인앱 메시지 JavaScript API 레퍼런스","href":"/docs/ko/in-app-message-api"}]},{"title":"인앱 메시지 보고서","href":"/docs/ko/in-app-message-reports"},{"title":"인앱 문제 해결","href":"/docs/ko/in-app-message-troubleshooting"}]},{"group":"이메일","pages":[{"title":"이메일 개요","href":"/docs/ko/email-messaging"},{"group":"Email setup","pages":[{"title":"이메일 설정","href":"/docs/ko/email-setup"},{"title":"이메일 DNS 구성","href":"/docs/ko/email-dns-configuration"},{"title":"발신자","href":"/docs/ko/senders"},{"title":"트랜잭션 이메일","href":"/docs/ko/setup-transactional-emails"},{"title":"사용자 지정 이메일 수신 거부 페이지 만들기","href":"/docs/ko/create-custom-unsubscribe-page"}]},{"group":"이메일 전달 가능성","pages":[{"title":"이메일 메시지 보고서","href":"/docs/ko/email-message-reports"},{"title":"이메일 전달 가능성","href":"/docs/ko/email-deliverability"},{"title":"이메일 평판 모범 사례","href":"/docs/ko/email-reputation-best-practices"},{"title":"이메일 주소 유효성 검사","href":"/docs/ko/email-address-validation"},{"title":"이메일 준비 가이드","href":"/docs/ko/email-warm-up"},{"title":"Google Postmaster Tools","href":"/docs/ko/google-postmaster-tools"},{"title":"차단 목록","href":"/docs/ko/suppressions"},{"title":"이메일 문제 해결","href":"/docs/ko/email-troubleshooting"}]},{"group":"이메일 메시지","pages":[{"title":"드래그 앤 드롭으로 이메일 디자인하기","href":"/docs/ko/design-emails-with-drag-and-drop"},{"title":"HTML로 이메일 디자인하기","href":"/docs/ko/design-emails-with-html"},{"title":"이메일 구독 취소 링크 및 헤더","href":"/docs/ko/unsubscribe-links-email-subscriptions"},{"title":"이메일 템플릿 전달","href":"/docs/ko/email-template-forwarding"}]}]},{"group":"SMS 및 RCS","pages":[{"title":"SMS, MMS, RCS 개요","href":"/docs/ko/sms-messaging"},{"title":"Rich Communication Services (RCS)","href":"/docs/ko/rcs-messaging"},{"group":"SMS 설정","pages":[{"title":"SMS 설정","href":"/docs/ko/sms-setup"},{"title":"발신자 리소스 신청 및 국가별 요구사항","sidebarTitle":"발신자 리소스 신청","href":"/docs/ko/sms-registration-requirements"},{"title":"SMS 옵트인 및 수집","href":"/docs/ko/sms-opt-in-and-collection"},{"title":"SMS 동의 키워드 관리","href":"/docs/ko/sms-consent-keyword-management"},{"title":"SMS 키워드","href":"/docs/ko/keywords"}]},{"group":"SMS 메시지","pages":[{"title":"SMS 메시지 리포트","href":"/docs/ko/sms-message-reports"},{"title":"일회용 비밀번호(OTP)","sidebarTitle":"일회용 비밀번호","href":"/docs/ko/sms-verify"}]}]},{"group":"실시간 현황","pages":[{"title":"Live Activities","href":"/docs/ko/live-activities"},{"title":"Live Activities 분석","href":"/docs/ko/live-activities-analytics"}]},{"group":"기능","pages":[{"title":"A/B 테스팅","href":"/docs/ko/ab-testing"},{"title":"다국어 메시징","href":"/docs/ko/multi-language-messaging"},{"group":"메시지 개인화","pages":[{"title":"개인화","href":"/docs/ko/message-personalization"},{"title":"Liquid 구문 사용","href":"/docs/ko/using-liquid-syntax"},{"title":"데이터 피드","href":"/docs/ko/data-feeds"},{"title":"Custom Events로 개인화하기","href":"/docs/ko/personalization-custom-event"},{"title":"속성을 사용한 개인화","href":"/docs/ko/personalization-properties-and-tags"},{"title":"API custom_data로 메시지 개인화하기","href":"/docs/ko/personalization-api-custom-data"},{"title":"CSV를 사용한 동적 콘텐츠","href":"/docs/ko/dynamic-content"}]},{"group":"URL, 링크, 딥 링크","pages":[{"title":"URL, 링크 및 딥 링크","href":"/docs/ko/links"},{"title":"딥 링킹","href":"/docs/ko/deep-linking"},{"title":"이메일 구독 취소 링크 및 헤더","href":"/docs/ko/unsubscribe-links-email-subscriptions"}]},{"title":"리타겟팅 메시지","href":"/docs/ko/retargeting"},{"title":"템플릿","href":"/docs/ko/templates"},{"title":"레이블","href":"/docs/ko/labels"}]}]},{"group":"Journeys","pages":[{"title":"Journey 개요","href":"/docs/ko/journeys-overview"},{"group":"Journey 기능","pages":[{"title":"Journey 설정","href":"/docs/ko/journeys-settings"},{"title":"Journey 메시지","href":"/docs/ko/journeys-messages"},{"title":"Journey 액션","href":"/docs/ko/journeys-actions"},{"title":"Journey Webhook","href":"/docs/ko/journeys-webhook"},{"title":"Journey Webhook을 통해 WhatsApp 메시지 보내기","href":"/docs/ko/sending-whatsapp-messages-via-journey-webhooks"},{"title":"Journeys 관리","href":"/docs/ko/managing-journeys"},{"title":"Journey 분석","href":"/docs/ko/journeys-analytics"}]},{"title":"Journey 예시","href":"/docs/ko/journeys-examples"}]},{"group":"오디언스 \u0026 사용자 지정 이벤트","pages":[{"title":"세그먼트","href":"/docs/ko/segmentation"},{"group":"Users \u0026 Subscriptions","pages":[{"title":"사용자","href":"/docs/ko/users"},{"title":"구독","href":"/docs/ko/subscriptions"},{"title":"별칭","href":"/docs/ko/aliases"},{"title":"테스트 사용자","href":"/docs/ko/test-users"},{"title":"사용자 삭제","href":"/docs/ko/delete-users"}]},{"group":"사용자 지정 이벤트","pages":[{"title":"사용자 지정 이벤트","href":"/docs/ko/custom-events"},{"title":"사용자 지정 이벤트 저장 및 보존","href":"/docs/ko/custom-event-storage"}]},{"group":"태그","pages":[{"title":"태그","href":"/docs/ko/add-user-data-tags"},{"title":"태그: 시간 연산자","href":"/docs/ko/time-operators"}]},{"title":"가져오기","href":"/docs/ko/import"}]},{"group":"분석 \u0026 통합","pages":[{"group":"분석","pages":[{"title":"분석 개요","href":"/docs/ko/analytics-overview"},{"title":"목표","sidebarTitle":"목표","href":"/docs/ko/goals"},{"title":"템플릿 분석","href":"/docs/ko/template-analytics"},{"title":"데이터 내보내기","href":"/docs/ko/exporting-data"},{"title":"사용자 지정 Outcomes","href":"/docs/ko/custom-outcomes"},{"title":"전환 지표","href":"/docs/ko/conversion-metrics"},{"title":"참여 트렌드","href":"/docs/ko/engagement-analytics"},{"title":"구독 트렌드","href":"/docs/ko/subscription-trends"},{"group":"리텐션 지표","pages":[{"title":"리텐션 지표","href":"/docs/ko/retention-metrics"},{"title":"리텐션 곡선 해석","href":"/docs/ko/interpreting-retention-curves"}]},{"title":"지표 용어집","href":"/docs/ko/analytics-metrics-glossary"}]},{"group":"이벤트 스트림","pages":[{"title":"이벤트 스트림","href":"/docs/ko/event-streams"},{"title":"이벤트 스트림 데이터 참조","sidebarTitle":"이벤트 스트림 데이터","href":"/docs/ko/event-streams-data"},{"title":"인앱 메시지 이벤트 스트림","href":"/docs/ko/iam-event-streams"},{"title":"Event Streams와 Google Sheets 통합","href":"/docs/ko/google-sheets-integration-with-event-streams"}]},{"group":"통합","pages":[{"title":"통합 개요","href":"/docs/ko/integrations"},{"title":"데이터 웨어하우스, DMP 및 CRM 통합","href":"/docs/ko/database-dmp-crm-integration"},{"group":"OneSignal을 데이터 소스로 사용","pages":[{"title":"Amplitude","href":"/docs/ko/amplitude"},{"title":"Databricks","href":"/docs/ko/databricks"},{"title":"Google BigQuery","href":"/docs/ko/bigquery"},{"title":"Mixpanel","href":"/docs/ko/mixpanel"},{"title":"Snowflake","href":"/docs/ko/snowflake"},{"title":"Segment (Twilio)","href":"/docs/ko/segment-onesignal-integration"}]},{"group":"OneSignal을 데이터 목적지로 사용","pages":[{"title":"Adobe Audience Manager","href":"/docs/ko/adobe-audience-manager"},{"title":"AlloyDB","href":"/docs/ko/alloydb"},{"title":"Amazon Athena","href":"/docs/ko/amazon-athena"},{"title":"Amazon S3","href":"/docs/ko/s3"},{"title":"Amplitude","href":"/docs/ko/amplitude"},{"title":"Apache Kafka","href":"/docs/ko/kafka"},{"title":"Amazon Redshift","href":"/docs/ko/amazon-redshift"},{"title":"Azure Synapse","href":"/docs/ko/azure-synapse"},{"title":"ClickHouse","href":"/docs/ko/clickhouse"},{"title":"Confluent Cloud","href":"/docs/ko/confluent-cloud"},{"title":"Databricks","href":"/docs/ko/databricks"},{"title":"Elasticsearch","href":"/docs/ko/elasticsearch"},{"title":"Google BigQuery","href":"/docs/ko/bigquery"},{"title":"Google Cloud SQL","href":"/docs/ko/google-cloud-sql"},{"title":"Google Sheets","href":"/docs/ko/google-sheets"},{"title":"Greenplum","href":"/docs/ko/greenplum"},{"title":"HubSpot","href":"/docs/ko/hubspot"},{"title":"Materialize","href":"/docs/ko/materialize"},{"title":"Microsoft Fabric","href":"/docs/ko/microsoft-fabric"},{"title":"Mixpanel","href":"/docs/ko/mixpanel"},{"title":"MotherDuck","href":"/docs/ko/motherduck"},{"title":"MySQL","href":"/docs/ko/mysql"},{"title":"PostgreSQL","href":"/docs/ko/postgresql"},{"title":"Pub/Sub","href":"/docs/ko/google-pubsub"},{"title":"SingleStore","href":"/docs/ko/singlestore"},{"title":"Snowflake","href":"/docs/ko/snowflake"},{"title":"SQL Server","href":"/docs/ko/sql-server"},{"title":"Starburst Enterprise","href":"/docs/ko/starburst-enterprise"},{"title":"Starburst Galaxy","href":"/docs/ko/starburst-galaxy"},{"title":"Trino","href":"/docs/ko/trino"},{"title":"Segment (Twilio)","href":"/docs/ko/segment-onesignal-integration"}]},{"group":"소비자 추적","pages":[{"title":"RevenueCat","href":"/docs/ko/revenuecat"},{"title":"Adjust","href":"/docs/ko/adjust"},{"title":"BlueConic","href":"/docs/ko/blueconic"}]},{"title":"OneSignal과 통합 구축: 파트너 가이드","href":"/docs/ko/building-an-integration-with-onesignal-partner-guide"}]}]},{"group":"개인 정보 보호 \u0026 보안","pages":[{"group":"보안 자격 증명","pages":[{"title":"SOC 2 Type II","href":"/docs/ko/soc-2-type-ii"},{"title":"ISO 27001","href":"/docs/ko/iso27001"},{"title":"HIPAA","href":"/docs/ko/hipaa"}]},{"group":"데이터 개인 정보 보호 \u0026 규정 준수","pages":[{"title":"GDPR 및 개인 권리","href":"/docs/ko/gdpr-compliance"},{"title":"EU-US 데이터 개인 정보 보호 프레임워크","href":"/docs/ko/eu-us-data-privacy-framework"},{"title":"이메일 규정 준수","href":"/docs/ko/email-compliance"},{"title":"SMS 규제 준수","href":"/docs/ko/sms-regulatory-compliance"},{"title":"Apple 앱 개인정보 보호 요구 사항","href":"/docs/ko/apple-app-privacy-requirements"},{"title":"Google Play 데이터 보안 요구 사항","href":"/docs/ko/google-play-data-safety-requirements"},{"title":"데이터 수집 및 보안 FAQ","href":"/docs/ko/data-questions"},{"title":"OneSignal SDK가 수집하는 데이터","href":"/docs/ko/data-collected-by-the-onesignal-sdk"},{"title":"개인 데이터 처리","href":"/docs/ko/handling-personal-data"}]},{"group":"인증 및 보안","pages":[{"title":"2단계 인증","href":"/docs/ko/2-step-authentication"},{"title":"Single Sign-On (SSO)","href":"/docs/ko/sso"}]}]}]},{"tab":"개발자 가이드","pages":[{"title":"개발자 가이드","href":"/docs/ko/developers"}]},{"tab":"튜토리얼","pages":[{"title":"튜토리얼","href":"/docs/ko/tutorials"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/rest-api-overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]}],"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://onesignal.com/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/OneSignal"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@onesignalofficial/playlists"}]}},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/shopify"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/shopify"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/shopify"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/shopify"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/shopify"}]}]},"basePath":"","title":"Shopify 웹 푸시 통합 - OneSignal","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}