Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.
This article describes how to use the MoEngage Web SDK in WebView inside a Mobile App.
WebSDK uses browser storage (LocalStorage and IndexedDB) to queue and persist events. This storage is not enabled by default in a WebView, unlike a regular browser tab.
If storage is not explicitly enabled on both Android and iOS, the SDK fails to queue events. This failure is silent — there is no user-facing error — but appears in your app’s error monitoring (for example, Bugsnag or Sentry) as No available storage method found, sometimes followed by MOE_QUEUE_TIMEOUT: exceeded 10000ms.
For Mobile Apps, you must explicitly enable JavaScript and browser storage — both are required, not just JavaScript.
Step 1: Configure Your WebViewWithin your app, locate the WebView component for which you wish to enable JavaScript. Ensure you have the proper imports:
Step 2: Enable JavaScript and DomStorage PermissionsUsing the WebSettings class, enable JavaScript and DOM storage:
WebView myWebView = (WebView) findViewById(R.id.webview);WebSettings webSettings = myWebView.getSettings();webSettings.setJavaScriptEnabled(true);webSettings.setDomStorageEnabled(true); // Required for LocalStorage — without this, the SDK cannot queue events
setDomStorageEnabled(true) covers LocalStorage/SessionStorage. IndexedDB is generally available by default on modern Chromium-based WebView once DOM storage is enabled, but some custom WebView builds or privacy-hardened configurations may restrict it independently. If you continue to see storage errors after enabling DOM storage, verify IndexedDB availability directly inside the WebView session using chrome://inspect.
Step 3: Advanced SettingsFor more control, you may use additional settings such as:
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // Allow JS to open windows without user interaction
Validate the URL you load in WebView before enabling JavaScript navigation, to avoid executing untrusted scripts.
Step 1: Import WebKitFirst, ensure you’ve imported the WebKit framework in your ViewController:
import WebKit
Step 2: Create a WKWebView with Persistent StorageCreate an instance of WKWebView, and make sure its WKWebViewConfiguration uses a persistent website data store rather than a non-persistent/ephemeral one. A non-persistent data store blocks the storage APIs (LocalStorage/IndexedDB) the SDK depends on to queue events, and discards any SDK data once the WebView is deallocated.
var webView: WKWebView!let configuration = WKWebViewConfiguration()configuration.websiteDataStore = WKWebsiteDataStore.default() // Use .default(), not .nonPersistent()webView = WKWebView(frame: .zero, configuration: configuration)view.addSubview(webView)
Step 3: Enable JavaScriptJavaScript is enabled by default on WKWebView. To verify or change the setting, use WKWebpagePreferences.allowsContentJavaScript on iOS 14 and later, and fall back to WKPreferences.javaScriptEnabled for earlier versions:
Before raising a support ticket for missing or delayed events in a WebView session, confirm the following inside the actual WebView (not a regular browser tab — WebView storage behavior can differ even on the same device):
Android: setDomStorageEnabled(true) is set on the specific WebView instance loading the site.
iOS: the WKWebView is configured with WKWebsiteDataStore.default(), not a non-persistent store.
IndexedDB is accessible inside the WebView session — check via remote inspector (chrome://inspect for Android, Safari Web Inspector for iOS) that window.indexedDB is defined and usable.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MoEngage","colors":{"primary":"#2E69FF","light":"#6691FF","dark":"#2554CC"},"logo":{"light":"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/light.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=28ca5909311cb6ffe01738e1503b5e64","dark":"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/dark.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=728a767d8fb8d3434575a28de18d08c5","href":"https://www.moengage.com/docs/"},"favicon":"https://mintcdn.com/moengage/bJi_ZHRHKldZCdcW/logo/favicon.svg?fit=max\u0026auto=format\u0026n=bJi_ZHRHKldZCdcW\u0026q=85\u0026s=9d13744d3b616913967983f324947bb5","api":{"examples":{"languages":["curl"]}},"appearance":{"default":"system"},"background":{"decoration":"gradient","color":{"light":"#FFFFFF","dark":"#121212"}},"navbar":{"links":[{"href":"/user-guide/contact-support/raise-a-support-ticket-through-moengage-dashboard","label":"Support"},{"href":"https://www.moengage.com/request-demo","label":"Request Demo"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.moengage.com/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/moengage","x":"https://x.com/i/flow/login?redirect_after_login=%2Fmoengage","youtube":"https://www.youtube.com/c/MoEngage_Global","facebook":"https://www.facebook.com/moengage","github":"https://github.com/moengage"},"links":[{"header":"Support","items":[{"label":"Contact Support","href":"https://www.moengage.com/docs/user-guide/contact-support/raise-a-support-ticket-through-moengage-dashboard"},{"label":"AIRA Support Bot","href":"https://www.moengage.com/docs/user-guide/contact-support/aira-support-bot/aira-overview"},{"label":"Suggest a Feature","href":"https://www.moengage.com/docs/user-guide/contact-support/suggest-a-feature"},{"label":"System Status","href":"https://status.moengage.com"}]},{"header":"Learn","items":[{"label":"MoEngage Academy","href":"https://academy.moengage.com/student/catalog"},{"label":"Use Cases","href":"https://www.moengage.com/docs/use-cases/introduction"},{"label":"Release Notes","href":"https://www.moengage.com/docs/release-notes/subscribe-to-release-notes"},{"label":"Blog","href":"https://www.moengage.com/blog"}]},{"header":"For AI Tools","items":[{"label":"Setup Guide","href":"https://www.moengage.com/docs/documentation-access-to-agents"},{"label":"llms.txt","href":"https://www.moengage.com/docs/llms.txt"},{"label":"llms-full.txt","href":"https://www.moengage.com/docs/llms-full.txt"}]}]},"seo":{"metatags":{"google-site-verification":"ICNaPDX9oefbF09W1b5_U9PDnlkyfyKSRbIap6_dW6o"},"indexing":"all"},"fonts":{"heading":{"family":"circular","source":"https://app-cdn.moengage.com/images/Fonts/CircularXXWeb-Regular.woff2","format":"woff2"},"body":{"family":"circular","source":"https://app-cdn.moengage.com/images/Fonts/CircularXXWeb-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"interaction":{"drilldown":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"ja","href":"ja"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moengage","hasAudioNarration":false,"actualSubdomain":"moengage","customDomains":["moengage.com"],"gitSource":{"type":"github","owner":"moengage","repo":"moengage-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecc143001d7bfa48398d64","collectionId":"2b0b7da9-5471-4730-b53e-9284fce40153","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecc143001d7bfa48398d64"},"feedback":{"thumbs":true,"edits":false,"contextualFeedback":{"allowEmail":true},"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed9e350e1747ee9b9b0553","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"en","tag":"Guide","count":1188},{"language":"ja","tag":"ガイド","count":1180},{"language":"en","tag":"User Guide","count":799},{"language":"ja","tag":"ユーザーガイド","count":798},{"language":"en","tag":"Campaigns and Channels","count":437},{"language":"ja","tag":"キャンペーンとチャネル","count":437},{"language":"en","tag":"Partner Integrations","count":390},{"language":"ja","tag":"パートナー統合","count":383},{"language":"en","tag":"SDKs","count":338},{"language":"en","tag":"Developer Guide (SDKs)","count":327},{"language":"ja","tag":"SDK","count":308},{"language":"ja","tag":"開発者ガイド(SDK)","count":297},{"language":"en","tag":"Use Cases","count":218},{"language":"ja","tag":"ユースケース","count":218},{"language":"en","tag":"API Guide","count":183},{"language":"ja","tag":"APIガイド","count":183},{"language":"en","tag":"Endpoints","count":177},{"language":"ja","tag":"エンドポイント","count":177},{"language":"en","tag":"Release Notes","count":140},{"language":"ja","tag":"リリースノート","count":136}],"searchSettings":{"maxResults":8,"isFiltersEnabled":true}},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":false,"type":"email"}},"basePath":"/docs","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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"69a03c84f0b21f38ae93fdfb","deploymentId":"68bea8f8fe02728a34cf2acf","questionText":"How do I track user events?","status":"active","generatedBy":"manual","createdAt":"2026-02-26T12:28:52.454Z","updatedAt":"2026-02-26T12:28:52.454Z","__v":0}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/docs/_mintlify/custom/moengage/0a209f0cf9e21c6c/style.css"}],"page":{"pagePath":"developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","slug":"/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","pageMetadata":{"title":"WebView - WebSDK Support","description":"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.","keywords":["webview","web sdk","indexeddb","dom storage","wkwebview","moe_queue_timeout"],"href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support"},"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: \"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\"\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={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Info,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This article describes how to use the MoEngage Web SDK in WebView inside a Mobile App.`}),`\n`,_jsx(Info,{children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`WebSDK uses browser storage (LocalStorage and IndexedDB) to queue and persist events. This storage is `,_jsx(_components.strong,{children:`not enabled by default`}),` in a WebView, unlike a regular browser tab.`]}),`\n`,_jsxs(_components.li,{children:[`If storage is not explicitly enabled on both Android and iOS, the SDK fails to queue events. This failure is silent — there is no user-facing error — but appears in your app’s error monitoring (for example, Bugsnag or Sentry) as `,_jsx(_components.code,{children:`No available storage method found`}),`, sometimes followed by `,_jsx(_components.code,{children:`MOE_QUEUE_TIMEOUT: exceeded 10000ms`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`For Mobile Apps, you must explicitly enable JavaScript `,_jsx(_components.strong,{children:`and`}),` browser storage — both are required, not just JavaScript.`]}),`\n`]})}),`\n`,_jsx(Heading,{level:`2`,id:`steps-to-enable-websdk-in-webview`,children:`Steps to Enable WebSDK in WebView`}),`\n`,_jsx(_components.p,{children:`To run WebSDK in WebView,`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Ensure you have correctly integrated Web SDK into your website.`}),`\n`,_jsx(_components.li,{children:`Ensure you provide permission to use JavaScript for your Android/iOS app.`}),`\n`,_jsx(_components.li,{children:`Ensure browser storage (LocalStorage/IndexedDB) is enabled and persistent for the WebView — see the storage steps below for each platform.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`for-android-apps`,children:`For Android Apps`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 1: Configure Your WebView`})}),`\n`,_jsxs(_components.p,{children:[`Within your app, locate the `,_jsx(_components.code,{children:`WebView`}),` component for which you wish to enable JavaScript. Ensure you have the proper imports:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Java`,lines:`true`,wrap:`true`,numberOfLines:`2`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` android.webkit.WebView;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` android.webkit.WebSettings;`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 2: Enable JavaScript and DomStorage Permissions`})}),`\n`,_jsxs(_components.p,{children:[`Using the `,_jsx(_components.code,{children:`WebSettings`}),` class, enable JavaScript and DOM storage:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Java`,lines:`true`,wrap:`true`,numberOfLines:`4`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`WebView`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` myWebView`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (WebView) `}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`findViewById`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`R`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`webview`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`WebSettings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` webSettings`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` myWebView`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getSettings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`webSettings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setJavaScriptEnabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`webSettings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setDomStorageEnabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Required for LocalStorage — without this, the SDK cannot queue events`})]}),`\n`]})})})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`setDomStorageEnabled(true)`}),` covers LocalStorage/SessionStorage. IndexedDB is generally available by default on modern Chromium-based WebView once DOM storage is enabled, but some custom WebView builds or privacy-hardened configurations may restrict it independently. If you continue to see storage errors after enabling DOM storage, verify IndexedDB availability directly inside the WebView session using `,_jsx(_components.code,{children:`chrome://inspect`}),`.`]})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 3: Advanced Settings`})}),`\n`,_jsx(_components.p,{children:`For more control, you may use additional settings such as:`}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Java`,lines:`true`,wrap:`true`,numberOfLines:`1`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`webSettings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setJavaScriptCanOpenWindowsAutomatically`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Allow JS to open windows without user interaction`})]}),`\n`]})})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Validate the URL you load in `,_jsx(_components.code,{children:`WebView`}),` before enabling JavaScript navigation, to avoid executing untrusted scripts.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`for-ios-apps`,children:`For iOS Apps`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 1: Import WebKit`})}),`\n`,_jsxs(_components.p,{children:[`First, ensure you’ve imported the `,_jsx(_components.code,{children:`WebKit`}),` framework in your ViewController:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Swift`,lines:`true`,wrap:`true`,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` WebKit`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 2: Create a WKWebView with Persistent Storage`})}),`\n`,_jsxs(_components.p,{children:[`Create an instance of `,_jsx(_components.code,{children:`WKWebView`}),`, and make sure its `,_jsx(_components.code,{children:`WKWebViewConfiguration`}),` uses a `,_jsx(_components.strong,{children:`persistent`}),` website data store rather than a non-persistent/ephemeral one. A non-persistent data store blocks the storage APIs (LocalStorage/IndexedDB) the SDK depends on to queue events, and discards any SDK data once the WebView is deallocated.`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Swift`,lines:`true`,wrap:`true`,numberOfLines:`5`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` webView: WKWebView`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` configuration `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` WKWebViewConfiguration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`configuration.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`websiteDataStore`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` WKWebsiteDataStore.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`default`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Use .default(), not .nonPersistent()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`webView `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` WKWebView`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`frame`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`zero`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`configuration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: configuration)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`view.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`addSubview`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(webView)`})]}),`\n`]})})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Step 3: Enable JavaScript`})}),`\n`,_jsxs(_components.p,{children:[`JavaScript is enabled by default on `,_jsx(_components.code,{children:`WKWebView`}),`. To verify or change the setting, use `,_jsx(_components.code,{children:`WKWebpagePreferences.allowsContentJavaScript`}),` on iOS 14 and later, and fall back to `,_jsx(_components.code,{children:`WKPreferences.javaScriptEnabled`}),` for earlier versions:`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Swift`,lines:`true`,wrap:`true`,numberOfLines:`11`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` configuration `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` WKWebViewConfiguration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` #available`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`iOS`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 14.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` configuration.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`defaultWebpagePreferences`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`allowsContentJavaScript`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` preferences `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` WKPreferences`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` preferences.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`javaScriptEnabled`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` configuration.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`preferences`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` preferences`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`webView `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` WKWebView`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`frame`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`zero`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`configuration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: configuration)`})]}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`verifying-storage-is-working`,children:`Verifying Storage Is Working`}),`\n`,_jsx(_components.p,{children:`Before raising a support ticket for missing or delayed events in a WebView session, confirm the following inside the actual WebView (not a regular browser tab — WebView storage behavior can differ even on the same device):`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Android: `,_jsx(_components.code,{children:`setDomStorageEnabled(true)`}),` is set on the specific `,_jsx(_components.code,{children:`WebView`}),` instance loading the site.`]}),`\n`,_jsxs(_components.li,{children:[`iOS: the `,_jsx(_components.code,{children:`WKWebView`}),` is configured with `,_jsx(_components.code,{children:`WKWebsiteDataStore.default()`}),`, not a non-persistent store.`]}),`\n`,_jsxs(_components.li,{children:[`IndexedDB is accessible inside the WebView session — check via remote inspector (`,_jsx(_components.code,{children:`chrome://inspect`}),` for Android, Safari Web Inspector for iOS) that `,_jsx(_components.code,{children:`window.indexedDB`}),` is defined and usable.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-modules`,children:`Supported Modules`}),`\n`,_jsx(_components.p,{children:`In WebView, we support the following modules:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Data Tracking`}),`\n`,_jsx(_components.li,{children:`On-site Messaging`}),`\n`,_jsx(_components.li,{children:`Cards`}),`\n`,_jsx(_components.li,{children:`Web Personalization`}),`\n`]})]})}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":"WebView - WebSDK Support","description":"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.","keywords":["webview","web sdk","indexeddb","dom storage","wkwebview","moe_queue_timeout"],"href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Steps to Enable WebSDK in WebView","slug":"steps-to-enable-websdk-in-webview","depth":2,"children":[]},{"title":"For Android Apps","slug":"for-android-apps","depth":2,"children":[]},{"title":"For iOS Apps","slug":"for-ios-apps","depth":2,"children":[]},{"title":"Verifying Storage Is Working","slug":"verifying-storage-is-working","depth":2,"children":[]},{"title":"Supported Modules","slug":"supported-modules","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/moengage/992523b3cb2256cd/script.js"],"subdomain":"moengage","siteName":"MoEngage","title":"WebView - WebSDK Support - MoEngage","relatedPagesConfig":{"enabled":false,"limit":3,"mode":"manual"},"contextualStarterQuestions":[{"_id":"6a4e50342dcfb8d10b86b185","deploymentId":"68bea8f8fe02728a34cf2acf","questionText":"Why is storage not enabled by default?","status":"active","generatedBy":"contextual","path":"developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","createdAt":"2026-07-08T13:27:16.100Z","updatedAt":"2026-07-08T13:27:16.100Z","__v":0},{"_id":"6a4e50342dcfb8d10b86b186","deploymentId":"68bea8f8fe02728a34cf2acf","questionText":"How do I fix MOE_QUEUE_TIMEOUT errors?","status":"active","generatedBy":"contextual","path":"developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","createdAt":"2026-07-08T13:27:16.100Z","updatedAt":"2026-07-08T13:27:16.100Z","__v":0},{"_id":"6a4e50342dcfb8d10b86b184","deploymentId":"68bea8f8fe02728a34cf2acf","questionText":"How do I enable WebSDK in WebView?","status":"active","generatedBy":"contextual","path":"developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","createdAt":"2026-07-08T13:27:16.100Z","updatedAt":"2026-07-08T13:27:16.100Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","matchLevel":0},"ja":{"href":"/ja/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support","matchLevel":1}}},"lastModified":"2026-07-08T13:27:05.817Z","originalFileLocation":"developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support.mdx","locale":"en"},"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=\"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MoEngage\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_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=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"WebView - WebSDK Support - MoEngage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MoEngage\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moengage.mintlify.site/docs/_mintlify/api/og/v2?division=Other+Supported+Web+SDK+Integration\u0026amp;title=WebView+-+WebSDK+Support\u0026amp;description=Enable+the+MoEngage+Web+SDK+inside+a+mobile+app+WebView+on+Android+and+iOS%2C+including+the+JavaScript+and+storage+settings+the+SDK+requires.\u0026amp;theme=c3ae899dab8a83c2adcd0e76\u0026amp;signature=ffe4c123c928cae75ec3765ccc0093325f3a48bf4ecefbbd2d7b2547978d54c2\">\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=\"WebView - WebSDK Support - MoEngage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moengage.mintlify.site/docs/_mintlify/api/og/v2?division=Other+Supported+Web+SDK+Integration\u0026amp;title=WebView+-+WebSDK+Support\u0026amp;description=Enable+the+MoEngage+Web+SDK+inside+a+mobile+app+WebView+on+Android+and+iOS%2C+including+the+JavaScript+and+storage+settings+the+SDK+requires.\u0026amp;theme=c3ae899dab8a83c2adcd0e76\u0026amp;signature=ffe4c123c928cae75ec3765ccc0093325f3a48bf4ecefbbd2d7b2547978d54c2\">\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=\"/docs/mintlify-assets/_mintlify/favicons/moengage/FFhO5ttvrbE72kxs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MoEngage\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2E69FF\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"ICNaPDX9oefbF09W1b5_U9PDnlkyfyKSRbIap6_dW6o\">\u003clink data-mint-head rel=\"canonical\" href=\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://moengage.com/docs/ja/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://moengage.com/#organization\",\"name\":\"MoEngage\",\"url\":\"https://moengage.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moengage/VG5pJbeZsDUmdCZM/logo/light.svg?fit=max\u0026auto=format\u0026n=VG5pJbeZsDUmdCZM\u0026q=85\u0026s=28ca5909311cb6ffe01738e1503b5e64\"}},{\"@type\":\"WebSite\",\"@id\":\"https://moengage.com/docs#website\",\"name\":\"MoEngage\",\"url\":\"https://moengage.com/docs\",\"publisher\":{\"@id\":\"https://moengage.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support#webpage\",\"url\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\",\"name\":\"WebView - WebSDK Support\",\"description\":\"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\",\"dateModified\":\"2026-07-08T13:27:05.817Z\",\"isPartOf\":{\"@id\":\"https://moengage.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDKs\",\"item\":\"https://moengage.com/docs/developer-guide/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web SDK\",\"item\":\"https://moengage.com/docs/developer-guide/web-sdk/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Other Supported Web SDK Integration\",\"item\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/overview\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"WebView - WebSDK Support\",\"item\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support#article\",\"headline\":\"WebView - WebSDK Support\",\"name\":\"WebView - WebSDK Support\",\"description\":\"Enable the MoEngage Web SDK inside a mobile app WebView on Android and iOS, including the JavaScript and storage settings the SDK requires.\",\"url\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support\",\"mainEntityOfPage\":{\"@id\":\"https://moengage.com/docs/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support#webpage\"},\"dateModified\":\"2026-07-08T13:27:05.817Z\",\"keywords\":\"webview, web sdk, indexeddb, dom storage, wkwebview, moe_queue_timeout\",\"publisher\":{\"@id\":\"https://moengage.com/#organization\"},\"isPartOf\":{\"@id\":\"https://moengage.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MoEngage\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"MoEngage","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"User Guide","pages":[{"title":"User Guide","href":"/user-guide/introduction"}]},{"tab":"Developer Guide (SDKs)","groups":[{"group":"SDKs","pages":[{"title":"SDK Integration Guide","href":"/developer-guide/introduction"},{"title":"Connect Your IDE to MoEngage Docs","href":"/developer-guide/connect-your-ide-to-moengage-docs"},{"group":"iOS SDK","root":{"title":"MoEngage iOS SDK","href":"/developer-guide/ios-sdk/overview"},"pages":[{"group":"SDK Integration","root":{"title":"Integrating the iOS SDK","href":"/developer-guide/ios-sdk/sdk-integration/overview"},"pages":[{"group":"Basic","pages":[{"title":"SDK Integration","href":"/developer-guide/ios-sdk/sdk-integration/basic/sdk-integration"},{"title":"SDK Initialization","href":"/developer-guide/ios-sdk/sdk-integration/basic/sdk-initialization"},{"title":"Data Center","href":"/developer-guide/ios-sdk/sdk-integration/basic/data-center"},{"title":"Configuring Project for Architecture Compatibility","href":"/developer-guide/ios-sdk/sdk-integration/basic/Configuring-Project-for-Architecture-Compatibility"},{"title":"Integration through CocoaPods","href":"/developer-guide/ios-sdk/sdk-integration/basic/integration-through-cocoa-pods"}]},{"group":"Advanced","pages":[{"title":"Custom Proxy Domain - iOS","href":"/developer-guide/ios-sdk/sdk-integration/advanced/custom-proxy-domain-ios"},{"title":"JWT Authentication","href":"/developer-guide/ios-sdk/sdk-integration/advanced/jwt-authentication"},{"title":"Add-On Security","href":"/developer-guide/ios-sdk/sdk-integration/advanced/add-on-security"}]}]},{"group":"Data Tracking","root":{"title":"Data Tracking in iOS","href":"/developer-guide/ios-sdk/data-tracking/overview"},"pages":[{"group":"Basic","pages":[{"title":"Install/Update differentiation","href":"/developer-guide/ios-sdk/data-tracking/basic/install-update-differentiation"},{"title":"Tracking user attributes","href":"/developer-guide/ios-sdk/data-tracking/basic/tracking-user-attributes"},{"title":"Setting Unique Id for SDK versions below 9.23.0","href":"/developer-guide/ios-sdk/data-tracking/basic/setting-unique-id-for-sdk-versions-below-9-23-0"},{"title":"Tracking events","href":"/developer-guide/ios-sdk/data-tracking/basic/tracking-events"}]},{"group":"Advanced","pages":[{"title":"Tracking Locale","href":"/developer-guide/ios-sdk/data-tracking/advanced/tracking-locale"},{"title":"Session and Source Tracking","href":"/developer-guide/ios-sdk/data-tracking/advanced/session-and-source-tracking"},{"title":"Personalize Experience Events tracking","href":"/developer-guide/ios-sdk/data-tracking/advanced/personalize-experience-events-tracking"}]}]},{"group":"Push","root":{"title":"Push Notifications in iOS","href":"/developer-guide/ios-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"iOS Push Integration Tutorial","href":"/developer-guide/ios-sdk/push/basic/ios-push-integration-tutorial"},{"title":"Push Notifications","href":"/developer-guide/ios-sdk/push/basic/push-notifications"},{"title":"APNS Authentication Key","href":"/developer-guide/ios-sdk/push/basic/apns-authentication-key"},{"title":"APNS Certificate/PEM file (legacy)","href":"/developer-guide/ios-sdk/push/basic/apns-certificate-pem-file-legacy"},{"title":"Actionable Notifications","href":"/developer-guide/ios-sdk/push/basic/actionable-notifications"}]},{"group":"Optional","pages":[{"title":"Transactional Live Activity","href":"/developer-guide/ios-sdk/push/optional/transactional-live-activity"},{"title":"Broadcast Live Activity","href":"/developer-guide/ios-sdk/push/optional/broadcast-live-activity"},{"title":"Push templates","href":"/developer-guide/ios-sdk/push/optional/push-templates"},{"title":"Push Handled by Application","href":"/developer-guide/ios-sdk/push/optional/push-handled-by-application"},{"title":"Real-Time Triggers","href":"/developer-guide/ios-sdk/push/optional/real-time-triggers"},{"title":"iOS Notification Center","href":"/developer-guide/ios-sdk/push/optional/i-os-notification-center"},{"title":"Location triggered","href":"/developer-guide/ios-sdk/push/optional/location-triggered"}]},{"group":"Advanced","pages":[{"title":"Custom Notification Handling","href":"/developer-guide/ios-sdk/push/advanced/custom-notification-handling"}]}]},{"group":"In-App Messages","root":{"title":"In-App Messages in iOS","href":"/developer-guide/ios-sdk/in-app-messages/overview"},"pages":[{"title":"In-App Nativ","href":"/developer-guide/ios-sdk/in-app-messages/in-app-nativ"},{"title":"Custom Action Handling","href":"/developer-guide/ios-sdk/in-app-messages/custom-action-handling"}]},{"title":"Personalize SDK","sidebarTitle":"Personalize","href":"/developer-guide/ios-sdk/personalize/personalize-sdk"},{"title":"Recommendations","href":"/developer-guide/ios-sdk/recommendations/recommendations"},{"group":"Cards","root":{"title":"Card Campaigns in iOS","href":"/developer-guide/ios-sdk/cards/overview"},"pages":[{"title":"Cards in iOS","href":"/developer-guide/ios-sdk/cards/cards-in-i-os"},{"title":"Self Handled Cards","href":"/developer-guide/ios-sdk/cards/self-handled-cards"}]},{"title":"Release Checklist","href":"/developer-guide/ios-sdk/checklist/release-checklist"},{"title":"Compliance","href":"/developer-guide/ios-sdk/compliance/compliance"},{"title":"Manual Integration","href":"/developer-guide/ios-sdk/manual-integration/manual-integration"},{"title":"iOS SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/ios-sdk/deprecated-versions/deprecated-versions"},{"group":"Migration","root":{"title":"iOS SDK Migration","href":"/developer-guide/ios-sdk/migration/overview"},"pages":[{"title":"Migration to SDK version 9.0.0","href":"/developer-guide/ios-sdk/migration/migration-to-sdk-version-9-0-0"},{"title":"Migration to SDK version 8.2.0","href":"/developer-guide/ios-sdk/migration/migration-to-sdk-version-8-2-0"},{"title":"Migration to SDK version 7.0.0","href":"/developer-guide/ios-sdk/migration/migration-to-sdk-version-7-0-0"},{"title":"Migration to SDK version 6.0.0","href":"/developer-guide/ios-sdk/migration/migration-to-sdk-version-6-0-0"},{"title":"Migration Of MoEngage SDK From Cocoapods To SPM","href":"/developer-guide/ios-sdk/migration/migration-of-moengage-sdk-from-cocoapods-to-spm"}]},{"title":"Framework Impact","href":"/developer-guide/ios-sdk/framework-size-impact/framework-size-impact"},{"title":"iOS 15","sidebarTitle":"OS Updates","href":"/developer-guide/ios-sdk/os-updates/i-os-15"},{"title":"Apple TV","href":"/developer-guide/ios-sdk/apple-tv/apple-tv"},{"title":"Troubleshooting and FAQs - iOS SDK","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/ios-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-ios"},{"title":"iOS Sample App","sidebarTitle":"Sample App","href":"/developer-guide/ios-sdk/sample-app/i-os-sample-app"}]},{"group":"Android SDK","root":{"title":"MoEngage Android SDK","href":"/developer-guide/android-sdk/overview"},"pages":[{"group":"SDK Integration","root":{"title":"Integrating the Android SDK","href":"/developer-guide/android-sdk/sdk-integration/overview"},"pages":[{"group":"Basic Integration","pages":[{"title":"Install Using BOM","href":"/developer-guide/android-sdk/sdk-integration/basic-integration/Install-Using-BOM"},{"title":"Configuring Build Settings","href":"/developer-guide/android-sdk/sdk-integration/basic-integration/configuring-build-settings"},{"title":"SDK Initialization","href":"/developer-guide/android-sdk/sdk-integration/basic-integration/sdk-initialization"},{"title":"Exclude MoEngage Storage File from Auto-Backup","href":"/developer-guide/android-sdk/sdk-integration/basic-integration/exclude-mo-engage-storage-file-from-auto-backup"}]},{"group":"Advanced or Optional","pages":[{"title":"Custom Proxy Domain - Android","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/custom-proxy-domain-android"},{"title":"JWT Authentication","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/jwt-authentication"},{"title":"Installing SDK using Artifact Id","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/installing-sdk-using-artifact-id"},{"title":"Network Security Configuration","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/network-security-configuration"},{"title":"Add-On Security","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/add-on-security"},{"title":"SDK Build Specifications","href":"/developer-guide/android-sdk/sdk-integration/advanced-or-optional/sdk-configuration"}]}]},{"group":"Data Tracking","root":{"title":"Data Tracking in Android","href":"/developer-guide/android-sdk/data-tracking/overview"},"pages":[{"group":"Basic","pages":[{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/android-sdk/data-tracking/basic/enable-advertising-identifier-tracking"},{"title":"Track Install or Update","href":"/developer-guide/android-sdk/data-tracking/basic/track-install-or-update"},{"title":"Track User Attributes","href":"/developer-guide/android-sdk/data-tracking/basic/track-user-attributes"},{"title":"Setting Unique Id for SDK versions below 13.6.00","href":"/developer-guide/android-sdk/data-tracking/basic/setting-unique-id-for-sdk-versions-below-13-6-00"},{"title":"Track Events","href":"/developer-guide/android-sdk/data-tracking/basic/track-events"}]},{"group":"Advanced or Optional","pages":[{"title":"Tracking Locale","href":"/developer-guide/android-sdk/data-tracking/advanced-or-optional/tracking-locale"},{"title":"Configuring Opt-outs","href":"/developer-guide/android-sdk/data-tracking/advanced-or-optional/configuring-opt-outs"},{"title":"Device Identifier Tracking","href":"/developer-guide/android-sdk/data-tracking/advanced-or-optional/device-identifier-tracking"},{"title":"Personalize Experience Events Tracking","href":"/developer-guide/android-sdk/data-tracking/advanced-or-optional/personalize-experience-events-tracking"}]}]},{"group":"Push","root":{"title":"Push Notifications in Android","href":"/developer-guide/android-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Push Configuration","href":"/developer-guide/android-sdk/push/basic/push-configuration"},{"title":"FCM Authentication","href":"/developer-guide/android-sdk/push/basic/fcm-authentication"},{"title":"Notification Runtime Permissions","href":"/developer-guide/android-sdk/push/basic/notification-runtime-permissions"},{"title":"Push Token Registration and Display","href":"/developer-guide/android-sdk/push/basic/push-token-registration-and-display"},{"title":"Push Token Registration and Display (Legacy)","href":"/developer-guide/android-sdk/push/basic/push-token-registration-and-display-legacy"}]},{"group":"Advanced","pages":[{"title":"Callbacks and Customisation","href":"/developer-guide/android-sdk/push/advanced/callbacks-and-customisation"},{"title":"Push Display Handled by Application","href":"/developer-guide/android-sdk/push/advanced/push-display-handled-by-application"}]},{"group":"Optional","pages":[{"group":"Push AMP+","pages":[{"title":"Push AMP Plus Integration","href":"/developer-guide/android-sdk/push/optional/push-amp-plus/push-amp-plus-integration"},{"title":"Steps to Remove Mi SDK Dependency","href":"/developer-guide/android-sdk/push/optional/push-amp-plus/steps-to-remove-mi-sdk-dependency"},{"title":"Configuring HMS Push Kit","href":"/developer-guide/android-sdk/push/optional/push-amp-plus/configuring-hms-push-kit"},{"title":"Configuring Huawei Push on MoEngage","href":"/developer-guide/android-sdk/push/optional/push-amp-plus/configuring-huawei-push-on-mo-engage"}]},{"title":"Push Amplification","href":"/developer-guide/android-sdk/push/optional/push-amplification"},{"title":"Device Triggered","href":"/developer-guide/android-sdk/push/optional/device-triggered"},{"title":"Location Triggered","href":"/developer-guide/android-sdk/push/optional/location-triggered"},{"title":"Notification Center","href":"/developer-guide/android-sdk/push/optional/notification-center"},{"title":"Push Templates","href":"/developer-guide/android-sdk/push/optional/push-templates"},{"title":"Heads Up Notification","href":"/developer-guide/android-sdk/push/optional/heads-up-notification"}]}]},{"title":"In-App NATIV","sidebarTitle":"In-App Messages","href":"/developer-guide/android-sdk/in-app-messages/in-app-nativ"},{"title":"Personalize SDK","sidebarTitle":"Personalize","href":"/developer-guide/android-sdk/personalize/personalize-sdk"},{"title":"Recommendations","href":"/developer-guide/android-sdk/recommendations/recommendations"},{"group":"Cards","root":{"title":"Card Campaigns in Android","href":"/developer-guide/android-sdk/cards/overview"},"pages":[{"title":"Cards","href":"/developer-guide/android-sdk/cards/cards"},{"title":"Cards in Jetpack Compose","href":"/developer-guide/android-sdk/cards/cards-ui-compose"},{"title":"Self Handled Cards","href":"/developer-guide/android-sdk/cards/self-handled-cards"}]},{"title":"Release Checklist","href":"/developer-guide/android-sdk/checklist/release-checklist"},{"group":"Compliance","root":{"title":"Android Data Disclosure and Consent","href":"/developer-guide/android-sdk/compliance/overview"},"pages":[{"title":"Prepare for Google Play's data disclosure requirements","href":"/developer-guide/android-sdk/compliance/prepare-for-google-plays-data-disclosure-requirements"},{"title":"Compliance","href":"/developer-guide/android-sdk/compliance/compliance"}]},{"title":"Android SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/android-sdk/deprecated-versions/deprecated-versions"},{"group":"Migration","root":{"title":"Android SDK Migration","href":"/developer-guide/android-sdk/migration/overview"},"pages":[{"title":"Migrating to Firebase Installation ID","href":"/developer-guide/android-sdk/migration/migrating-to-firebase-installation-id"},{"title":"Updating to 12.x.xx from 11.x.xx","href":"/developer-guide/android-sdk/migration/updating-to-12xxx-from-11xxx"},{"title":"Updating to 11.x.xx from 10.x.xx","href":"/developer-guide/android-sdk/migration/updating-to-11xxx-from-10xxx"},{"title":"Migration to 10.x.xx","href":"/developer-guide/android-sdk/migration/migration-to-10xxx"},{"title":"Migration from 4.x to 5.x (One time activity)","href":"/developer-guide/android-sdk/migration/migration-from-4x-to-5x-one-time-activity"},{"title":"Moving from Manifest to Code based Integration","href":"/developer-guide/android-sdk/migration/moving-from-manifest-to-code-based-integration"},{"title":"Migration To Maven Central","href":"/developer-guide/android-sdk/migration/migration-to-maven-central"},{"title":"Migrating from addon-inbox 6.0.2","href":"/developer-guide/android-sdk/migration/migrating-from-addon-inbox-602"}]},{"title":"Android 12","sidebarTitle":"OS Updates","href":"/developer-guide/android-sdk/os-updates/android-12"},{"title":"Android TV","href":"/developer-guide/android-sdk/android-tv/android-tv"},{"group":"Performance","root":{"title":"Android SDK Performance and Size","href":"/developer-guide/android-sdk/performance/overview"},"pages":[{"title":"SDK Performance","href":"/developer-guide/android-sdk/performance/sdk-performance"},{"title":"SDK Size Impact","href":"/developer-guide/android-sdk/performance/sdk-size-impact"}]},{"group":"Troubleshooting and FAQs","root":{"title":"Android Troubleshooting and FAQs","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/overview"},"pages":[{"title":"How To Use the MoEngage SDK Logger?","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/how-to-use-the-moengage-sdk-logger"},{"title":"What Are the Scenarios Where the SDK Logger Is Not Usable?","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/what-are-the-scenarios-where-the-sdk-logger-is-not-usable"},{"title":"Troubleshooting and FAQs","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs"},{"title":"Troubleshooting Push Redirection","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/troubleshooting-push-redirection"},{"title":"Troubleshooting Images","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/troubleshooting-images"},{"title":"Troubleshooting In-App","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/troubleshooting-in-app"},{"title":"Troubleshooting Exceptions","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/troubleshooting-exceptions"},{"title":"How to Fix Installation ID Drop?","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/how-to-fix-installation-id-drop"},{"title":"How to fix Token Drop? (Legacy)","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/how-to-fix-token-drop"},{"title":"How to share Android MoEngage SDK logs","href":"/developer-guide/android-sdk/troubleshooting-and-faqs/how-to-share-android-moengage-sdk-logs"}]},{"title":"Android Sample App","sidebarTitle":"Sample App","href":"/developer-guide/android-sdk/sample-app/android-sample-app"}]},{"group":"Web SDK","root":{"title":"MoEngage Web SDK","href":"/developer-guide/web-sdk/overview"},"pages":[{"group":"Web SDK Overview","root":{"title":"Web SDK Overview","href":"/developer-guide/web-sdk/web-sdk-overview/web-sdk-overview"},"pages":[{"title":"Web-SDK Browser Compatibility Matrix","href":"/developer-guide/web-sdk/web-sdk-overview/web-sdk-browser-compatibility-matrix"}]},{"group":"Web SDK Integration","root":{"title":"Integrating the Web SDK","href":"/developer-guide/web-sdk/web-sdk-integration/overview"},"pages":[{"group":"Basic Integration","pages":[{"title":"Web SDK Integration","href":"/developer-guide/web-sdk/web-sdk-integration/basic-integration/web-sdk-integration"}]},{"group":"Advanced Integration","pages":[{"title":"Content Security Policy (CSP) Nonce Support","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/content-security-policy-csp-nonce-support"},{"title":"Debugging Mode","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/debugging-mode"},{"title":"Cookies used by Web SDK","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/cookies-used-by-web-sdk"},{"title":"Web SDK Lifecycle Callbacks","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/web-sdk-lifecycle-callbacks"},{"title":"Custom Proxy Domain - Web","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/custom-proxy-domain-web"},{"title":"Bot Traffic Blocking","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/bot-traffic-blocking"},{"title":"Web SDK Opt-out","href":"/developer-guide/web-sdk/web-sdk-integration/advanced-integration/web-sdk-opt-out"}]},{"group":"Optional","pages":[{"title":"Native Browser API Support","href":"/developer-guide/web-sdk/web-sdk-integration/optional-integration/native-browser-api-support"}]}]},{"group":"Data Tracking","root":{"title":"Data Tracking on the Web","href":"/developer-guide/web-sdk/data-tracking/overview"},"pages":[{"title":"Web SDK Data Tracking Introduction","href":"/developer-guide/web-sdk/data-tracking/web-sdk-data-tracking-introduction"},{"title":"Setting Unique Id for SDK versions below 2.52.2","href":"/developer-guide/web-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-2-52-2"},{"title":"Web SDK User Attributes Tracking","href":"/developer-guide/web-sdk/data-tracking/web-sdk-user-attributes-tracking"},{"title":"Web SDK Events Tracking","href":"/developer-guide/web-sdk/data-tracking/web-sdk-events-tracking"},{"title":"Configure Data opt-out in Web SDK","href":"/developer-guide/web-sdk/data-tracking/configure-data-opt-out-in-web-sdk"}]},{"group":"Web Push","root":{"title":"Web Push Notifications","href":"/developer-guide/web-sdk/web-push/overview"},"pages":[{"title":"Web Push Overview","href":"/developer-guide/web-sdk/web-push/web-push-overview"},{"title":"Safari Web Push for iOS and iPadOS","href":"/developer-guide/web-sdk/web-push/safari-web-push-for-i-os-and-i-pad-os"},{"title":"Configure and Integrate Web Push","href":"/developer-guide/web-sdk/web-push/configure-and-integrate-web-push"},{"title":"Configure Self-Handled Opt-In","href":"/developer-guide/web-sdk/web-push/configure-self-handled-opt-in"},{"title":"Opted Out Users","href":"/developer-guide/web-sdk/web-push/opted-out-users"}]},{"group":"Onsite Messaging","root":{"title":"On-Site Messaging","href":"/developer-guide/web-sdk/onsite-messaging/overview"},"pages":[{"title":"Configure and Integrate On-site Messaging","href":"/developer-guide/web-sdk/onsite-messaging/configure-and-integrate-on-site-messaging"},{"title":"Self Handled On-Site Messaging","href":"/developer-guide/web-sdk/onsite-messaging/self-handled-on-site-messaging"}]},{"group":"Cards","root":{"title":"Card Campaigns on the Web","href":"/developer-guide/web-sdk/cards/overview"},"pages":[{"title":"Cards","href":"/developer-guide/web-sdk/cards/cards"},{"title":"Self Handled Cards","href":"/developer-guide/web-sdk/cards/self-handled-cards"}]},{"title":"MoEngage Assist Chrome Extension","sidebarTitle":"Integration Validation","href":"/developer-guide/web-sdk/integration-validation/moengage-assist-chrome-extension"},{"title":"Web SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/web-sdk/deprecated-versions/deprecated-versions"},{"title":"Standardizing Web SDK APIs for Cross-Platform Consistency","sidebarTitle":"Migration","href":"/developer-guide/web-sdk/migration/standardizing-web-sdk-apis-for-cross-platform-consistency"},{"group":"Other Supported Web SDK Integration","root":{"title":"Other Web SDK Integrations","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/overview"},"pages":[{"title":"User Login in AMP (Older Process)","description":"Track user login events on your AMP pages using the older MoEngage AMP analytics process.","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/user-login-in-amp-older-process"},{"title":"WebView - WebSDK Support","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support"},{"title":"SDK Support for Browser Extensions","description":"Use the MoEngage Web SDK inside Google Chrome browser extensions for analytics and event tracking.","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/sdk-support-for-browser-extensions"},{"title":"Google Tag Manager (GTM) Templates","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/google-tag-manager-gtm-templates"},{"title":"Smart TV integration","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/smart-tv-integration"},{"title":"Single Page App (SPA) Support","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/single-page-app-spa-support"},{"title":"Integrating with other Web Frameworks","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/integrating-with-other-web-frameworks"},{"title":"Configure and Integrate AMP Event Analytics","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/configure-and-integrate-amp-event-analytics"},{"title":"Configure and Integrate AMP Web Push","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/configure-and-integrate-amp-web-push"},{"title":"Integrate MoEngage with MCP UI Apps","href":"/developer-guide/web-sdk/other-supported-web-sdk-integration/integrate-moengage-with-mcp-ui-apps"}]}]},{"group":"Personalize SDK","root":{"title":"MoEngage Personalize SDK","href":"/developer-guide/personalize-sdk/overview"},"pages":[{"title":"Web Personalization - V2","href":"/developer-guide/personalize-sdk/sdk-integration/web-personalization-v2"},{"title":"Offerings events tracking","href":"/developer-guide/personalize-sdk/sdk-integration/offerings-events-tracking"},{"title":"Personalize API Experience events tracking","href":"/developer-guide/personalize-sdk/sdk-integration/personalize-api-experience-events-tracking"},{"title":"fetchExperiences - MoEngage Personalize SDK","href":"/developer-guide/personalize-sdk/sdk-integration/self-handled-personalize-api-experiences"},{"title":"Content Security Policy (CSP) and Impact on Personalize","href":"/developer-guide/personalize-sdk/sdk-integration/content-security-policy-csp-and-impact-on-personalize"},{"title":"Custom Attributes","href":"/developer-guide/personalize-sdk/sdk-integration/custom-attributes"}]},{"group":"Ecommerce Platforms","root":{"title":"Ecommerce Platform Integrations","href":"/developer-guide/ecommerce-platforms/overview"},"pages":[{"group":"Shopify","root":{"title":"Shopify Integration","href":"/developer-guide/ecommerce-platforms/shopify/overview"},"pages":[{"title":"Shopify 2.0","href":"/developer-guide/ecommerce-platforms/shopify/shopify-20"},{"title":"Events and User Data Tracking","href":"/developer-guide/ecommerce-platforms/shopify/events-and-user-data-tracking"},{"title":"User Data Sync","href":"/developer-guide/ecommerce-platforms/shopify/user-data-sync"},{"title":"Sync Your Product Catalog","href":"/developer-guide/ecommerce-platforms/shopify/sync-product-catalog"},{"title":"Validate Your Shopify Integration","href":"/developer-guide/ecommerce-platforms/shopify/validate-integration"},{"title":"User Profile Management with Shopify","href":"/developer-guide/ecommerce-platforms/shopify/user-profile-management-with-shopify"},{"title":"FAQs","href":"/developer-guide/ecommerce-platforms/shopify/faqs"}]},{"title":"WooCommerce","href":"/developer-guide/ecommerce-platforms/woo-commerce/woocommerce"},{"title":"Magento","href":"/developer-guide/ecommerce-platforms/magento/magento"}]},{"group":"React Native SDK","root":{"title":"MoEngage React Native SDK","href":"/developer-guide/react-native-sdk/overview"},"pages":[{"title":"Getting Started with React Native SDK","sidebarTitle":"Overview","href":"/developer-guide/react-native-sdk/overview/getting-started-with-react-native-sdk"},{"group":"SDK Integration","root":{"title":"Integrating the React Native SDK","href":"/developer-guide/react-native-sdk/sdk-integration/overview"},"pages":[{"group":"React Native","pages":[{"group":"SDK Installation","pages":[{"title":"Framework Dependency","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-installation/framework-dependency"},{"title":"Android Build Configuration","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-installation/android"},{"title":"iOS","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-installation/ios"}]},{"group":"SDK Initialization","pages":[{"group":"File Based Initialization","pages":[{"title":"File Based Initialization","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/file-based-initialization/file-based-initialization"},{"title":"Migration and Precedence","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/file-based-initialization/migration-and-precedence"}]},{"group":"Manual Initialization","pages":[{"title":"Framework Initialization","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/framework-initialization"},{"title":"Android","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/android"},{"title":"iOS","href":"/developer-guide/react-native-sdk/sdk-integration/react-native/sdk-initialization/manual-initialization/ios"}]}]}]},{"group":"Expo","pages":[{"title":"Installation","href":"/developer-guide/react-native-sdk/sdk-integration/expo/installation"},{"title":"Configure the MoEngage Expo SDK","href":"/developer-guide/react-native-sdk/sdk-integration/expo/configure-the-moengage-expo-sdk"},{"title":"Initialization","href":"/developer-guide/react-native-sdk/sdk-integration/expo/initialization"}]},{"group":"Advanced","pages":[{"title":"JWT Authentication","href":"/developer-guide/react-native-sdk/sdk-integration/advanced/jwt-authentication"}]},{"title":"Limitations","href":"/developer-guide/react-native-sdk/sdk-integration/limitations"}]},{"group":"Data Tracking","root":{"title":"Data Tracking in React Native","href":"/developer-guide/react-native-sdk/data-tracking/overview"},"pages":[{"title":"Tracking User Attributes and User Identity","href":"/developer-guide/react-native-sdk/data-tracking/tracking-user-attributes-and-user-identity"},{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/react-native-sdk/data-tracking/enable-advertising-identifier-tracking"},{"title":"Install/Update","href":"/developer-guide/react-native-sdk/data-tracking/install-update"},{"title":"Setting Unique Id for SDK versions below 11.2.0","href":"/developer-guide/react-native-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-1120"},{"title":"Tracking Events","href":"/developer-guide/react-native-sdk/data-tracking/tracking-events"},{"title":"Delete User From MoEngage Server","href":"/developer-guide/react-native-sdk/data-tracking/delete-user-from-moengage-server"}]},{"group":"Push","root":{"title":"Push Notifications in React Native","href":"/developer-guide/react-native-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Android Push Configuration","href":"/developer-guide/react-native-sdk/push/basic/android-push-configuration"},{"title":"Android Notification Runtime Permissions","href":"/developer-guide/react-native-sdk/push/basic/android-notification-runtime-permissions"},{"title":"iOS Push Configuration","href":"/developer-guide/react-native-sdk/push/basic/ios-push-configuration"},{"title":"Push Callback","href":"/developer-guide/react-native-sdk/push/basic/push-callback"},{"group":"Set Up iOS Notification Extensions for Rich Push and Impression Tracking","pages":[{"title":"Set Up iOS Notification Extensions for Rich Push and Impression Tracking","href":"/developer-guide/react-native-sdk/push/basic/integrating-moengage-service-and-content-extensions/set-up-ios-notification-extensions-for-rich-push-and-impression-tracking"},{"title":"Migrate To The Extension Integrator Tool","href":"/developer-guide/react-native-sdk/push/basic/integrating-moengage-service-and-content-extensions/migrating-to-the-extension-integrator-tool"}]}]},{"group":"Optional","pages":[{"title":"Location Triggered","href":"/developer-guide/react-native-sdk/push/optional/location-triggered"},{"title":"Notification Center","href":"/developer-guide/react-native-sdk/push/optional/notification-triggered"}]}]},{"title":"InApp NATIV","sidebarTitle":"In App Messages","href":"/developer-guide/react-native-sdk/in-app-messages/inapp-nativ"},{"group":"Personalize","root":{"title":"Personalize in React Native","href":"/developer-guide/react-native-sdk/personalize/overview"},"pages":[{"title":"Personalize SDK","href":"/developer-guide/react-native-sdk/personalize/personalize-sdk"},{"title":"Personalize Data Payload","href":"/developer-guide/react-native-sdk/personalize/personalize-data-payload"}]},{"title":"Recommendations","href":"/developer-guide/react-native-sdk/recommendations/recommendations"},{"group":"Cards","root":{"title":"Card Campaigns in React Native","href":"/developer-guide/react-native-sdk/cards/overview"},"pages":[{"group":"Installation","pages":[{"title":"Framework Dependency","href":"/developer-guide/react-native-sdk/cards/installation/framework-dependency"},{"title":"Android","href":"/developer-guide/react-native-sdk/cards/installation/android"},{"title":"iOS","href":"/developer-guide/react-native-sdk/cards/installation/ios"}]},{"title":"Framework Initialization","href":"/developer-guide/react-native-sdk/cards/initialization/framework-initialization"},{"title":"Self Handled Cards","href":"/developer-guide/react-native-sdk/cards/self-handled-cards"},{"title":"Cards Data Payload","href":"/developer-guide/react-native-sdk/cards/cards-data-payload"}]},{"title":"Compliance","href":"/developer-guide/react-native-sdk/compliance/compliance"},{"title":"TV Support","href":"/developer-guide/react-native-sdk/tv/tv-support"},{"title":"React Native Sample App","sidebarTitle":"Sample App","href":"/developer-guide/react-native-sdk/sample-app/react-native-sample-app"},{"title":"Migrate the MoEngage React Native SDK From CocoaPods to Swift Package Manager","sidebarTitle":"Migration","href":"/developer-guide/react-native-sdk/migration/migration-of-moengage-sdk-from-cocoapods-to-spm"},{"title":"Troubleshooting and FAQs - React Native","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/react-native-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-react"},{"title":"React Native SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/react-native-sdk/deprecated-versions/deprecated-versions"}]},{"group":"Flutter SDK","root":{"title":"MoEngage Flutter SDK","href":"/developer-guide/flutter-sdk/overview"},"pages":[{"title":"Getting Started with Flutter SDK","sidebarTitle":"Overview","href":"/developer-guide/flutter-sdk/overview/getting-started-with-flutter-sdk"},{"group":"SDK Integration","root":{"title":"Integrating the Flutter SDK","href":"/developer-guide/flutter-sdk/sdk-integration/overview"},"pages":[{"group":"SDK Installation","pages":[{"title":"Framework Dependency","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-installation/framework-dependency"},{"title":"Android","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-installation/android"},{"title":"iOS","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-installation/ios"}]},{"group":"SDK Initialization","pages":[{"group":"File Based Initialization","pages":[{"title":"File Based Initialization","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/file-based-initialization/file-based-initialization"},{"title":"Migration and Precedence","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/file-based-initialization/migration-and-precedence"}]},{"group":"Manual Initialization","pages":[{"title":"Framework Initialization","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/framework-initialization"},{"title":"Android SDK Initialization","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/android-sdk-initialization"},{"title":"iOS SDK Initialization","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/manual-initialization/ios-sdk-initialization"},{"title":"Web SDK Initialization","href":"/developer-guide/flutter-sdk/sdk-integration/sdk-initialization/web-sdk-initialization"}]}]},{"group":"Advanced","pages":[{"title":"JWT Authentication","href":"/developer-guide/flutter-sdk/sdk-integration/advanced/jwt-authentication"}]},{"title":"Limitations","href":"/developer-guide/flutter-sdk/sdk-integration/limitations"}]},{"group":"Data Tracking","root":{"title":"Data Tracking in Flutter","href":"/developer-guide/flutter-sdk/data-tracking/overview"},"pages":[{"title":"Tracking User Attributes and User Identity","href":"/developer-guide/flutter-sdk/data-tracking/tracking-user-attributes-and-user-identity"},{"title":"Delete User From MoEngage Server","href":"/developer-guide/flutter-sdk/data-tracking/delete-user-from-moengage-server"},{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/flutter-sdk/data-tracking/enable-advertising-identifier-tracking"},{"title":"Install/Update Differentiation","href":"/developer-guide/flutter-sdk/data-tracking/install-update-differentiation"},{"title":"Setting Unique Id for SDK versions below 9.2.0","href":"/developer-guide/flutter-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-920"},{"title":"Tracking Events","href":"/developer-guide/flutter-sdk/data-tracking/tracking-events"}]},{"group":"Push","root":{"title":"Push Notifications in Flutter","href":"/developer-guide/flutter-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Android Push Configuration","href":"/developer-guide/flutter-sdk/push/basic/android-push-configuration"},{"title":"Android Notification Runtime Permissions","href":"/developer-guide/flutter-sdk/push/basic/android-notification-runtime-permissions"},{"title":"iOS Push Configuration","href":"/developer-guide/flutter-sdk/push/basic/ios-push-configuration"},{"title":"Push Callback","href":"/developer-guide/flutter-sdk/push/basic/push-callback"},{"group":"Set Up iOS Notification Extensions for Rich Push and Impression Tracking","pages":[{"title":"Set Up iOS Notification Extensions for Rich Push and Impression Tracking","href":"/developer-guide/flutter-sdk/push/basic/integrating-moengage-service-and-content-extension-in-ios/set-up-ios-notification-extensions-for-rich-push-and-impression-tracking"},{"title":"Migrate To The Extension Integrator Tool","href":"/developer-guide/flutter-sdk/push/basic/integrating-moengage-service-and-content-extension-in-ios/migrating-to-the-extension-integrator-tool"}]}]},{"group":"Optional","pages":[{"title":"Location Triggered","href":"/developer-guide/flutter-sdk/push/optional/location-triggered"},{"title":"Notification Center","href":"/developer-guide/flutter-sdk/push/optional/notification-center"}]}]},{"title":"InApp NATIV","sidebarTitle":"In-App Messages","href":"/developer-guide/flutter-sdk/in-app-messages/inapp-nativ"},{"group":"Personalize","root":{"title":"Personalize in Flutter","href":"/developer-guide/flutter-sdk/personalize/overview"},"pages":[{"title":"Personalize SDK","href":"/developer-guide/flutter-sdk/personalize/personalize-sdk"},{"title":"Personalize Data Payload","href":"/developer-guide/flutter-sdk/personalize/personalize-data-payload"}]},{"title":"Self Handled Cards","sidebarTitle":"Cards","href":"/developer-guide/flutter-sdk/cards/self-handled-cards"},{"title":"Compliance","href":"/developer-guide/flutter-sdk/compliance/compliance"},{"title":"Troubleshooting and FAQs - Flutter","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/flutter-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-flutter"},{"title":"Flutter Sample App","sidebarTitle":"Sample App","href":"/developer-guide/flutter-sdk/sample-app/flutter-sample-app"},{"title":"Flutter SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/flutter-sdk/deprecated-versions/deprecated-versions"}]},{"group":"Cordova SDK","root":{"title":"MoEngage Cordova SDK","href":"/developer-guide/cordova-sdk/overview"},"pages":[{"group":"SDK Integration","root":{"title":"Integrating the Cordova SDK","href":"/developer-guide/cordova-sdk/sdk-integration/overview"},"pages":[{"group":"SDK Installation","pages":[{"title":"Framework Dependency","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-installation/framework-dependency"},{"title":"Android SDK Installation","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-installation/android-sdk-installation"},{"title":"iOS Installation","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-installation/ios-installation"}]},{"group":"SDK Initialization","pages":[{"title":"Framework Initialization","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-initialization/framework-initialization"},{"title":"Android SDK Initialization","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-initialization/android-sdk-initialization"},{"title":"iOS SDK Initialization","href":"/developer-guide/cordova-sdk/sdk-integration/sdk-initialization/ios-sdk-initialization"}]},{"title":"Limitations","href":"/developer-guide/cordova-sdk/sdk-integration/limitations"}]},{"group":"Data Tracking","root":{"title":"Data Tracking in Cordova","href":"/developer-guide/cordova-sdk/data-tracking/overview"},"pages":[{"title":"Delete User From MoEngage Server","href":"/developer-guide/cordova-sdk/data-tracking/delete-user-from-moengage-server"},{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/cordova-sdk/data-tracking/enable-advertising-identifier-tracking"},{"title":"Install/Update differentiation","href":"/developer-guide/cordova-sdk/data-tracking/install-update-differentiation"},{"title":"Tracking User Attributes and User Identity","href":"/developer-guide/cordova-sdk/data-tracking/tracking-user-attributes"},{"title":"Tracking Events","href":"/developer-guide/cordova-sdk/data-tracking/tracking-events"}]},{"group":"Push","root":{"title":"Push Notifications in Cordova","href":"/developer-guide/cordova-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Android Push Configuration","href":"/developer-guide/cordova-sdk/push/basic/android-push-configuration"},{"title":"Android Notification Runtime Permissions","href":"/developer-guide/cordova-sdk/push/basic/android-notification-runtime-permissions"},{"title":"iOS Push Configuration ","href":"/developer-guide/cordova-sdk/push/basic/ios-push-configuration-7xx"},{"title":"Push Callback","href":"/developer-guide/cordova-sdk/push/basic/push-callback"}]},{"group":"Optional","pages":[{"title":"Location Triggered","href":"/developer-guide/cordova-sdk/push/optional/location-triggered"}]}]},{"title":"InApp NATIV","sidebarTitle":"In App Messages","href":"/developer-guide/cordova-sdk/in-app-messages/inapp-nativ"},{"title":"Compliance","href":"/developer-guide/cordova-sdk/compliance/compliance"},{"title":"Cordova SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/cordova-sdk/deprecated-versions/deprecated-versions"},{"title":"Migrating to 4.x.x","sidebarTitle":"Migration","href":"/developer-guide/cordova-sdk/migration/migrating-to-4xx"},{"title":"Troubleshooting and FAQs - Cordova","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/cordova-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-cordova"}]},{"group":"Unity SDK","root":{"title":"MoEngage Unity SDK","href":"/developer-guide/unity-sdk/overview"},"pages":[{"group":"SDK Integration","root":{"title":"Integrating the Unity SDK","href":"/developer-guide/unity-sdk/sdk-integration/overview"},"pages":[{"title":"SDK Installation","href":"/developer-guide/unity-sdk/sdk-integration/sdk-installation/sdk-installation"},{"group":"SDK Initialization","pages":[{"title":"SDK Initialization","href":"/developer-guide/unity-sdk/sdk-integration/sdk-initialization/sdk-initialization"},{"group":"Manual Initialization","pages":[{"title":"Android","href":"/developer-guide/unity-sdk/sdk-integration/sdk-initialization/manual-initialization/android"}]},{"group":"File Based Initialization","pages":[{"title":"Android","href":"/developer-guide/unity-sdk/sdk-integration/sdk-initialization/file-based-initialization/android"},{"title":"iOS","href":"/developer-guide/unity-sdk/sdk-integration/sdk-initialization/file-based-initialization/ios"}]}]},{"title":"Limitations","href":"/developer-guide/unity-sdk/sdk-integration/limitations"}]},{"group":"Data Tracking","root":{"title":"Data Tracking in Unity","href":"/developer-guide/unity-sdk/data-tracking/overview"},"pages":[{"title":"Delete User From MoEngage Server","href":"/developer-guide/unity-sdk/data-tracking/delete-user-from-moengage-server"},{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/unity-sdk/data-tracking/enable-advertising-identifier-tracking"},{"title":"Install/Update Differentiation","href":"/developer-guide/unity-sdk/data-tracking/install-update-differentiation"},{"title":"Tracking User Attributes","href":"/developer-guide/unity-sdk/data-tracking/tracking-user-attributes"},{"title":"Tracking Events","href":"/developer-guide/unity-sdk/data-tracking/tracking-events"}]},{"group":"Push","root":{"title":"Push Notifications in Unity","href":"/developer-guide/unity-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Android Push Configuration","href":"/developer-guide/unity-sdk/push/basic/android-push-configuration"},{"title":"Android Notification Runtime Permissions","href":"/developer-guide/unity-sdk/push/basic/android-notification-runtime-permissions"},{"title":"iOS Push Configuration","href":"/developer-guide/unity-sdk/push/basic/ios-push-configuration"},{"title":"Push Callback","href":"/developer-guide/unity-sdk/push/basic/push-callback"}]},{"group":"Optional","pages":[{"title":"Configuring Push Templates","href":"/developer-guide/unity-sdk/push/optional/configuring-push-templates"},{"title":"Location Triggered","href":"/developer-guide/unity-sdk/push/optional/location-triggered"}]}]},{"title":"InApp NATIV","sidebarTitle":"In App Messages","href":"/developer-guide/unity-sdk/in-app-messages/inapp-nativ"},{"title":"Compliance","href":"/developer-guide/unity-sdk/compliance/compliance"},{"title":"Troubleshooting and FAQs - Unity","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/unity-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-unity"},{"title":"Unity SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/unity-sdk/deprecated-versions/deprecated-versions"}]},{"group":"Capacitor SDK","root":{"title":"MoEngage Capacitor SDK","href":"/developer-guide/capacitor-sdk/overview"},"pages":[{"group":"SDK Integration","root":{"title":"Integrating the Capacitor SDK","href":"/developer-guide/capacitor-sdk/sdk-integration/overview"},"pages":[{"group":"Basic","pages":[{"group":"SDK Installation","pages":[{"title":"Framework Dependency","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-installation/framework-dependency"},{"title":"Android SDK Installation","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-installation/android-sdk-installation"},{"title":"iOS SDK Installation","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-installation/ios-sdk-installation"}]},{"group":"SDK Initialization","pages":[{"group":"File Based Initialization","pages":[{"title":"File Based Initialization","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-initialization/file-based-initlialization/file-based-initialization"},{"title":"Migration And Precedence","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-initialization/file-based-initlialization/migration-and-precedence"}]},{"title":"Framework Initialization","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-initialization/framework-initialization"},{"title":"Android SDK Initialization","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-initialization/android-sdk-initialization"},{"title":"iOS SDK Initialization","href":"/developer-guide/capacitor-sdk/sdk-integration/basic/sdk-initialization/ios-sdk-initialization"}]}]},{"group":"Advanced","pages":[{"title":"JWT Authentication","href":"/developer-guide/capacitor-sdk/sdk-integration/advanced/jwt-authentication"}]},{"title":"Limitations","href":"/developer-guide/capacitor-sdk/sdk-integration/limitations"}]},{"group":"Data Tracking","root":{"title":"Data Tracking in Capacitor","href":"/developer-guide/capacitor-sdk/data-tracking/overview"},"pages":[{"title":"Delete User From MoEngage Server","href":"/developer-guide/capacitor-sdk/data-tracking/delete-user-from-moengage-server"},{"title":"Enable Advertising Identifier Tracking","href":"/developer-guide/capacitor-sdk/data-tracking/enable-advertising-identifier-tracking"},{"title":"Install/Update Differentiation","href":"/developer-guide/capacitor-sdk/data-tracking/install-update-differentiation"},{"title":"Tracking User Attributes and User Identity","href":"/developer-guide/capacitor-sdk/data-tracking/tracking-user-attributes"},{"title":"Tracking Events","href":"/developer-guide/capacitor-sdk/data-tracking/tracking-events"},{"title":"Setting Unique ID for SDK versions below 6.0.0","href":"/developer-guide/capacitor-sdk/data-tracking/setting-unique-id-for-sdk-versions-below-6.0.0"}]},{"group":"Push","root":{"title":"Push Notifications in Capacitor","href":"/developer-guide/capacitor-sdk/push/overview"},"pages":[{"group":"Basic","pages":[{"title":"Android Notification Runtime Permissions","href":"/developer-guide/capacitor-sdk/push/basic/android-notification-runtime-permissions"},{"title":"Android Push Configuration","href":"/developer-guide/capacitor-sdk/push/basic/android-push-configuration"},{"title":"iOS Push Configuration","href":"/developer-guide/capacitor-sdk/push/basic/ios-push-configuration"},{"title":"Push Callback","href":"/developer-guide/capacitor-sdk/push/basic/push-callback"}]},{"group":"Optional","pages":[{"title":"Location Triggered","href":"/developer-guide/capacitor-sdk/push/optional/location-triggered"}]}]},{"title":"InApp NATIV","sidebarTitle":"In-App Messages","href":"/developer-guide/capacitor-sdk/in-app-messages/inapp-nativ"},{"title":"Compliance","href":"/developer-guide/capacitor-sdk/compliance/compliance"},{"title":"Troubleshooting and FAQs - Capacitor","sidebarTitle":"Troubleshooting and FAQs","href":"/developer-guide/capacitor-sdk/troubleshooting-and-faqs/troubleshooting-and-faqs-capacitor"},{"title":"Capacitor Sample App","sidebarTitle":"Sample App","href":"/developer-guide/capacitor-sdk/sample-app/capacitor-sample-app"},{"title":"Capacitor SDK Deprecated Versions","sidebarTitle":"Deprecated Versions","href":"/developer-guide/capacitor-sdk/deprecated-versions/deprecated-versions"}]},{"title":"SDK Installation","sidebarTitle":"Ionic SDK","href":"/developer-guide/ionic-sdk/sdk-integration/sdk-installation"},{"title":"TV and OTT Integrations","href":"/developer-guide/tv-and-ott-integrations/getting-started/tv-and-ott-integrations"},{"group":"SDK Lifecycle \u0026 Policies","root":{"title":"SDK Lifecycle and Policies","href":"/developer-guide/sdk-lifecycle-and-policies/overview"},"pages":[{"title":"SDK Deprecation Policy","href":"/developer-guide/sdk-lifecycle-and-policies/sdk-deprecation-policy"},{"title":"Deprecation for Older Platform Versions","href":"/developer-guide/sdk-lifecycle-and-policies/deprecation-for-older-platform-versions"}]},{"group":"Components for SDK","root":{"title":"Components for SDK","href":"/developer-guide/components-for-sdk/overview"},"pages":[{"title":"Real-time Uninstall Tracking","href":"/developer-guide/components-for-sdk/tracking/real-time-uninstall-tracking"},{"group":"Javascript Bridge","root":{"title":"JavaScript Bridge","href":"/developer-guide/components-for-sdk/javascript-bridge/overview"},"pages":[{"title":"JavaScript Bridge for HTML In-Apps","href":"/developer-guide/components-for-sdk/javascript-bridge/javascript-bridge-for-html-in-apps"},{"title":"JavaScript Bridge for On-Site Messaging and Landing Pages","href":"/developer-guide/components-for-sdk/javascript-bridge/javascript-bridge-for-on-site-messaging-and-landing-pages"}]},{"title":"Android Push Configuration For Hybrid Applications","sidebarTitle":"Push Notification","href":"/developer-guide/components-for-sdk/push-notification/android-push-configuration-for-hybrid-applications"}]},{"title":"Getting FCM Server Key","sidebarTitle":"Partner Integrations","href":"/developer-guide/partner-integrations/firebase/getting-fcm-server-key"}]}]},{"tab":"API Guide","pages":[{"title":"API Guide","href":"/api/introduction"}]},{"tab":"AI \u0026 Intelligence","pages":[{"title":"AI \u0026 Intelligence","href":"/user-guide/ai-and-intelligence/overview"}]},{"tab":"Partner Integrations","pages":[{"title":"Partner Integrations","href":"/partner-guide/introduction"}]},{"tab":"Use Cases","pages":[{"title":"Use Cases","href":"/use-cases/introduction"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/subscribe-to-release-notes"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/developer-guide/web-sdk/other-supported-web-sdk-integration/web-view-web-sdk-support"}]}]},"basePath":"","title":"WebView - WebSDK Support - MoEngage","buildId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","deploymentId":"dpl_CEsowfH15TDzsBT2BFbX312Be4Ct","dynamics":[],"chunks":[]}