Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.
Omneo can push any profile-level activity into Klaviyo as a custom metric (a Klaviyo event). These metrics are perfect triggers for Flows: they can fire emails, SMS, or other automations the moment something happens in Omneo.Metrics are delivered from Omneo using a target. Targets are the Omneo-side mechanism that calls into the Klaviyo extension and tell it which job to run.
An Omneo reaction is configured to fire on the activity you care about (e.g. tier change, purchase, custom milestone).
The reaction calls an Omneo target that points at the extension’s metric endpoint.
The extension queues the work on the outbound Cloud Tasks queue (see Inbound queues).
The job calls Klaviyo’s Create Event API to create the metric against the matching Klaviyo profile.
The metric name, properties, and the profile it attaches to are all controlled by the body of your target. The extension does not invent these. The body must include attributes.profile.data.id (the Klaviyo profile ID) or attributes.profile.data.attributes.email so the metric can be attached to the correct profile.
Sometimes you need Klaviyo to render content that links back into Omneo with an authenticated session (for example, a personalised wallet page, a reward redemption link, or a “manage preferences” deep link). In these cases, Omneo can attach a short-lived ID token to the metric.Klaviyo can then pull this token into emails or SMS as a Liquid variable and include it on URLs back to Omneo, allowing the customer to land on their own profile without logging in again.This is the authenticated way to deep link. Profile Portal also accepts an unauthenticated, evergreen link built from the Omneo profile ID that can change one comms preference on load. For when to use which, see Comms preference deep links. For the evergreen links that need no token (preferences, unsubscribe, complete your profile, show my card), see Preference centre links in Klaviyo emails.
Once the metric is delivered, IDToken and IDTokenExpiry are available as event properties inside Klaviyo. You can reference them in Flow message templates like any other event property:
<a href="https://your-omneo-frontend.example.com/account?token={{ event.IDToken }}"> View your rewards</a>
ID tokens are short-lived by design. Use them in messages that are sent immediately (transactional or near-real-time Flow emails). They are not suitable for evergreen content or messages with long send delays. By the time the customer clicks, the token will have expired.
If withToken=true is set but the metric body has no Klaviyo profile ID, the token generation is skipped silently and the metric is sent without the extra properties.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Omneo API","colors":{"primary":"#FF6161","light":"#FF6161","dark":"#E04444"},"logo":{"light":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/light.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=c68e59d64ae77bf2ac88c191b875b014","dark":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/dark.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=800651cbcf5d77a7b130ae6928a7c590"},"favicon":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/favicon.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=7ccd4454f7329addccfd399fcdff7d7c","navbar":{"links":[{"href":"mailto:support@omneo.io","label":"Support"}],"primary":{"type":"button","label":"Get started","href":"https://docs.omneo.io/getting-started/what-is-omneo"}},"footer":{"socials":{"github":"https://github.com/omneo","linkedin":"https://linkedin.com/company/omneocx"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://omneo.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"omneo","hasAudioNarration":false,"actualSubdomain":"omneo","customDomains":["docs.omneo.io"],"gitSource":{"type":"github","owner":"omneo","repo":"omneo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af543f7e020fc6cc103a768","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":697},{"language":"default","tag":"Commerce","count":172},{"language":"default","tag":"Incentives","count":141},{"language":"default","tag":"Profiles","count":100},{"language":"default","tag":"Extensions","count":82},{"language":"default","tag":"Developers","count":78},{"language":"default","tag":"Configuration","count":73},{"language":"default","tag":"Concepts","count":62},{"language":"default","tag":"Reactions","count":54},{"language":"default","tag":"Platform","count":47}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@omneo.io"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"editor-metadata","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"extensions/klaviyo/metrics","slug":"/extensions/klaviyo/metrics","pageMetadata":{"title":"Metrics \u0026 targets","description":"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.","href":"/extensions/klaviyo/metrics"},"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: \"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,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,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Omneo can push any profile-level activity into Klaviyo as a `,_jsx(_components.strong,{children:`custom metric`}),` (a Klaviyo event). These metrics are perfect triggers for Flows: they can fire emails, SMS, or other automations the moment something happens in Omneo.`]}),`\n`,_jsxs(_components.p,{children:[`Metrics are delivered from Omneo using a `,_jsx(_components.strong,{children:`target`}),`. Targets are the Omneo-side mechanism that calls into the Klaviyo extension and tell it which job to run.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-metrics-flow`,children:`How metrics flow`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Omneo Reaction ──▶ Omneo Target ──▶ Klaviyo Extension ──▶ Klaviyo Event`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` (any event) (POST /targets/ (queues to outbound (visible in`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` klaviyo/metric) Cloud Tasks queue) Klaviyo)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`An Omneo `,_jsx(_components.strong,{children:`reaction`}),` is configured to fire on the activity you care about (e.g. tier change, purchase, custom milestone).`]}),`\n`,_jsxs(_components.li,{children:[`The reaction calls an Omneo `,_jsx(_components.strong,{children:`target`}),` that points at the extension’s metric endpoint.`]}),`\n`,_jsxs(_components.li,{children:[`The extension queues the work on the outbound Cloud Tasks queue (see `,_jsx(_components.a,{href:`/extensions/klaviyo/queues`,children:`Inbound queues`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`The job calls Klaviyo’s `,_jsx(_components.a,{href:`https://developers.klaviyo.com/en/reference/create_event`,children:`Create Event`}),` API to create the metric against the matching Klaviyo profile.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The metric name, properties, and the profile it attaches to are all controlled by the body of your target. The extension does not invent these. The body must include `,_jsx(_components.code,{children:`attributes.profile.data.id`}),` (the Klaviyo profile ID) or `,_jsx(_components.code,{children:`attributes.profile.data.attributes.email`}),` so the metric can be attached to the correct profile.`]}),`\n`,_jsx(Heading,{level:`2`,id:`target-endpoint`,children:`Target endpoint`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`POST https://{your-extension-url}/{tenant}/api/v1/targets/klaviyo/metric`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Available targets on the extension:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Target`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`metric`})}),_jsx(_components.td,{children:`Create a custom Klaviyo event`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`upsert-profile-data`})}),_jsx(_components.td,{children:`Force a profile resync to Klaviyo`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`data-source-record`})}),_jsx(_components.td,{children:`Push a data source record (e.g. into Omneo Rewards, Omneo Dates, etc.)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`adding-an-id-token-to-an-outbound-metric`,children:`Adding an ID token to an outbound metric`}),`\n`,_jsxs(_components.p,{children:[`Sometimes you need Klaviyo to render content that links back into Omneo with an authenticated session (for example, a personalised wallet page, a reward redemption link, or a “manage preferences” deep link). In these cases, Omneo can attach a short-lived `,_jsx(_components.strong,{children:`ID token`}),` to the metric.`]}),`\n`,_jsx(_components.p,{children:`Klaviyo can then pull this token into emails or SMS as a Liquid variable and include it on URLs back to Omneo, allowing the customer to land on their own profile without logging in again.`}),`\n`,_jsxs(_components.p,{children:[`This is the authenticated way to deep link. Profile Portal also accepts an unauthenticated, evergreen link built from the Omneo profile ID that can change one comms preference on load. For when to use which, see `,_jsx(_components.a,{href:`/experiences/profile-portal/comms-preference-deep-links`,children:`Comms preference deep links`}),`. For the evergreen links that need no token (preferences, unsubscribe, complete your profile, show my card), see `,_jsx(_components.a,{href:`/extensions/klaviyo/overview#preference-centre-links-in-klaviyo-emails`,children:`Preference centre links in Klaviyo emails`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-to-enable-it`,children:`How to enable it`}),`\n`,_jsxs(_components.p,{children:[`Add the query parameter `,_jsx(_components.code,{children:`withToken=true`}),` to the target call. The extension will:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Read the Klaviyo profile ID from `,_jsx(_components.code,{children:`attributes.profile.data.id`}),` on the metric body.`]}),`\n`,_jsxs(_components.li,{children:[`Call Omneo’s identity token endpoint using the configured `,_jsx(_components.strong,{children:`identity handle`}),` (defaults to `,_jsx(_components.code,{children:`klaviyo`}),`).`]}),`\n`,_jsx(_components.li,{children:`Base64-encode the returned token.`}),`\n`,_jsxs(_components.li,{children:[`Attach two extra properties to the metric before sending it to Klaviyo:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`IDToken`}),`: the base64-encoded token`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`IDTokenExpiry`}),`: the token’s expiry timestamp`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-target-url`,children:`Example target URL`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`POST https://{your-extension-url}/{tenant}/api/v1/targets/klaviyo/metric?withToken=true`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`3`,id:`using-the-token-in-klaviyo`,children:`Using the token in Klaviyo`}),`\n`,_jsxs(_components.p,{children:[`Once the metric is delivered, `,_jsx(_components.code,{children:`IDToken`}),` and `,_jsx(_components.code,{children:`IDTokenExpiry`}),` are available as event properties inside Klaviyo. You can reference them in Flow message templates like any other event property:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`liquid`,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:`liquid`,children:_jsxs(_components.code,{language:`liquid`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`a`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` href`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://your-omneo-frontend.example.com/account?token=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#808080`},children:`{{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` event`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`IDToken`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#808080`},children:` }}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` View your rewards`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`a`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`ID tokens are short-lived by design. Use them in messages that are sent immediately (transactional or near-real-time Flow emails). They are not suitable for evergreen content or messages with long send delays. By the time the customer clicks, the token will have expired.`})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`withToken=true`}),` is set but the metric body has no Klaviyo profile ID, the token generation is skipped silently and the metric is sent without the extra properties.`]})})]})}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":"Metrics \u0026 targets","description":"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.","href":"/extensions/klaviyo/metrics"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How metrics flow","slug":"how-metrics-flow","depth":2,"children":[]},{"title":"Target endpoint","slug":"target-endpoint","depth":2,"children":[]},{"title":"Adding an ID token to an outbound metric","slug":"adding-an-id-token-to-an-outbound-metric","depth":2,"children":[{"title":"How to enable it","slug":"how-to-enable-it","depth":3,"children":[]},{"title":"Example target URL","slug":"example-target-url","depth":3,"children":[]},{"title":"Using the token in Klaviyo","slug":"using-the-token-in-klaviyo","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"omneo","siteName":"Omneo API","title":"Metrics \u0026 targets - Omneo API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:43:52.692Z","originalFileLocation":"extensions/klaviyo/metrics.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=\"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=\"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Omneo API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_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/omneo/svRkUa8yAUbXSnpa/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Metrics \u0026amp; targets - Omneo API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Omneo API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.omneo.io/extensions/klaviyo/metrics\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://omneo.mintlify.site/_mintlify/api/og/v2?division=Klaviyo\u0026amp;title=Metrics+%26+targets\u0026amp;description=Send+Omneo+reactions+to+Klaviyo+as+custom+events%2C+with+optional+identity+tokens+for+authenticated+personalisation.\u0026amp;theme=3c28c46fad00eb14f98e8091\u0026amp;signature=7977f080adad2564dcc2274fa5e292433e4f468e819769c20c0b5efac552b329\">\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=\"Metrics \u0026amp; targets - Omneo API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://omneo.mintlify.site/_mintlify/api/og/v2?division=Klaviyo\u0026amp;title=Metrics+%26+targets\u0026amp;description=Send+Omneo+reactions+to+Klaviyo+as+custom+events%2C+with+optional+identity+tokens+for+authenticated+personalisation.\u0026amp;theme=3c28c46fad00eb14f98e8091\u0026amp;signature=7977f080adad2564dcc2274fa5e292433e4f468e819769c20c0b5efac552b329\">\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/omneo/svRkUa8yAUbXSnpa/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Omneo API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6161\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.omneo.io/extensions/klaviyo/metrics\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/extensions/klaviyo/metrics.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.omneo.io/#organization\",\"name\":\"Omneo API\",\"url\":\"https://docs.omneo.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/light.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=c68e59d64ae77bf2ac88c191b875b014\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.omneo.io#website\",\"name\":\"Omneo API\",\"url\":\"https://docs.omneo.io\",\"publisher\":{\"@id\":\"https://docs.omneo.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.omneo.io/extensions/klaviyo/metrics#webpage\",\"url\":\"https://docs.omneo.io/extensions/klaviyo/metrics\",\"name\":\"Metrics \u0026 targets\",\"description\":\"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\",\"dateModified\":\"2026-11-12T04:43:52.692Z\",\"isPartOf\":{\"@id\":\"https://docs.omneo.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.omneo.io/extensions/klaviyo/metrics#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.omneo.io/extensions/klaviyo/metrics#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Communications\",\"item\":\"https://docs.omneo.io/extensions/klaviyo/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Klaviyo\",\"item\":\"https://docs.omneo.io/extensions/klaviyo/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Metrics \u0026 targets\",\"item\":\"https://docs.omneo.io/extensions/klaviyo/metrics\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.omneo.io/extensions/klaviyo/metrics#article\",\"headline\":\"Metrics \u0026 targets\",\"name\":\"Metrics \u0026 targets\",\"description\":\"Send Omneo reactions to Klaviyo as custom events, with optional identity tokens for authenticated personalisation.\",\"url\":\"https://docs.omneo.io/extensions/klaviyo/metrics\",\"mainEntityOfPage\":{\"@id\":\"https://docs.omneo.io/extensions/klaviyo/metrics#webpage\"},\"dateModified\":\"2026-11-12T04:43:52.692Z\",\"publisher\":{\"@id\":\"https://docs.omneo.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.omneo.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Omneo API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Omneo API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/extensions/klaviyo/metrics.md","siteName":"Omneo API","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://omneo.io"}]},"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":"/getting-started/what-is-omneo"}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/glossary"}]},{"tab":"User Guides","pages":[{"title":"User Guides","href":"/business-guides/managing-your-instance/is-omneo-right"}]},{"tab":"Experiences","pages":[{"title":"Experiences","href":"/experiences/omneo-insights/overview"}]},{"tab":"Extensions","groups":[{"group":"Overview","pages":[{"title":"Extensions Overview","href":"/extensions/overview"}]},{"group":"Ecommerce","pages":[{"group":"Shopify","pages":[{"title":"Shopify","href":"/extensions/shopify/overview"},{"title":"Setting up the Shopify extension","href":"/extensions/shopify/setup"},{"title":"Profile field mapping","href":"/extensions/shopify/profile-field-mapping"},{"title":"Shopify Authentication","href":"/extensions/shopify/authentication"},{"title":"Shopify Lists","href":"/extensions/shopify/lists"},{"title":"Profile Portal theme extension","href":"/extensions/shopify/profile-portal"},{"title":"Benefits","href":"/extensions/shopify/benefits"},{"title":"Checkout rewards","href":"/extensions/shopify/checkout-rewards"},{"title":"Credits and gift cards","href":"/extensions/shopify/credits-and-gift-cards"},{"title":"Shopify changelog","href":"/extensions/shopify/changelog"}]},{"group":"BigCommerce","pages":[{"title":"BigCommerce","href":"/extensions/bigcommerce/overview"},{"title":"BigCommerce changelog","href":"/extensions/bigcommerce/changelog"}]},{"group":"commercetools","pages":[{"title":"commercetools","href":"/extensions/commercetools/overview"},{"title":"commercetools changelog","href":"/extensions/commercetools/changelog"}]},{"group":"Commerce Layer","pages":[{"title":"Commerce Layer","href":"/extensions/commerce-layer/overview"},{"title":"Commerce Layer changelog","href":"/extensions/commerce-layer/changelog"}]},{"group":"Adobe Commerce","pages":[{"title":"Adobe Commerce","href":"/extensions/adobe-commerce/overview"},{"title":"Adobe Commerce changelog","href":"/extensions/adobe-commerce/changelog"}]},{"group":"Salesforce Commerce Cloud","pages":[{"title":"Salesforce Commerce Cloud","href":"/extensions/salesforce-cc/overview"},{"title":"Salesforce Commerce Cloud changelog","href":"/extensions/salesforce-cc/changelog"}]}]},{"group":"Communications","pages":[{"group":"Klaviyo","pages":[{"title":"Klaviyo","href":"/extensions/klaviyo/overview"},{"title":"Installation","href":"/extensions/klaviyo/installation"},{"title":"Profile sync","href":"/extensions/klaviyo/profile-sync"},{"title":"System webhooks","href":"/extensions/klaviyo/system-webhooks"},{"title":"Flow webhooks","description":"Trigger Omneo actions from a Klaviyo Flow using webhook actions, with the headers and body Omneo expects.","href":"/extensions/klaviyo/flow-webhooks"},{"title":"Metrics \u0026 targets","href":"/extensions/klaviyo/metrics"},{"title":"Inbound queues","description":"How the Klaviyo extension queues and processes work in the background.","href":"/extensions/klaviyo/queues"},{"title":"Master list","href":"/extensions/klaviyo/master-list"}]},{"group":"Emarsys","pages":[{"title":"Emarsys","href":"/extensions/emarsys/overview"}]},{"group":"Attentive","pages":[{"title":"Attentive","href":"/extensions/attentive/overview"}]},{"group":"Salesforce Marketing Cloud","pages":[{"title":"Salesforce Marketing Cloud","href":"/extensions/salesforce-mc/overview"}]}]},{"group":"ERP and POS","pages":[{"group":"Apparel21","pages":[{"title":"Apparel21","href":"/extensions/apparel21/overview"}]},{"group":"Cin7","pages":[{"title":"Cin7","href":"/extensions/cin7/overview"}]},{"group":"Indigo 8","pages":[{"title":"Indigo 8","href":"/extensions/indigo8/overview"},{"title":"Setting up the Indigo 8 extension","href":"/extensions/indigo8/setup"},{"title":"Profile sync","href":"/extensions/indigo8/profile-sync"},{"title":"Transaction mapping","href":"/extensions/indigo8/transaction-mapping"},{"title":"Product sync","href":"/extensions/indigo8/product-sync"}]},{"group":"Remira","pages":[{"title":"Remira","href":"/extensions/remira/overview"},{"title":"Transaction mapping","href":"/extensions/remira/transaction-mapping"}]},{"group":"Shopify POS","pages":[{"title":"Shopify POS","href":"/extensions/shopify/pos/overview"},{"title":"Setting up Shopify POS","href":"/extensions/shopify/pos/setup"},{"title":"POS tiles and blocks","href":"/extensions/shopify/pos/tiles"}]}]},{"group":"Customer service","pages":[{"group":"Gorgias","pages":[{"title":"Gorgias","href":"/extensions/gorgias/overview"},{"title":"Setting up the Gorgias integration","href":"/extensions/gorgias/setup"},{"title":"Gorgias changelog","href":"/extensions/gorgias/changelog"}]},{"group":"Zendesk","pages":[{"title":"Zendesk","href":"/extensions/zendesk/overview"},{"title":"Installation","href":"/extensions/zendesk/installation"},{"title":"Zendesk changelog","href":"/extensions/zendesk/changelog"}]}]},{"group":"Gift cards and stored value","pages":[{"group":"Givex","pages":[{"title":"Givex","href":"/extensions/givex/overview"},{"title":"Setting up the Givex extension","href":"/extensions/givex/setup"},{"title":"eCert issuance","href":"/extensions/givex/ecert-issuance"},{"title":"Balance sync","href":"/extensions/givex/balance-sync"}]}]},{"group":"Currency and regions","pages":[{"group":"Currencies","pages":[{"title":"Currencies","href":"/extensions/currencies/overview"},{"title":"Setting up the Currencies extension","href":"/extensions/currencies/setup"},{"title":"Transaction conversion","href":"/extensions/currencies/transaction-conversion"},{"title":"Live rates","href":"/extensions/currencies/live-rates"},{"title":"Daily market rates","href":"/extensions/currencies/market-rates"}]}]}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/dev-guides/core-setup/authentication"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Metrics \u0026 targets - Omneo API","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}