The viewListing event should be fired on pages displaying product lists such as a category page or a search results page. You can use AFEventListView to represent this event. You must include the IDs of the first three products displayed on the page. These IDs must be unique and match those used in the catalog feed.
The viewProduct event should be fired on all product-details pages. You can use AppsFlyer’s AFEventContentView constant for this event. You must use the ID of the product detailed on the page. The product ID must be unique and must be the same ID used in the catalog feed.
The viewBasket event should be fired on the basket-details pages. You must include the ID, unit price, and quantity for each product in the basket. These IDs must be unique and match those used in the catalog feed.
The trackTransaction event should be fired on order-confirmation pages. You can use AppsFlyer’s AFEventPurchase constant for this event. You must include a unique transaction ID as well as the ID, unit price, and quantity for each purchased product.
Clients should send Criteo the hashed email address of the app user when available, to enable cross-device targeting.Steps to generate a hash of an email address:
Convert all characters to lower case
Remove any blank spaces
Convert to UTF-8
Hash using SHA256 algorithm
// You can pass one email...[[AppsFlyerTracker sharedTracker] setUserEmails:@"email2@mydomain.com" withCryptType:EmailCryptTypeSHA256];// ...or multiple emails[[AppsFlyerTracker sharedTracker] setUserEmails:@[@"email1@mydomain.com", @"email2@mydomain.com"] withCryptType:EmailCryptTypeSHA256];
Once all events have been implemented, you should contact your Criteo representative to begin the testing phase.
Please allow sufficient time (at least a week before) for testing prior to the app submission in order to ensure that the data you are sending is complete.
Criteo requires the following elements:
App build to test the collection of events on Criteo side.
If testing remotely, the IDFA of the test device.
Deep link example (homepage & product detail).
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Criteo Docs","colors":{"primary":"#FE5001","light":"#FE5001","dark":"#FE5001"},"logo":{"light":"https://mintcdn.com/criteo-e1682996/oGhV8AgFf1afoax4/logo/light.svg?fit=max\u0026auto=format\u0026n=oGhV8AgFf1afoax4\u0026q=85\u0026s=25bacaf5d815bd4242b98ca759ed086c","dark":"https://mintcdn.com/criteo-e1682996/oGhV8AgFf1afoax4/logo/dark.svg?fit=max\u0026auto=format\u0026n=oGhV8AgFf1afoax4\u0026q=85\u0026s=28cba1b2ef8d4354739c680b8335cc7c"},"favicon":"https://mintcdn.com/criteo-e1682996/-a_Zn-jb9gMTKnuK/favicon.png?fit=max\u0026auto=format\u0026n=-a_Zn-jb9gMTKnuK\u0026q=85\u0026s=6d00e60b5acc0fba4fca5c228132809a","appearance":{"default":"light"},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://status.criteo.com/","label":"Status"},{"href":"https://partners.criteo.com/","label":"Partner Portal"}],"primary":{"type":"button","label":"Contact Sales","href":"https://www.criteo.com/talk-to-an-expert/"}},"fonts":{"heading":{"family":"Graphik LC Web","source":"https://www.criteo.com/wp-content/themes/criteo2017/fonts/graphik-lc/Graphik-Semibold-Cy-Web.woff2","format":"woff2"},"body":{"family":"Graphik LC Web","source":"https://criteo.com/wp-content/themes/criteo2017/fonts/graphik-lc/Graphik-Regular-Cy-Web.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"heap":{"appId":"305485844"}},"contextual":{"options":["copy","view","chatgpt","claude","vscode","grok"],"display":"header"},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"criteo-e1682996","hasAudioNarration":false,"actualSubdomain":"criteo-e1682996","customDomains":["developers.criteo.com"],"gitSource":{"type":"github","owner":"criteo","repo":"public-api-doc","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea31697bec8f09c4be90af","collectionId":"d69b8cf3-9fe3-4ff2-82a0-90adfd005844","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea31697bec8f09c4be90af"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aea31697bec8f09c4be90af","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":1601},{"language":"default","tag":"Marketing Solutions API","count":1398},{"language":"default","tag":"Retail Media API","count":1058},{"language":"default","tag":"Campaign","count":670},{"language":"default","tag":"Guides","count":657},{"language":"default","tag":"Guides for Retail Media API","count":274},{"language":"default","tag":"Audience","count":226},{"language":"default","tag":"Marketing Solutions Endpoints","count":200},{"language":"default","tag":"Analytics","count":191},{"language":"default","tag":"Creative","count":161}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"byok-sep-25","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":"billing-updated-9-15","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":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"69c3ab31b75fcc3c3b4cdb3d","deploymentId":"69b6cc72b519f361e0c30b32","questionText":"How do I get started with Onsite Display campaigns?","status":"active","generatedBy":"manual","createdAt":"2026-03-25T09:30:25.685Z","updatedAt":"2026-03-25T09:30:25.685Z","__v":0},{"_id":"69c3ab1fb75fcc3c3b4cdafb","deploymentId":"69b6cc72b519f361e0c30b32","questionText":"How do I get started with Sponsored Products campaigns?","status":"active","generatedBy":"manual","createdAt":"2026-03-25T09:30:07.459Z","updatedAt":"2026-03-25T09:30:07.459Z","__v":0}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":""}],"page":{"pagePath":"mobile-integrations/docs/appsflyer-ios","slug":"/mobile-integrations/docs/appsflyer-ios","pageMetadata":{"title":"AppsFlyer In-App Events [iOS]","description":"Implement Criteo in-app events for iOS using the AppsFlyer SDK.","href":"/mobile-integrations/docs/appsflyer-ios"},"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: \"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\"\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`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`about-this-guide`,children:`About this Guide`}),`\n`,_jsx(_components.p,{children:`This document provides detailed information on the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Recommended events and parameters`}),`\n`,_jsx(_components.li,{children:`Deep link implementation`}),`\n`,_jsx(_components.li,{children:`Testing process`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`recommended-events-per-vertical`,children:`Recommended Events per Vertical`}),`\n`,_jsx(_components.p,{children:`The recommendation is to send all events that describe the “user-flow” in the app.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Event Name`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Retail`}),_jsx(_components.th,{children:`Travel`}),_jsx(_components.th,{children:`Classified`}),_jsx(_components.th,{children:`Gaming`}),_jsx(_components.th,{children:`Streaming Entertainment`}),_jsx(_components.th,{children:`Finance`}),_jsx(_components.th,{children:`Dating Social`}),_jsx(_components.th,{children:`RideHailing`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`app open/app launch`}),_jsx(_components.td,{children:`when user installs the app`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`home page / App open`}),_jsx(_components.td,{children:`when user opens the app or arrives on the home page`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`view item list / listing`}),_jsx(_components.td,{children:`when a user sees list of items/products/offering`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`view item`}),_jsx(_components.td,{children:`when a user sees one specific item/products/offering`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`add to cart`}),_jsx(_components.td,{children:`when a user adds an item/product to the cart`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`basket`}),_jsx(_components.td,{children:`when user is on the basket page`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`purchase`}),_jsx(_components.td,{children:`when user makes a purchase`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`add to wish list`}),_jsx(_components.td,{children:`when a user adds an item/product to the wish list`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`complete registration / sign up`}),_jsx(_components.td,{children:`when a user creates an account`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`login`}),_jsx(_components.td,{children:`when a user logs in`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`add payment info`}),_jsx(_components.td,{children:`when a user adds payment info`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`begin checkout`}),_jsx(_components.td,{children:`when a user starts the purchase flow`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`purchase cancelled / refund`}),_jsx(_components.td,{children:`when a user cancels a purchase or asks for a refund`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`generate lead`}),_jsx(_components.td,{children:`when a user generates a lead`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`start trial`}),_jsx(_components.td,{children:`when a user starts the trial version of the app`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`subscribe`}),_jsx(_components.td,{children:`when a user subscribes (recurring payment)`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`select item`}),_jsx(_components.td,{children:`when a user has selected content in an app`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`earn virtual currency`}),_jsx(_components.td,{children:`when a user earns virtual currency`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`level up`}),_jsx(_components.td,{children:`when a user passes a level`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`spend virtual currency`}),_jsx(_components.td,{children:`when a user spends virtual currency`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`tutorial begin`}),_jsx(_components.td,{children:`when a user starts the tutorial`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`tutorial complete`}),_jsx(_components.td,{children:`when a user completes the tutorial`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`unlock achievement`}),_jsx(_components.td,{children:`when a user unlocks an achievement`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`search`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`video/audio start`}),_jsx(_components.td,{children:`when user starts to play media in the app`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Y`}),_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`in-app-events-implementation`,children:`In-App Events Implementation`}),`\n`,_jsx(Heading,{level:`3`,id:`viewhome`,children:`viewHome`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`viewHome`}),` event is automatically tracked once the AppsFlyer SDK initializes. This event is fired for each user session.`]}),`\n`,_jsx(Heading,{level:`3`,id:`viewlisting`,children:`viewListing`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`viewListing`}),` event should be fired on pages displaying product lists such as a category page or a search results page. You can use `,_jsx(_components.code,{children:`AFEventListView`}),` to represent this event. You must include the IDs of the first three products displayed on the page. `,_jsx(_components.strong,{children:`These IDs must be unique and match those used in the catalog feed.`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`objective-c`,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:`objective-c`,children:_jsxs(_components.code,{language:`objective-c`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`trackEvent:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AFEventListView`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withValues:`}),_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:` AFEventParamCurrency: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"USD\"`}),_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:` AFEventParamContentList: @[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"4\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"6\"`}),_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:` AFEventParamDateA: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-05\"`}),_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:` AFEventParamDateB: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-06\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`viewproduct`,children:`viewProduct`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`viewProduct`}),` event should be fired on all product-details pages. You can use AppsFlyer’s `,_jsx(_components.code,{children:`AFEventContentView`}),` constant for this event. You must use the ID of the product detailed on the page. `,_jsx(_components.strong,{children:`The product ID must be unique and must be the same ID used in the catalog feed.`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`objective-c`,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:`objective-c`,children:_jsxs(_components.code,{language:`objective-c`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`trackEvent:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AFEventContentView`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withValues:`}),_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:` AFEventParamCurrency: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"USD\"`}),_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:` AFEventParamContentId: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"4\"`}),_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:` AFEventParamDateA: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-05\"`}),_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:` AFEventParamDateB: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-06\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`viewbasket`,children:`viewBasket`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`viewBasket`}),` event should be fired on the basket-details pages. You must include the ID, unit price, and quantity for each product in the basket. `,_jsx(_components.strong,{children:`These IDs must be unique and match those used in the catalog feed.`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`objective-c`,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:`objective-c`,children:_jsxs(_components.code,{language:`objective-c`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`trackEvent:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AFEventInitiatedCheckout`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withValues:`}),_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:` AFEventParamCurrency: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"USD\"`}),_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:` AFEventParamContentId: @[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"6\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"7\"`}),_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:` AFEventParamPrice: @[@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5.40`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`6.20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2.45`}),_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:` AFEventParamQuantity: @[@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_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:` AFEventParamDateA: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-05\"`}),_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:` AFEventParamDateB: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-06\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`tracktransaction`,children:`trackTransaction`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`trackTransaction`}),` event should be fired on order-confirmation pages. You can use AppsFlyer’s `,_jsx(_components.code,{children:`AFEventPurchase`}),` constant for this event. `,_jsx(_components.strong,{children:`You must include a unique transaction ID as well as the ID, unit price, and quantity for each purchased product.`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`objective-c`,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:`objective-c`,children:_jsxs(_components.code,{language:`objective-c`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`trackEvent:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AFEventPurchase`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withValues:`}),_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:` AFEventParamCurrency: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"USD\"`}),_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:` AFEventParamReceiptId: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"unique-transaction-id\"`}),_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:` AFEventParamRevenue: @`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`58.9`}),_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:` AFEventParamContentId: @[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"6\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"7\"`}),_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:` AFEventParamPrice: @[@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10.2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15.99`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12.50`}),_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:` AFEventParamQuantity: @[@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_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:` AFEventParamDateA: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-05\"`}),_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:` AFEventParamDateB: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"2017-05-06\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`hashed-email-for-cross-device-targeting`,children:`Hashed Email for Cross-Device Targeting`}),`\n`,_jsx(_components.p,{children:`Clients should send Criteo the hashed email address of the app user when available, to enable cross-device targeting.`}),`\n`,_jsx(_components.p,{children:`Steps to generate a hash of an email address:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Convert all characters to lower case`}),`\n`,_jsx(_components.li,{children:`Remove any blank spaces`}),`\n`,_jsx(_components.li,{children:`Convert to UTF-8`}),`\n`,_jsxs(_components.li,{children:[`Hash using `,_jsx(_components.strong,{children:`SHA256`}),` algorithm`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`objective-c`,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:`objective-c`,children:_jsxs(_components.code,{language:`objective-c`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// You can pass one email...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setUserEmails:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"email2@mydomain.com\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withCryptType:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EmailCryptTypeSHA256`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ...or multiple emails`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[AppsFlyerTracker `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sharedTracker`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setUserEmails:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`@[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"email1@mydomain.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@\"email2@mydomain.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` withCryptType:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EmailCryptTypeSHA256`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`];`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`testing-process`,children:`Testing Process`}),`\n`,_jsx(_components.p,{children:`Once all events have been implemented, you should contact your Criteo representative to begin the testing phase.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Please allow sufficient time (at least a week before) for testing `,_jsx(_components.strong,{children:`prior`}),` to the app submission in order to ensure that the data you are sending is complete.`]})}),`\n`,_jsx(_components.p,{children:`Criteo requires the following elements:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`App build to test the collection of events on Criteo side.`}),`\n`,_jsx(_components.li,{children:`If testing remotely, the IDFA of the test device.`}),`\n`,_jsx(_components.li,{children:`Deep link example (homepage \u0026 product detail).`}),`\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":"AppsFlyer In-App Events [iOS]","description":"Implement Criteo in-app events for iOS using the AppsFlyer SDK.","href":"/mobile-integrations/docs/appsflyer-ios"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"About this Guide","slug":"about-this-guide","depth":2,"children":[]},{"title":"Recommended Events per Vertical","slug":"recommended-events-per-vertical","depth":2,"children":[]},{"title":"In-App Events Implementation","slug":"in-app-events-implementation","depth":2,"children":[{"title":"viewHome","slug":"viewhome","depth":3,"children":[]},{"title":"viewListing","slug":"viewlisting","depth":3,"children":[]},{"title":"viewProduct","slug":"viewproduct","depth":3,"children":[]},{"title":"viewBasket","slug":"viewbasket","depth":3,"children":[]},{"title":"trackTransaction","slug":"tracktransaction","depth":3,"children":[]},{"title":"Hashed Email for Cross-Device Targeting","slug":"hashed-email-for-cross-device-targeting","depth":3,"children":[]}]},{"title":"Testing Process","slug":"testing-process","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"criteo-e1682996","siteName":"Criteo Docs","title":"AppsFlyer In-App Events [iOS] - Criteo Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-14T08:55:44.016Z","originalFileLocation":"mobile-integrations/docs/appsflyer-ios.mdx"},"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=\"light\"}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=\"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Criteo Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"AppsFlyer In-App Events [iOS] - Criteo Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Criteo Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://criteo-e1682996.mintlify.app/_mintlify/api/og/v2?division=AppsFlyer\u0026amp;title=AppsFlyer+In-App+Events+%5BiOS%5D\u0026amp;description=Implement+Criteo+in-app+events+for+iOS+using+the+AppsFlyer+SDK.\u0026amp;theme=41f5d581d5525872491a60f5\u0026amp;signature=f481782aea0fc7ee4facf33f9ace77c002042e01daeb203098d13a8fa0ba2c2c\">\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=\"AppsFlyer In-App Events [iOS] - Criteo Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://criteo-e1682996.mintlify.app/_mintlify/api/og/v2?division=AppsFlyer\u0026amp;title=AppsFlyer+In-App+Events+%5BiOS%5D\u0026amp;description=Implement+Criteo+in-app+events+for+iOS+using+the+AppsFlyer+SDK.\u0026amp;theme=41f5d581d5525872491a60f5\u0026amp;signature=f481782aea0fc7ee4facf33f9ace77c002042e01daeb203098d13a8fa0ba2c2c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/criteo-e1682996/Q7JsFULesw3hnXj8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Criteo Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FE5001\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mobile-integrations/docs/appsflyer-ios.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.criteo.com/#organization\",\"name\":\"Criteo Docs\",\"url\":\"https://developers.criteo.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/criteo-e1682996/oGhV8AgFf1afoax4/logo/light.svg?fit=max\u0026auto=format\u0026n=oGhV8AgFf1afoax4\u0026q=85\u0026s=25bacaf5d815bd4242b98ca759ed086c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.criteo.com#website\",\"name\":\"Criteo Docs\",\"url\":\"https://developers.criteo.com\",\"publisher\":{\"@id\":\"https://developers.criteo.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios#webpage\",\"url\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios\",\"name\":\"AppsFlyer In-App Events [iOS]\",\"description\":\"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\",\"dateModified\":\"2026-08-14T08:55:44.016Z\",\"isPartOf\":{\"@id\":\"https://developers.criteo.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"AppsFlyer\",\"item\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-criteo-integration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AppsFlyer In-App Events [iOS]\",\"item\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios#article\",\"headline\":\"AppsFlyer In-App Events [iOS]\",\"name\":\"AppsFlyer In-App Events [iOS]\",\"description\":\"Implement Criteo in-app events for iOS using the AppsFlyer SDK.\",\"url\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios\",\"mainEntityOfPage\":{\"@id\":\"https://developers.criteo.com/mobile-integrations/docs/appsflyer-ios#webpage\"},\"dateModified\":\"2026-08-14T08:55:44.016Z\",\"publisher\":{\"@id\":\"https://developers.criteo.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.criteo.com#website\"}}]}\u003c/script>","siteName":"Criteo Docs","nav":{"global":{},"products":[{"product":"API Resources","pages":[{"title":"API Resources","href":"/criteo-apis/docs/overview"}]},{"product":"Retail Media API","pages":[{"title":"Retail Media API","href":"/retail-media/docs/welcome-to-criteo"}]},{"product":"Marketing Solutions API","pages":[{"title":"Marketing Solutions API","href":"/marketing-solutions/docs/welcome-to-criteo"}]},{"product":"Retailer Integration","pages":[{"title":"Retailer Integration","href":"/retailer-integration/docs/overview"}]},{"product":"MMP Integrations","tabs":[{"tab":"Guides","icon":"mobile","pages":[{"title":"Criteo Mobile Endpoint Specification","href":"/mobile-integrations/docs/mobile-endpoint-specification"},{"title":"Deep Linking Configuration and Requirements","href":"/mobile-integrations/docs/deeplinks"},{"group":"AppsFlyer","pages":[{"title":"Criteo Integration With AppsFlyer","description":"Set up your Criteo App campaigns (App Install or App Retargeting) with AppsFlyer.","href":"/mobile-integrations/docs/appsflyer-criteo-integration"},{"title":"AppsFlyer In-App Events [iOS]","href":"/mobile-integrations/docs/appsflyer-ios"},{"title":"AppsFlyer In-App Events [Android]","description":"Implement Criteo in-app events for Android using the AppsFlyer SDK.","href":"/mobile-integrations/docs/appsflyer-android"}]},{"group":"Adjust","pages":[{"title":"Criteo Integration With Adjust","href":"/mobile-integrations/docs/adjust-criteo-integration"},{"title":"Adjust In-App Events [iOS]","href":"/mobile-integrations/docs/adjust-ios"},{"title":"Adjust In-App Events [Android]","href":"/mobile-integrations/docs/adjust-android"}]},{"group":"Branch","pages":[{"title":"Criteo Integration With Branch","href":"/mobile-integrations/docs/branch-overview"},{"title":"Branch In-App Events [iOS]","href":"/mobile-integrations/docs/branch-ios"},{"title":"Branch In-App Events [Android]","href":"/mobile-integrations/docs/branch-android"}]},{"group":"Kochava","pages":[{"title":"Criteo Integration With Kochava [Android]","href":"/mobile-integrations/docs/kochava-android"},{"title":"Criteo Integration With Kochava [iOS]","href":"/mobile-integrations/docs/kochava-ios"}]},{"group":"Singular","pages":[{"title":"Criteo Integration With Singular","href":"/mobile-integrations/docs/criteo-integration-with-singular"}]}]}]},{"product":"Model Context Protocol (MCP)","pages":[{"title":"Model Context Protocol (MCP)","href":"/mcp/docs/criteos-model-context-protocol-mcp"}]}]},"basePath":"","title":"AppsFlyer In-App Events [iOS] - Criteo Docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}