Aampe’s agents treat every message as an experiment, building causal understanding from events over time rather than statistical guesses from static attributes.
Typical ML systems learn by observing correlations in attributes, past behaviors, and demographics. The problem is that none of this tells you what caused anything. It’s information without a decision advantage.Aampe’s agents aren’t guessing what’s likely—they’re changing what happens. Every agent intervenes in a user’s behavioral stream, then measures how that intervention alters what follows. That change is what the agent learns from.Attributes like age or device type don’t change fast or cleanly enough to provide that signal. Events are timestamped and tied to specific moments before and after an agent acts. That temporal structure makes them the only reliable substrate for causal learning.
An event stream tells a story over time. When an agent intervenes, it inserts a new chapter. The question isn’t “Did something happen after I acted?” The question is “Did what happened differ from what would have happened anyway?”Aampe agents use difference-in-differences reasoning. Each maintains a baseline of normal behavior for its user. When the agent acts, it measures deviation from that baseline. If the deviation exceeds normal fluctuation, the agent infers its action likely caused the change. This structure—observing before, intervening, measuring after—separates coincidence from consequence.
Predictive models built on attributes operate entirely in correlation. They can tell you that people with certain traits are more likely to convert, but not whether your message caused that response. Knowing someone probably will convert doesn’t tell you what to do.Attributes also create structural confounds. Geography might correlate with conversion while the true driver is pricing. Device type might stand in for connection speed. Many attributes are proxies for unmeasured factors, and their meaning shifts over time. Without interventions and time-based events, attribute-driven models can predict probabilities but can’t guide decisions.
Much of what teams call attributes are compressed event histories. A “new user” flag points to a specific moment—the first app open. A “high-value user” label summarizes recent purchases. Even a geography change is an event.Flattening events into attributes erases the timeline that gave them meaning. Events keep temporal structure intact, letting agents measure cause and effect rather than just noting that a change exists.
Attributes still matter—as constraints, not learning inputs. If content exists only in Spanish, there’s no point testing whether English speakers respond. Language preference serves as an eligibility gate before learning begins.The same applies to geography for location-dependent offers, device type for message formats, and subscription tier for content gating. Attributes narrow the action space to what’s possible. Business logic lives in attributes; behavioral learning lives in the event stream.
Training on attributes would mean freezing users into buckets like “likely buyer” and assuming the same action works for everyone in that bucket. A clothing app targeting all “high income” users with premium products ignores that income isn’t intent. A fitness app pushing yoga to everyone over 40 misses that some run marathons. Attributes enable correlation, not reasoning. Personalization dies when the system stops testing what works for each person.
Aampe’s architecture assumes intelligence lies in acting and observing what happens, not passively summarizing data. The agent doesn’t need demographics or clusters; it needs to know whether this action moved the needle for this person at this moment.Events make that possible. Attributes describe users; events describe change. Only by measuring change can a system learn to make better choices.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Aampe Docs","description":"Explore our knowledge base to learn how to set up, use, and manage Aampe successfully","colors":{"primary":"#E15E12","light":"#E15E12","dark":"#E15E12"},"logo":{"light":"https://mintcdn.com/aameo/Ti5DZ6W_P8uBcLOr/brand_assets/logo_light.svg?fit=max\u0026auto=format\u0026n=Ti5DZ6W_P8uBcLOr\u0026q=85\u0026s=668680e7c8a3b4808895d426d8847d30","dark":"https://mintcdn.com/aameo/Ti5DZ6W_P8uBcLOr/brand_assets/logo_dark.svg?fit=max\u0026auto=format\u0026n=Ti5DZ6W_P8uBcLOr\u0026q=85\u0026s=490626f77c13c223428790cd3cb51613"},"favicon":"https://mintcdn.com/aameo/Ti5DZ6W_P8uBcLOr/brand_assets/favicon.svg?fit=max\u0026auto=format\u0026n=Ti5DZ6W_P8uBcLOr\u0026q=85\u0026s=24cb00a2842ec5afab28a34fb4853fb2","api":{"playground":{}},"appearance":{"default":"system"},"seo":{"indexing":"all"},"fonts":{"heading":{"family":"Inclusive Sans","weight":600,"source":"https://cdn.jsdelivr.net/gh/zyhim3-coder/font-hosting@main/InclusiveSans-SemiBold.woff2","format":"woff2"},"body":{"family":"Inclusive Sans","weight":400,"source":"https://cdn.jsdelivr.net/gh/zyhim3-coder/font-hosting@main/InclusiveSans-Regular.woff2","format":"woff2"}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","perplexity","grok","aistudio","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"aameo","hasAudioNarration":false,"actualSubdomain":"aameo","customDomains":["kb.aampe.com"],"gitSource":{"type":"gitlab","owner":"aampe","repo":"docs-v2","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":70769784,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0b2f3cfd05c732d82e17b","collectionId":"9d4dfc09-9f88-4c55-befd-95b4cf4598e2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0b2f3cfd05c732d82e17b"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0b389c8dcddb81df1774d","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Developer Guide","count":56},{"language":"default","tag":"User Guide","count":55},{"language":"default","tag":"Supported Integrations","count":45},{"language":"default","tag":"Using Aampe","count":35},{"language":"default","tag":"Connect Message Provider","count":21},{"language":"default","tag":"Send Data to Aampe","count":19},{"language":"default","tag":"API","count":13},{"language":"default","tag":"SSO","count":10},{"language":"default","tag":"Quickstart","count":10},{"language":"default","tag":"Messages by Channel","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes","slug":"/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes","pageMetadata":{"title":"Why Aampe Agents Learn from Events, Not Attributes","description":"Causation vs correlation","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes"},"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: \"Causation vs correlation\"\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={em:`em`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`events-vs-attributes`,children:`Events vs Attributes`}),`\n`,_jsx(_components.p,{children:`Aampe’s agents treat every message as an experiment, building causal understanding from events over time rather than statistical guesses from static attributes.`}),`\n`,_jsx(Heading,{level:`2`,id:`observation-vs-intervention`,children:`Observation vs. Intervention`}),`\n`,_jsxs(_components.p,{children:[`Typical ML systems learn by observing correlations in attributes, past behaviors, and demographics. The problem is that none of this tells you what `,_jsx(_components.em,{children:`caused`}),` anything. It’s information without a decision advantage.`]}),`\n`,_jsx(_components.p,{children:`Aampe’s agents aren’t guessing what’s likely—they’re changing what happens. Every agent intervenes in a user’s behavioral stream, then measures how that intervention alters what follows. That change is what the agent learns from.`}),`\n`,_jsx(_components.p,{children:`Attributes like age or device type don’t change fast or cleanly enough to provide that signal. Events are timestamped and tied to specific moments before and after an agent acts. That temporal structure makes them the only reliable substrate for causal learning.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-logic-of-events`,children:`The Logic of Events`}),`\n`,_jsx(_components.p,{children:`An event stream tells a story over time. When an agent intervenes, it inserts a new chapter. The question isn’t “Did something happen after I acted?” The question is “Did what happened differ from what would have happened anyway?”`}),`\n`,_jsx(_components.p,{children:`Aampe agents use difference-in-differences reasoning. Each maintains a baseline of normal behavior for its user. When the agent acts, it measures deviation from that baseline. If the deviation exceeds normal fluctuation, the agent infers its action likely caused the change. This structure—observing before, intervening, measuring after—separates coincidence from consequence.`}),`\n`,_jsx(Heading,{level:`2`,id:`why-attributes-fall-short`,children:`Why Attributes Fall Short`}),`\n`,_jsxs(_components.p,{children:[`Predictive models built on attributes operate entirely in correlation. They can tell you that people with certain traits are more likely to convert, but not whether your message caused that response. Knowing someone probably `,_jsx(_components.em,{children:`will`}),` convert doesn’t tell you what to `,_jsx(_components.em,{children:`do`}),`.`]}),`\n`,_jsx(_components.p,{children:`Attributes also create structural confounds. Geography might correlate with conversion while the true driver is pricing. Device type might stand in for connection speed. Many attributes are proxies for unmeasured factors, and their meaning shifts over time. Without interventions and time-based events, attribute-driven models can predict probabilities but can’t guide decisions.`}),`\n`,_jsx(Heading,{level:`2`,id:`many-“attributes”-are-really-events`,children:`Many “Attributes” Are Really Events`}),`\n`,_jsx(_components.p,{children:`Much of what teams call attributes are compressed event histories. A “new user” flag points to a specific moment—the first app open. A “high-value user” label summarizes recent purchases. Even a geography change is an event.`}),`\n`,_jsx(_components.p,{children:`Flattening events into attributes erases the timeline that gave them meaning. Events keep temporal structure intact, letting agents measure cause and effect rather than just noting that a change exists.`}),`\n`,_jsx(Heading,{level:`2`,id:`attributes-as-boundaries-not-training-data`,children:`Attributes as Boundaries, Not Training Data`}),`\n`,_jsx(_components.p,{children:`Attributes still matter—as constraints, not learning inputs. If content exists only in Spanish, there’s no point testing whether English speakers respond. Language preference serves as an eligibility gate before learning begins.`}),`\n`,_jsx(_components.p,{children:`The same applies to geography for location-dependent offers, device type for message formats, and subscription tier for content gating. Attributes narrow the action space to what’s possible. Business logic lives in attributes; behavioral learning lives in the event stream.`}),`\n`,_jsx(Heading,{level:`2`,id:`why-attribute-based-learning-would-fail`,children:`Why Attribute-Based Learning Would Fail`}),`\n`,_jsx(_components.p,{children:`Training on attributes would mean freezing users into buckets like “likely buyer” and assuming the same action works for everyone in that bucket. A clothing app targeting all “high income” users with premium products ignores that income isn’t intent. A fitness app pushing yoga to everyone over 40 misses that some run marathons. Attributes enable correlation, not reasoning. Personalization dies when the system stops testing what works for each person.`}),`\n`,_jsx(Heading,{level:`2`,id:`intervention-is-ground-truth`,children:`Intervention Is Ground Truth`}),`\n`,_jsxs(_components.p,{children:[`Aampe’s architecture assumes intelligence lies in acting and observing what happens, not passively summarizing data. The agent doesn’t need demographics or clusters; it needs to know whether `,_jsx(_components.em,{children:`this action`}),` moved the needle for `,_jsx(_components.em,{children:`this person`}),` at `,_jsx(_components.em,{children:`this moment`}),`.`]}),`\n`,_jsx(_components.p,{children:`Events make that possible. Attributes describe users; events describe change. Only by measuring change can a system learn to make better choices.`})]})}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":"Why Aampe Agents Learn from Events, Not Attributes","description":"Causation vs correlation","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Events vs Attributes","slug":"events-vs-attributes","depth":1,"children":[]},{"title":"Observation vs. Intervention","slug":"observation-vs-intervention","depth":2,"children":[]},{"title":"The Logic of Events","slug":"the-logic-of-events","depth":2,"children":[]},{"title":"Why Attributes Fall Short","slug":"why-attributes-fall-short","depth":2,"children":[]},{"title":"Many “Attributes” Are Really Events","slug":"many-“attributes”-are-really-events","depth":2,"children":[]},{"title":"Attributes as Boundaries, Not Training Data","slug":"attributes-as-boundaries-not-training-data","depth":2,"children":[]},{"title":"Why Attribute-Based Learning Would Fail","slug":"why-attribute-based-learning-would-fail","depth":2,"children":[]},{"title":"Intervention Is Ground Truth","slug":"intervention-is-ground-truth","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"aameo","siteName":"Aampe Docs","title":"Why Aampe Agents Learn from Events, Not Attributes - Aampe Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-26T20:22:51.609Z","originalFileLocation":"user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes.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=\"Causation vs correlation\">\u003cmeta data-mint-head name=\"application-name\" content=\"Aampe 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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_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/aameo/sEOzgH2AW1TJ77XQ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Why Aampe Agents Learn from Events, Not Attributes - Aampe Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Causation vs correlation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aampe Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://aameo.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Why+Aampe+Agents+Learn+from+Events%2C+Not+Attributes\u0026amp;description=Causation+vs+correlation\u0026amp;theme=800ae4206dcac969e1dc8472\u0026amp;signature=c15e891d48d4d9ea18bfb5949369d8e2b0b1f38c47ee11e0d66512681b074794\">\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=\"Why Aampe Agents Learn from Events, Not Attributes - Aampe Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Causation vs correlation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://aameo.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Why+Aampe+Agents+Learn+from+Events%2C+Not+Attributes\u0026amp;description=Causation+vs+correlation\u0026amp;theme=800ae4206dcac969e1dc8472\u0026amp;signature=c15e891d48d4d9ea18bfb5949369d8e2b0b1f38c47ee11e0d66512681b074794\">\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/aameo/sEOzgH2AW1TJ77XQ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aampe Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#E15E12\">\u003clink data-mint-head rel=\"canonical\" href=\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://kb.aampe.com/#organization\",\"name\":\"Aampe Docs\",\"url\":\"https://kb.aampe.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/aameo/Ti5DZ6W_P8uBcLOr/brand_assets/logo_light.svg?fit=max\u0026auto=format\u0026n=Ti5DZ6W_P8uBcLOr\u0026q=85\u0026s=668680e7c8a3b4808895d426d8847d30\"}},{\"@type\":\"WebSite\",\"@id\":\"https://kb.aampe.com#website\",\"name\":\"Aampe Docs\",\"url\":\"https://kb.aampe.com\",\"publisher\":{\"@id\":\"https://kb.aampe.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes#webpage\",\"url\":\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes\",\"name\":\"Why Aampe Agents Learn from Events, Not Attributes\",\"description\":\"Causation vs correlation\",\"dateModified\":\"2026-01-26T20:22:51.609Z\",\"isPartOf\":{\"@id\":\"https://kb.aampe.com#website\"}},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes#article\",\"headline\":\"Why Aampe Agents Learn from Events, Not Attributes\",\"name\":\"Why Aampe Agents Learn from Events, Not Attributes\",\"description\":\"Causation vs correlation\",\"url\":\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes\",\"mainEntityOfPage\":{\"@id\":\"https://kb.aampe.com/user-guide/welcome-to-aampe/how-does-aampe-work/agent-help/events-vs-attributes#webpage\"},\"dateModified\":\"2026-01-26T20:22:51.609Z\",\"publisher\":{\"@id\":\"https://kb.aampe.com/#organization\"},\"isPartOf\":{\"@id\":\"https://kb.aampe.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Aampe Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Aampe Docs","nav":{"global":null,"tabs":[{"tab":"User Guide","pages":[{"title":"User Guide","sidebarTitle":"User Guide","mode":"wide","icon":"book","href":"/user-guide/user-guide"},{"group":"Welcome to Aampe","pages":[{"group":"What is Aampe?","pages":[{"title":"What is Aampe?","href":"/user-guide/welcome-to-aampe/what-is-aampe/what-is-aampe"},{"title":"What is Agentic Infrastructure?","href":"/user-guide/welcome-to-aampe/what-is-aampe/what-is-agentic-infrastructure"},{"title":"Who is Aampe for?","href":"/user-guide/welcome-to-aampe/what-is-aampe/who-is-aampe-for"}]},{"group":"How Does Aampe Work?","pages":[{"title":"Aampe Agents: One Model Per User","sidebarTitle":"AI Agents","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/agents"},{"title":"Components and Labels","sidebarTitle":"Components and Labels","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/component_and_labels"},{"title":"How Labels Work","sidebarTitle":"How Labels Work","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/labels"},{"title":"Explore vs Exploit","sidebarTitle":"Explore vs Exploit","href":"/user-guide/welcome-to-aampe/how-does-aampe-work/explore-exploit"}]}]},{"group":"Using Aampe","pages":[{"group":"Quickstart","pages":[{"title":"Aampe Quickstart Guide","sidebarTitle":"Aampe Quickstart Guide","href":"/user-guide/using-aampe/quickstart/overview"},{"title":"Sign In to Aampe","href":"/user-guide/using-aampe/quickstart/quickstart-signin"},{"title":"Connecting Aampe to a Data Source","sidebarTitle":"Setup: Data Source","href":"/user-guide/using-aampe/quickstart/quickstart-datafeed"},{"title":"Connect Aampe to Your Messaging Tools","sidebarTitle":"Setup: Messaging Tools","href":"/user-guide/using-aampe/quickstart/quickstart-messaging-tools"},{"title":"Organize Event Feed","sidebarTitle":"Setup: Organize Events","href":"/user-guide/using-aampe/quickstart/quickstart-events"},{"title":"Reward Functions","sidebarTitle":"Setup: Reward Functions","href":"/user-guide/using-aampe/quickstart/quickstart-reward-functions"},{"title":"Create an Audience","sidebarTitle":"Audiences","href":"/user-guide/using-aampe/quickstart/quickstart-audiences"},{"title":"Message Creation","sidebarTitle":"Messages","href":"/user-guide/using-aampe/quickstart/quickstart-messages"},{"title":"Surfaces","sidebarTitle":"Surfaces","href":"/user-guide/using-aampe/quickstart/quickstart-surfaces"},{"title":"Connect CMS Data","href":"/user-guide/using-aampe/quickstart/quickstart-cms"}]},{"group":"Admin","pages":[{"title":"Account and User Management","sidebarTitle":"User Roles and Permissions","href":"/user-guide/using-aampe/admin/users-and-roles"},{"title":"Event Funnel","sidebarTitle":"Funnel","href":"/user-guide/using-aampe/admin/define-funnel-events"},{"title":"Event Types","href":"/user-guide/using-aampe/admin/event-types"},{"title":"Frequency","sidebarTitle":"Frequency","href":"/user-guide/using-aampe/admin/frequency-limits"},{"title":"Managing Content in Multiple Languages","sidebarTitle":"Languages","href":"/user-guide/using-aampe/admin/languages"},{"title":"Agent-User Allocation","sidebarTitle":"Agent-User Allocation","href":"/user-guide/using-aampe/admin/agent-user-allocation"}]},{"group":"Audiences","pages":[{"title":"Audiences","sidebarTitle":"Audiences","href":"/user-guide/using-aampe/audiences/audiences"},{"title":"Message Triggers","sidebarTitle":"Triggers","href":"/user-guide/using-aampe/audiences/triggers"},{"title":"Real-time triggers","sidebarTitle":"Real-time triggers","href":"/user-guide/using-aampe/audiences/real-time-triggers"}]},{"group":"Messages by Channel","pages":[{"title":"Scheduling","sidebarTitle":"Scheduling Messages","href":"/user-guide/using-aampe/messages-by-channel/scheduling"},{"title":"Personalizing Messages with User Attributes","href":"/user-guide/using-aampe/messages-by-channel/personalization"},{"group":"Push","pages":[{"title":"Create a Push Notification","href":"/user-guide/using-aampe/messages-by-channel/push/create-push"},{"title":"Send a Test Message","sidebarTitle":"Send a Test Message","href":"/user-guide/using-aampe/messages-by-channel/push/send-test-message"}]},{"group":"SMS","pages":[{"title":"Create an SMS Message","href":"/user-guide/using-aampe/messages-by-channel/sms/create-sms"}]},{"group":"Email","pages":[{"title":"Create an Email Message","sidebarTitle":"Create an Email Message","href":"/user-guide/using-aampe/messages-by-channel/email/create-email-in-aampe"},{"title":"Create an Email Message","sidebarTitle":"Create an Email Message","hidden":true,"href":"/user-guide/using-aampe/messages-by-channel/email/create-email"},{"title":"Using the Email Config App","href":"/user-guide/using-aampe/messages-by-channel/email/using-the-email-config-app"},{"title":"Email Best Practices for Agent Learning","href":"/user-guide/using-aampe/messages-by-channel/email/best-practices"}]}]},{"group":"Product Surfaces","pages":[{"title":"Preparing Content for Surfaces","sidebarTitle":"Preparing Content","href":"/user-guide/using-aampe/product-surfaces/surfaces-content"},{"title":"Creating the Surface","sidebarTitle":"Creating Surfaces","href":"/user-guide/using-aampe/product-surfaces/surfaces-composer"}]},{"group":"Tips \u0026 Tricks","pages":[{"title":"Copy \u0026 Paste from Google Sheets","href":"/user-guide/using-aampe/tips-and-tricks/copy-paste"},{"title":"Syncing Labels for Repeating Components","href":"/user-guide/using-aampe/tips-and-tricks/label-locking"},{"title":"Create Variety by Rearranging Components","href":"/user-guide/using-aampe/tips-and-tricks/rearrange-components"},{"title":"Bulk Content Management with Datasets","sidebarTitle":"Datasets for Bulk Content Management","href":"/user-guide/using-aampe/tips-and-tricks/datasets"},{"title":"Archiving Message Groups","href":"/archiving-message-groups"}]}]},{"group":"Managing Agents Strategically","pages":[{"title":"Working With Agents","href":"/user-guide/managing-agents-strategically/working-with-agents"},{"title":"Content Coverage","href":"/user-guide/managing-agents-strategically/content-coverage"},{"title":"Label Weights","sidebarTitle":"Label Weights","href":"/user-guide/managing-agents-strategically/label-weights"},{"title":"Topics","href":"/user-guide/managing-agents-strategically/topics"},{"title":"Topics vs Tags","href":"/user-guide/managing-agents-strategically/topics-vs-tags"},{"title":"Experimentation in the World of Agentic Personalization","sidebarTitle":"A/B Testing with Aampe","href":"/user-guide/managing-agents-strategically/experiment-overview"}]},{"group":"How Do I Know Aampe is Working?","pages":[{"group":"Analytics and Data","pages":[{"title":"Analytics Overview","sidebarTitle":"Analytics Overview","href":"/user-guide/how-do-i-know/analytics/analytics-overview"},{"title":"Composer Analytics","sidebarTitle":"Composer Analytics","href":"/user-guide/how-do-i-know/analytics/composer-analytics"}]},{"group":"Experiments with Aampe","pages":[{"title":"What Kinds of Experiments Work in Aampe?","sidebarTitle":"Which Experiments Work?","href":"/user-guide/how-do-i-know/experiments/experiment-overview"},{"title":"How to Set Up an Experiment in Aampe","sidebarTitle":"Setting up an Aampe Experiment","href":"/user-guide/how-do-i-know/experiments/holdout-part2"},{"title":"Measuring Results of an Aampe Experiment","sidebarTitle":"Analyzing Results","href":"/user-guide/how-do-i-know/experiments/holdout-part3"},{"title":"Common Problems with Experimentation","sidebarTitle":"Common Pitfalls","href":"/user-guide/how-do-i-know/experiments/holdout-part4"}]}]}]},{"tab":"Developer Guide","pages":[{"title":"Developer Guide","mode":"wide","sidebarTitle":"Developer Guide","href":"/developer-guide/developer-guide"},{"group":"SSO","pages":[{"title":"Setting up Single Sign-On (SSO)","sidebarTitle":"Setting Up SSO","href":"/developer-guide/sso/setting-up-sso"},{"group":"Supported Integrations","pages":[{"title":"Google SAML SSO","href":"/developer-guide/sso/sso_google"},{"title":"JumpCloud SAML SSO","href":"/developer-guide/sso/sso_jumpcloud"},{"title":"Microsoft Entra ID (formerly Azure AD) SAML SSO","href":"/developer-guide/sso/sso_microsoft_entra_id"},{"title":"Okta SAML SSO","href":"/developer-guide/sso/sso_okta"},{"title":"OneLogin SAML SSO","href":"/developer-guide/sso/sso_onelogin"},{"title":"Auth0 SAML SSO","href":"/developer-guide/sso/sso_auth0"},{"title":"Open ID Connect (OIDC)","href":"/developer-guide/sso/sso_openid_connect"},{"title":"PingOne SAML SSO","href":"/developer-guide/sso/sso_pingone"},{"title":"Rippling SAML SSO","href":"/developer-guide/sso/sso_rippling"}]}]},{"group":"Send Data to Aampe","pages":[{"title":"Sending Data to Aampe","href":"/developer-guide/data-ingest/data-integrations"},{"title":"Aampe Data Model","sidebarTitle":"Data Model","href":"/developer-guide/data-ingest/data-model"},{"title":"Aampe Data Management","sidebarTitle":"Data Management","href":"/developer-guide/data-ingest/data-management"},{"group":"Supported Integrations","pages":[{"title":"Amplitude (Batch)","sidebarTitle":"Amplitude (batch)","href":"/developer-guide/data-ingest/data-sources/amplitude-batch"},{"title":"Amplitude (Cohort Sync)","sidebarTitle":"Amplitude (cohort sync)","href":"/developer-guide/data-ingest/data-sources/amplitude-cohort"},{"title":"Amplitude (Streaming)","sidebarTitle":"Amplitude (streaming)","href":"/developer-guide/data-ingest/data-sources/amplitude-streaming"},{"title":"CleverTap","sidebarTitle":"CleverTap","href":"/developer-guide/data-ingest/data-sources/clevertap"},{"group":"Cloud Storage","pages":[{"title":"AWS S3","sidebarTitle":"AWS S3","href":"/developer-guide/data-ingest/data-sources/cloud-storage-aws-s3"},{"title":"Google Cloud Storage","sidebarTitle":"Google Cloud Storage","href":"/developer-guide/data-ingest/data-sources/cloud-storage-gcs"}]},{"group":"Cloud Databases","pages":[{"title":"Spanner (Google)","sidebarTitle":"Spanner","href":"/developer-guide/data-ingest/data-sources/database-spanner"},{"title":"AWS RDS","sidebarTitle":"AWS RDS","href":"/developer-guide/data-ingest/data-sources/database-aws-rds"}]},{"group":"Cloud Data Warehouses","pages":[{"title":"BigQuery (Google)","sidebarTitle":"BigQuery","href":"/developer-guide/data-ingest/data-sources/data-warehouse-bigquery"},{"title":"Databricks","sidebarTitle":"Databricks","href":"/developer-guide/data-ingest/data-sources/data-warehouse-databricks"},{"title":"Snowflake Integration","href":"/developer-guide/data-ingest/data-sources/data-warehouse-snowflake"}]},{"title":"Firebase","href":"/developer-guide/data-ingest/data-sources/firebase"},{"title":"Mixpanel","href":"/developer-guide/data-ingest/data-sources/mixpanel"},{"title":"Segment","href":"/developer-guide/data-ingest/data-sources/segment"},{"title":"SFTP","href":"/developer-guide/data-ingest/data-sources/sftp"},{"title":"Aampe Streaming API","sidebarTitle":"Streaming API (Aampe)","href":"/developer-guide/data-ingest/data-sources/streaming-aampe-api"}]}]},{"group":"Connect Message Provider","pages":[{"title":"Message Delivery Partners","mode":"wide","href":"/developer-guide/message-providers/message-providers"},{"group":"Supported Integrations","pages":[{"title":"Adobe campaign","href":"/developer-guide/message-providers/message-pages/adobe-campaign"},{"title":"Airship","href":"/developer-guide/message-providers/message-pages/airship"},{"title":"Apple Push Notification service (APNs)","href":"/developer-guide/message-providers/message-pages/apns"},{"title":"AWS SNS Integration","href":"/developer-guide/message-providers/message-pages/aws-sns"},{"title":"Braze","href":"/developer-guide/message-providers/message-pages/braze"},{"title":"CleverTap","href":"/developer-guide/message-providers/message-pages/clevertap"},{"title":"Custom API","href":"/developer-guide/message-providers/message-pages/custom-api"},{"title":"Customer.io","href":"/developer-guide/message-providers/message-pages/customerio"},{"title":"Emarsys Integration","href":"/developer-guide/message-providers/message-pages/emarsys"},{"title":"Firebase Cloud Messaging","href":"/developer-guide/message-providers/message-pages/firebase-cloud"},{"title":"Iterable","href":"/developer-guide/message-providers/message-pages/iterable"},{"title":"Leanplum","href":"/developer-guide/message-providers/message-pages/leanplum"},{"title":"MailChimp","href":"/developer-guide/message-providers/message-pages/mailchimp"},{"title":"Mandrill","href":"/developer-guide/message-providers/message-pages/mandrill"},{"title":"MoEngage","href":"/developer-guide/message-providers/message-pages/moengage"},{"title":"Netcore","href":"/developer-guide/message-providers/message-pages/netcore"},{"title":"OneSignal","href":"/developer-guide/message-providers/message-pages/onesignal"},{"title":"Sendgrid (Twilio)","href":"/developer-guide/message-providers/message-pages/sendgrid"},{"title":"Salesforce Marketing Cloud (SFMC)","href":"/developer-guide/message-providers/message-pages/sfmc"},{"title":"Twilio","href":"/developer-guide/message-providers/message-pages/twilio"},{"title":"WebEngage","href":"/developer-guide/message-providers/message-pages/webengage"}]}]},{"group":"CMS Integration","pages":[{"title":"Recommender System","href":"/developer-guide/cms-integration/recommender-systems"}]},{"group":"Embed Aampe in an App or Website","pages":[{"title":"Deploy a Surface into an App or Website","sidebarTitle":"Intro: Integrating Surfaces","href":"/developer-guide/surfaces/surfaces-embed"}]},{"group":"Receive Data from Aampe","pages":[{"title":"Aampe Data Share","sidebarTitle":"Data Share Overview","href":"/developer-guide/aampe-data/data-share-overview"},{"title":"BigQuery data share","sidebarTitle":"BigQuery","href":"/developer-guide/aampe-data/data-share-bigquery"},{"title":"Table Descriptions","sidebarTitle":"Table Descriptions","mode":"wide","href":"/developer-guide/aampe-data/data_share_tables"}]}]},{"tab":"API","pages":[{"title":"Aampe API Guide","href":"/api-guide/api-guide"},{"title":"Authentication","href":"/api-guide/authentication"},{"group":"Content","pages":[{"group":"Surface","pages":[{"title":"Get surface content","deprecated":null,"version":null,"openapi":"/api-guide/content-openapi.json get /v1/surface/content","href":"/api-reference/surface/get-surface-content"}]}]},{"group":"Data Ingestion","pages":[{"group":"API Reference","pages":[{"title":"Aampe Events Ingestion","deprecated":null,"version":null,"openapi":"/api-guide/ingestion-openapi.json post /v1/events","href":"/api-reference/aampe-events-ingestion"},{"title":"Aampe Property Update","deprecated":null,"version":null,"openapi":"/api-guide/ingestion-openapi.json post /v1/properties","href":"/api-reference/aampe-property-update"}]}]},{"group":"Public Composer API","icon":"compass","tag":"Alpha","pages":[{"title":"Authentication","href":"/api-guide/composer-api/authentication"},{"title":"Concepts and System Objects","href":"/api-guide/composer-api/formulas/overview"},{"title":"Labels","href":"/api-guide/composer-api/labels/overview"},{"title":"Manage Labels","href":"/api-guide/composer-api/labels/manage-labels"},{"title":"Create a Formula","href":"/api-guide/composer-api/formulas/create-formula"},{"title":"Multilanguage Formulas","href":"/api-guide/composer-api/languages/multilanguage"},{"title":"Update a Formula","href":"/api-guide/composer-api/formulas/update-formula"},{"title":"Audit Log","href":"/api-guide/composer-api/audit-log"}]}]},{"tab":"Tools","pages":[{"title":"Aampe App Library","href":"/tools/aampe-app-library"},{"title":"AamPT","sidebarTitle":"AamPT","href":"/tools/aampt"},{"title":"Aampe Surface Creator","sidebarTitle":"Figma Surface Creator","href":"/tools/figma-plugin"},{"title":"Power Analysis Calculator","href":"/tools/power-analysis-calculator"}]},{"tab":"Help","pages":[{"title":"Frequently Asked Questions (FAQs)","mode":"wide","sidebarTitle":"FAQs","href":"/help/faqs"},{"title":"Aampe Glossary","sidebarTitle":"Glossary","href":"/help/glossary"},{"title":"Release notes","href":"/help/release-notes"}]},{"tab":"Updates","pages":[{"title":"Release Notes","href":"/updates/release-notes"}]}]},"basePath":"","title":"Why Aampe Agents Learn from Events, Not Attributes - Aampe Docs","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}