A scope is a filter which applies to a collection and all its segments. It is useful in that it can be used to control what data is available to users. More specifically, scopes can be set up to filter data dynamically on the current user.
Scopes are applied to the entire application excluding global smart actions, API & SQL charts and Collaboration & Activities.
Imagine a situation where you have several Operations teams each specialized in a specific country’s operations:
France team handles customers from France
Germany team handles customers from Germany
…
By scoping the collection on $currentUser.team.name, Marc who belongs to the France team will only see customers from France, while Louis who belongs to the Germany team will only see customers from Germany.
In the example above, we used the team name to filter out what the user sees: $currentUser.team.nameHere the exhaustive list of available dynamic variables:
Syntax
Result
$currentUser.id
The id of the current user
$currentUser.firstName
The first name of the current user
$currentUser.lastName
The last name of the current user
$currentUser.fullName
The full name of the current user
$currentUser.email
The email of the current user
$currentUser.team.id
The id of the team of the current user
$currentUser.team.name
The name of the team of the current user
$currentUser.tags.your-tag
The value associated with key your-tag for the current user, if any.
The above example is only possible if your data matches your users’ details (email, team, etc). It’s likely that it won’t always be the case. This is why we’ve introduced user tags.User tags are set from each user’s details page and allow you to freely associate your users to a value which will match against your data using the $currentUser.tags.your-tag dynamic variable.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Forest Documentation","colors":{"primary":"#3F5B1E","light":"#DDF327","dark":"#3F5B1E"},"logo":{"light":"https://mintcdn.com/forest/ZO8t9buUjTuKyt-F/images/Standard.svg?fit=max\u0026auto=format\u0026n=ZO8t9buUjTuKyt-F\u0026q=85\u0026s=d4e172941c964df57009cfa8be809b96","dark":"https://mintcdn.com/forest/ZO8t9buUjTuKyt-F/images/LIME.svg?fit=max\u0026auto=format\u0026n=ZO8t9buUjTuKyt-F\u0026q=85\u0026s=91e95470256b93527860cba6c206cbc4"},"favicon":{"light":"https://mintcdn.com/forest/ZO8t9buUjTuKyt-F/images/Standard.svg?fit=max\u0026auto=format\u0026n=ZO8t9buUjTuKyt-F\u0026q=85\u0026s=d4e172941c964df57009cfa8be809b96","dark":"https://mintcdn.com/forest/ZO8t9buUjTuKyt-F/images/LIME.svg?fit=max\u0026auto=format\u0026n=ZO8t9buUjTuKyt-F\u0026q=85\u0026s=91e95470256b93527860cba6c206cbc4"},"navbar":{"links":[{"href":"mailto:support@forestadmin.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.forestadmin.com"}},"footer":{"socials":{"twitter":"https://twitter.com/forest_admin","github":"https://github.com/ForestAdmin","linkedin":"https://linkedin.com/company/forestadmin"}},"contextual":{"options":["copy","view","claude","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"forest","hasAudioNarration":false,"actualSubdomain":"forest","customDomains":["docs.forest.app"],"gitSource":{"type":"github","owner":"forestadmin","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb428a343e8b4158140116","collectionId":"5365b6a4-fce8-4b58-90bc-27e15a3e4242","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb428a343e8b4158140116"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adb428a343e8b4158140116","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Legacy","count":289},{"language":"default","tag":"JavaScript Agents","count":141},{"language":"default","tag":"Ruby Agent","count":140},{"language":"default","tag":"Product","count":113},{"language":"default","tag":"Integrations","count":64},{"language":"default","tag":"Actions","count":48},{"language":"default","tag":"Smart Action Examples","count":34},{"language":"default","tag":"Process","count":32},{"language":"default","tag":"Upgrade","count":31},{"language":"default","tag":"Connect","count":30}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@forestadmin.com"}},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"legacy/javascript-agents/reference-guide/scopes/overview","slug":"/legacy/javascript-agents/reference-guide/scopes/overview","pageMetadata":{"title":"Scopes","description":null,"href":"/legacy/javascript-agents/reference-guide/scopes/overview"},"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`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`3`,id:`what-is-a-scope`,children:`What is a scope?`}),`\n`,_jsx(_components.p,{children:`A scope is a filter which applies to a collection and all its segments. `}),`\n`,_jsx(_components.p,{children:`It is useful in that it can be used to control what data is available to users. More specifically, scopes can be set up to filter data dynamically on the current user.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Scopes`}),` are applied to the entire application excluding global smart actions, API \u0026 SQL charts and Collaboration \u0026 Activities.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`using-a-dynamic-scope`,children:`Using a dynamic scope`}),`\n`,_jsx(_components.p,{children:`Imagine a situation where you have several Operations teams each specialized in a specific country’s operations:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.em,{children:`France`}),` team handles customers from France`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.em,{children:`Germany`}),` team handles customers from Germany`]}),`\n`,_jsx(_components.li,{children:`…`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`By scoping the collection on `,_jsx(_components.code,{children:`$currentUser.team.name`}),`, Marc who belongs to the `,_jsx(_components.em,{children:`France`}),` team will only see customers from France, while Louis who belongs to the `,_jsx(_components.em,{children:`Germany`}),` team will only see customers from Germany.`]}),`\n`,_jsx(Heading,{level:`4`,id:`dynamic-variables`,children:`Dynamic variables`}),`\n`,_jsxs(_components.p,{children:[`In the example above, we used the team name to filter out what the user sees: `,_jsx(_components.code,{children:`$currentUser.team.name`})]}),`\n`,_jsx(_components.p,{children:`Here the exhaustive list of available dynamic variables:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Syntax`}),_jsx(_components.th,{children:`Result`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.id`})}),_jsx(_components.td,{children:`The id of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.firstName`})}),_jsx(_components.td,{children:`The first name of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.lastName`})}),_jsx(_components.td,{children:`The last name of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.fullName`})}),_jsx(_components.td,{children:`The full name of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.email`})}),_jsx(_components.td,{children:`The email of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.team.id`})}),_jsx(_components.td,{children:`The id of the team of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.team.name`})}),_jsx(_components.td,{children:`The name of the team of the current user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`$currentUser.tags.your-tag`})}),_jsxs(_components.td,{children:[`The value associated with key `,_jsx(_components.code,{children:`your-tag`}),` for the current user, if any.`]})]})]})]}),`\n`,_jsx(Heading,{level:`4`,id:`using-user-tags`,children:`Using user tags`}),`\n`,_jsx(_components.p,{children:`The above example is only possible if your data matches your users’ details (email, team, etc). It’s likely that it won’t always be the case. This is why we’ve introduced user tags.`}),`\n`,_jsxs(_components.p,{children:[`User tags are set from each user’s details page and allow you to freely associate your users to a value which will match against your data using the `,_jsx(_components.code,{children:`$currentUser.tags.your-tag`}),` dynamic variable.`]})]})}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":"Scopes","description":null,"href":"/legacy/javascript-agents/reference-guide/scopes/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is a scope?","slug":"what-is-a-scope","depth":3,"children":[]},{"title":"Using a dynamic scope","slug":"using-a-dynamic-scope","depth":3,"children":[]},{"title":"Dynamic variables","slug":"dynamic-variables","depth":4,"children":[]},{"title":"Using user tags","slug":"using-user-tags","depth":4,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"forest","siteName":"Forest Documentation","title":"Scopes - Forest Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T15:39:16.378Z","originalFileLocation":"legacy/javascript-agents/reference-guide/scopes/overview.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=\"application-name\" content=\"Forest Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_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/forest/9euPPsOQWnB89Kt3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Scopes - Forest Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Forest Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://forest.mintlify.app/_mintlify/api/og/v2?division=Scopes\u0026amp;title=Scopes\u0026amp;theme=7cc620c0b37a08e7a7deb699\u0026amp;signature=995625f68528e3c06316cdaf5d50c88e949f8c4d517134b85907c2342bbad90b\">\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=\"Scopes - Forest Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://forest.mintlify.app/_mintlify/api/og/v2?division=Scopes\u0026amp;title=Scopes\u0026amp;theme=7cc620c0b37a08e7a7deb699\u0026amp;signature=995625f68528e3c06316cdaf5d50c88e949f8c4d517134b85907c2342bbad90b\">\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/forest/9euPPsOQWnB89Kt3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Forest Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3F5B1E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/legacy/javascript-agents/reference-guide/scopes/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.forest.app/#organization\",\"name\":\"Forest Documentation\",\"url\":\"https://docs.forest.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/forest/ZO8t9buUjTuKyt-F/images/Standard.svg?fit=max\u0026auto=format\u0026n=ZO8t9buUjTuKyt-F\u0026q=85\u0026s=d4e172941c964df57009cfa8be809b96\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.forest.app#website\",\"name\":\"Forest Documentation\",\"url\":\"https://docs.forest.app\",\"publisher\":{\"@id\":\"https://docs.forest.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview#webpage\",\"url\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview\",\"name\":\"Scopes\",\"dateModified\":\"2026-10-15T15:39:16.378Z\",\"isPartOf\":{\"@id\":\"https://docs.forest.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"JavaScript Agents\",\"item\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/models/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scopes\",\"item\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview#article\",\"headline\":\"Scopes\",\"name\":\"Scopes\",\"url\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.forest.app/legacy/javascript-agents/reference-guide/scopes/overview#webpage\"},\"dateModified\":\"2026-10-15T15:39:16.378Z\",\"publisher\":{\"@id\":\"https://docs.forest.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.forest.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Forest Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Forest Documentation","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Get Started","pages":[{"title":"Get Started","href":"/get-started/intro-to-forest-admin"}]},{"tab":"Product","pages":[{"title":"Product","href":"/product/overview"}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/overview"}]},{"tab":"Legacy","groups":[{"group":"Overview","pages":[{"title":"Legacy agents","href":"/legacy/agents-overview"},{"group":"Migration guide","pages":[{"title":"Migrating from Agent v1 to v2","href":"/guides/migration/from-v1/overview"},{"title":"Migrating datasources","href":"/guides/migration/from-v1/steps/datasources"},{"title":"Migrating Smart Actions","href":"/guides/migration/from-v1/steps/smart-actions"},{"title":"Migrating Smart Fields","href":"/guides/migration/from-v1/steps/smart-fields"},{"title":"Migrating Smart Relationships","href":"/guides/migration/from-v1/steps/smart-relationships"},{"title":"Migrating Smart Segments","href":"/guides/migration/from-v1/steps/smart-segments"}]},{"title":"Releases Support","href":"/legacy/javascript-agents/how-tos/releases-support/overview"}]},{"group":"JavaScript Agents","pages":[{"group":"Models","pages":[{"title":"Models","href":"/legacy/javascript-agents/reference-guide/models/overview"},{"title":"Enrich your models","href":"/legacy/javascript-agents/reference-guide/models/enrich-your-models"},{"group":"Relationships","pages":[{"title":"Relationships","href":"/legacy/javascript-agents/reference-guide/models/relationships/overview"},{"group":"Create a Smart relationship","pages":[{"title":"Create a Smart relationship","href":"/legacy/javascript-agents/reference-guide/models/relationships/create-a-smart-relationship/overview"},{"title":"GetIdsFromRequest","href":"/legacy/javascript-agents/reference-guide/models/relationships/create-a-smart-relationship/getidsfromrequest"}]},{"group":"Smart Relationship Examples","pages":[{"title":"Smart Relationship Examples","href":"/legacy/javascript-agents/reference-guide/models/relationships/smart-relationship-examples/README"},{"title":"Smart hasMany relationship in mongoDB","href":"/legacy/javascript-agents/reference-guide/models/relationships/smart-relationship-examples/smart-hasmany-relationship-in-mongodb"}]}]}]},{"group":"Actions","pages":[{"title":"Actions","href":"/legacy/javascript-agents/reference-guide/actions/overview"},{"group":"Create and manage Smart Actions","pages":[{"title":"Create and manage Smart Actions","href":"/legacy/javascript-agents/reference-guide/actions/create-and-manage-smart-actions/overview"},{"title":"Use a Smart Action Form","href":"/legacy/javascript-agents/reference-guide/actions/create-and-manage-smart-actions/use-a-smart-action-form"},{"title":"Smart Action Intents","href":"/legacy/javascript-agents/reference-guide/actions/create-and-manage-smart-actions/use-action-intent"}]},{"group":"Smart Action Examples","pages":[{"title":"Smart Action Examples","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/README"},{"title":"Calculate the distance between two string addresses","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/calculate-the-distance-between-two-string-addresses"},{"title":"Impersonate a user","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/impersonate-a-user"},{"title":"Create a record with a multiselect through a many-to-many relationship","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/create-a-record-with-a-multiselect-through-a-many-to-many-relationship"},{"title":"Handle enums with alias labels in a smart action","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/handle-enums-with-alias-labels-in-a-smart-action"},{"title":"Dropdown with list of values in smart action form","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/dropdown-with-list-of-values-in-smart-action-form"},{"title":"Custom dynamic dropdown in a form using smart collections","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/custom-dynamic-dropdown-in-a-form-using-smart-collections"},{"title":"Refresh hasMany relationship in smart action","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/refresh-hasmany-relationship-in-smart-action"},{"title":"Smart segment to restrict access to an action on a record details view","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/smart-segment-to-restrict-access-to-an-action-on-a-record-details-view"},{"title":"BelongsToMany edition through smart collection","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/belongstomany-edition-through-smart-collection"},{"title":"Upload files to amazon s3","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/upload-files-to-amazon-s3"},{"title":"Upload several files with the File Picker","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/upload-several-files-with-the-file-picker"},{"title":"Retrieve smart field info in a smart action","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/retrieve-smart-field-info-in-a-smart-action"},{"title":"Smart action to create several records from the input of a single smart action form","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/smart-action-to-create-several-records-from-the-input-of-a-single-smart-action-form"},{"title":"Add many existing records at the same time (hasMany-belongsTo relationship)","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/add-many-existing-records-at-the-same-time-hasmany-belongsto-relationship"},{"title":"Call a n8n webhook","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/call-a-webhook-with-record-ids"},{"title":"Anonymize users in bulk","href":"/legacy/javascript-agents/reference-guide/actions/smart-action-examples/update-users-in-bulk"}]}]},{"group":"Smart Fields","pages":[{"title":"Smart Fields","href":"/legacy/javascript-agents/reference-guide/smart-fields/overview"},{"group":"Smart Field Examples","pages":[{"title":"Smart Field Examples","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/README"},{"title":"Add an HTML credit card as a smart field in a summary view","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/add-an-html-credit-card-as-a-smart-field-in-a-summary-view"},{"title":"Display field with complex info in html format (rich text editor)","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/display-field-with-complex-info-in-html-format-rich-text-editor"},{"title":"Generate signed urls to display S3 files in a smart field","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/generate-signed-urls-to-display-s3-files-in-a-smart-field"},{"title":"Print a status object in a single line field","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/print-a-status-object-in-a-single-line-field"},{"title":"Sort by smart field","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/sort-by-smart-field"},{"title":"Sort by smart field that includes value from a belongsTo relationship","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/sort-by-smart-field-that-includes-value-from-a-belongsto-relationship"},{"title":"Add fields destined to the create form","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/add-fields-destined-to-the-create-form"},{"title":"Add validation to a smart field edition","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/add-validation-to-a-smart-field-edition"},{"title":"Display smart field as progress bar using rich text editor","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/display-smart-field-as-progress-bar-using-rich-text-editor"},{"title":"Update point geometry field using a smart field and algolia api","href":"/legacy/javascript-agents/reference-guide/smart-fields/smart-field-examples/update-point-geometry-field-using-a-smart-field-and-algolia-api"}]}]},{"group":"Smart Collections","pages":[{"title":"Smart Collections","href":"/legacy/javascript-agents/reference-guide/smart-collections/overview"},{"group":"Examples","pages":[{"title":"Examples","href":"/legacy/javascript-agents/reference-guide/smart-collections/examples/README"},{"title":"Create a Smart Collection with Amazon S3","href":"/legacy/javascript-agents/reference-guide/smart-collections/examples/amazon-s3-integration-example"},{"title":"Smart relationship between model and stripe cards","href":"/legacy/javascript-agents/reference-guide/smart-collections/examples/smart-relationship-between-model-and-stripe-cards"},{"title":"Create records from a Smart collection","href":"/legacy/javascript-agents/reference-guide/smart-collections/examples/create-records-from-a-smart-collection"},{"title":"Searchable smart collection with records fetched from hubspot API","href":"/legacy/javascript-agents/reference-guide/smart-collections/examples/searchable-smart-collection-with-records-fetched-from-hubspot-api"}]},{"title":"Serializing your records","href":"/legacy/javascript-agents/reference-guide/smart-collections/serializing-your-records"}]},{"group":"Routes","pages":[{"title":"Routes","href":"/legacy/javascript-agents/reference-guide/routes/overview"},{"title":"Default routes","href":"/legacy/javascript-agents/reference-guide/routes/default-routes"},{"title":"Extend a route","href":"/legacy/javascript-agents/reference-guide/routes/extend-a-route"},{"title":"Override a route","href":"/legacy/javascript-agents/reference-guide/routes/override-a-route"}]},{"group":"Integrations","pages":[{"title":"Integrations","href":"/legacy/javascript-agents/reference-guide/integrations/README"},{"title":"Stripe","href":"/legacy/javascript-agents/reference-guide/integrations/stripe"},{"title":"Mixpanel","href":"/legacy/javascript-agents/reference-guide/integrations/mixpanel"},{"title":"Intercom","href":"/legacy/javascript-agents/reference-guide/integrations/intercom"},{"group":"Elasticsearch","pages":[{"title":"Readme","href":"/legacy/javascript-agents/reference-guide/integrations/elasticsearch/README"},{"title":"Interact with your Elasticsearch data","href":"/legacy/javascript-agents/reference-guide/integrations/elasticsearch/interact-with-your-elasticsearch-data"},{"title":"Elasticsearch service/utils","href":"/legacy/javascript-agents/reference-guide/integrations/elasticsearch/elasticsearch-service-utils"},{"title":"Another example","href":"/legacy/javascript-agents/reference-guide/integrations/elasticsearch/another-example"}]},{"group":"Zendesk","pages":[{"title":"Zendesk","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/overview"},{"title":"Authentication, Filtering \u0026 Sorting","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/authentication-filtering-and-sorting"},{"title":"Display Zendesk tickets","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/display-zendesk-tickets"},{"title":"Display Zendesk users","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/display-zendesk-users"},{"title":"View tickets related to a user","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/view-tickets-related-to-a-user"},{"title":"Bonus: Direct link to Zendesk + change priority of a ticket","href":"/legacy/javascript-agents/reference-guide/integrations/zendesk/bonus-direct-link-to-zendesk--and--change-priority-of-a-ticket"}]},{"group":"Dwolla","pages":[{"title":"Dwolla","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/README"},{"title":"Display Dwolla customers","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/display-dwolla-customers"},{"title":"Display Dwolla funding sources","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/display-dwolla-funding-sources"},{"title":"Display Dwolla transfers","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/display-dwolla-transfers"},{"title":"Link users and Dwolla customers","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/link-users-and-dwolla-customers"},{"title":"Dwolla Service","href":"/legacy/javascript-agents/reference-guide/integrations/dwolla/dwolla-service"}]},{"title":"Razorpay","href":"/legacy/javascript-agents/reference-guide/integrations/razorpay"},{"group":"Hubspot","pages":[{"title":"Readme","href":"/legacy/javascript-agents/reference-guide/integrations/hubspot/README"},{"title":"Create a Hubspot company","href":"/legacy/javascript-agents/reference-guide/integrations/hubspot/create-a-hubspot-company"},{"title":"Display Hubspot companies","href":"/legacy/javascript-agents/reference-guide/integrations/hubspot/display-hubspot-companies"}]},{"group":"Twilio","pages":[{"title":"Readme","href":"/legacy/javascript-agents/reference-guide/integrations/twilio/README"},{"title":"Send an SMS with Twilio and Zapier","href":"/legacy/javascript-agents/reference-guide/integrations/twilio/send-an-sms-with-twilio-and-zapier"}]},{"title":"Azure Table Storage","href":"/legacy/javascript-agents/reference-guide/integrations/azure-table-storage"},{"group":"Slack","pages":[{"title":"Readme","href":"/legacy/javascript-agents/reference-guide/integrations/slack/README"},{"title":"Send Smart Action notifications to Slack","href":"/legacy/javascript-agents/reference-guide/integrations/slack/send-smart-action-notifications-to-slack"}]},{"group":"Algolia","pages":[{"title":"Algolia","href":"/legacy/javascript-agents/reference-guide/integrations/algolia/README"},{"title":"Geocode an address with Algolia","href":"/legacy/javascript-agents/reference-guide/integrations/algolia/geocode-an-address-with-algolia"}]}]},{"group":"Smart Views","pages":[{"title":"Smart Views","href":"/legacy/javascript-agents/reference-guide/smart-views/overview"},{"title":"Create a Map view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-map-view"},{"title":"Create a Calendar view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-calendar-view"},{"title":"Create a Shipping view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-shipping-view"},{"title":"Create a Gallery view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-gallery-view"},{"title":"Create a custom tinder-like validation view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-custom-tinder-like-validation-view"},{"title":"Create a dynamic calendar view for an event-booking use case","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-dynamic-calendar-view-for-an-event-booking-use-case"},{"title":"Create a custom moderation view","href":"/legacy/javascript-agents/reference-guide/smart-views/create-a-custom-moderation-view"}]},{"title":"Smart Segments","description":null,"href":"/legacy/javascript-agents/reference-guide/smart-segments"},{"group":"Scopes","pages":[{"title":"Scopes","href":"/legacy/javascript-agents/reference-guide/scopes/overview"},{"title":"Create a scope more than one level away based on a Smart field","description":null,"href":"/legacy/javascript-agents/reference-guide/scopes/create-a-scope-more-than-one-level-away-based-on-a-smart-field"},{"title":"Scope on a smart field extracting a json's column attribute","href":"/legacy/javascript-agents/reference-guide/scopes/scope-on-a-smart-field-extracting-a-jsons-column-attribute"}]},{"title":"Performance","href":"/legacy/javascript-agents/reference-guide/performance"},{"group":"Charts","pages":[{"title":"Charts","href":"/legacy/javascript-agents/reference-guide/charts/overview"},{"title":"Create an API-based Chart","href":"/legacy/javascript-agents/reference-guide/charts/create-an-api-based-chart"},{"title":"Create a Smart Chart","href":"/legacy/javascript-agents/reference-guide/charts/create-a-smart-chart"},{"title":"Create Charts with AWS Redshift","href":"/legacy/javascript-agents/reference-guide/charts/create-charts-with-aws-redshift"}]},{"group":"Setup","pages":[{"title":"Setup","href":"/legacy/javascript-agents/how-tos/setup/README"},{"title":"Install","href":"/legacy/javascript-agents/how-tos/setup/install"},{"title":"Connecting Forest to Your Database (Forest Cloud)","href":"/legacy/javascript-agents/how-tos/setup/connecting-forest-admin-to-your-database-forest-cloud"},{"title":"Forest IP white-listing (Forest Cloud)","href":"/legacy/javascript-agents/how-tos/setup/forest-admin-ip-white-listing-forest-cloud"},{"title":"Why HTTPS is necessary even locally","href":"/legacy/javascript-agents/how-tos/setup/why-https-is-necessary-even-locally"},{"title":"Troubleshooting","href":"/legacy/javascript-agents/how-tos/setup/troubleshooting"},{"title":"Prevent permission errors at installation","href":"/legacy/javascript-agents/how-tos/setup/prevent-permission-errors-at-installation"},{"title":"Deploy Your Admin Backend With Aws","href":"/legacy/javascript-agents/how-tos/setup/deploy-your-admin-backend-with-aws"},{"title":"Deploy your admin backend on Heroku","href":"/legacy/javascript-agents/how-tos/setup/deploy-to-production-on-heroku"},{"title":"Deploy your admin backend to Ubuntu server","href":"/legacy/javascript-agents/how-tos/setup/deploy-to-production-to-ubuntu-server"},{"title":"Deploy your admin backend to Google Cloud Platform","href":"/legacy/javascript-agents/how-tos/setup/deploy-your-admin-backend-with-google-cloud-platform"},{"title":"Install Forest on a remote machine","href":"/legacy/javascript-agents/how-tos/setup/install-forest-admin-on-a-remote-machine"},{"title":"Use Forest with a read-only database","href":"/legacy/javascript-agents/how-tos/setup/use-forest-admin-with-a-read-only-database"},{"title":"Configuring CORS headers","href":"/legacy/javascript-agents/how-tos/setup/configuring-cors-headers"},{"title":"Running Forest on multiple servers","href":"/legacy/javascript-agents/how-tos/setup/running-forest-admin-on-multiple-servers"}]},{"group":"Upgrade","pages":[{"title":"Upgrade","href":"/legacy/javascript-agents/how-tos/maintain/README"},{"group":"Upgrade notes","pages":[{"title":"Upgrade notes (SQL, Mongodb)","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/README"},{"title":"Upgrade to v9","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v9"},{"title":"Upgrade to v8","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v8"},{"title":"Upgrade to v7","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v7"},{"title":"Upgrade to v6","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v6"},{"title":"Upgrade to v5","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v5"},{"title":"Upgrade to v4","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v4"},{"title":"Upgrade to v3","href":"/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v3"}]},{"title":"Update your models' definition","href":"/legacy/javascript-agents/how-tos/maintain/update-your-models-definition"},{"title":"Monitor your Forest's status","href":"/legacy/javascript-agents/how-tos/maintain/monitor-your-forests-status"},{"title":"Manage your Forest environments programmatically","href":"/legacy/javascript-agents/how-tos/maintain/manage-your-forest-admin-programmatically"},{"title":"Changing your domain name","href":"/legacy/javascript-agents/how-tos/maintain/changing-your-domain-name"},{"title":"Migrate to the new role system","href":"/legacy/javascript-agents/how-tos/maintain/migrate-to-the-new-role-system"},{"title":"Push your new version to production","href":"/legacy/javascript-agents/how-tos/maintain/push-your-new-version-to-production"}]},{"group":"Databases","pages":[{"title":"Readme","href":"/legacy/javascript-agents/how-tos/databases/README"},{"title":"Use a demo SQL database","href":"/legacy/javascript-agents/how-tos/databases/use-a-demo-database"},{"title":"Populate a postgreSQL database on Heroku","href":"/legacy/javascript-agents/how-tos/databases/populate-a-postgresql-database-on-heroku"},{"title":"Connect to a read replica database","href":"/legacy/javascript-agents/how-tos/databases/connect-to-a-read-replica-database"},{"title":"Plug multiple schemas","href":"/legacy/javascript-agents/how-tos/databases/plug-multiple-schemas"},{"title":"Add new databases","href":"/legacy/javascript-agents/how-tos/databases/add-new-databases"},{"title":"Manage SQL views","href":"/legacy/javascript-agents/how-tos/databases/manage-sql-views"}]},{"group":"Settings","pages":[{"title":"Settings","href":"/legacy/javascript-agents/how-tos/settings/README"},{"title":"Customize your /forest folder","href":"/legacy/javascript-agents/how-tos/settings/customize-your-forest-folder"},{"title":"Disable automatic Forest schema update","href":"/legacy/javascript-agents/how-tos/settings/disable-automatic-forest-admin-schema-update"},{"title":"Include/exclude models","href":"/legacy/javascript-agents/how-tos/settings/include-exclude-models"},{"title":"Display extensive logs","href":"/legacy/javascript-agents/how-tos/settings/display-extensive-logs"}]}]},{"group":"Ruby Agent","pages":[{"group":"Models","pages":[{"title":"Models","href":"/legacy/ruby-agent/reference-guide/models/overview"},{"title":"Enrich your models","href":"/legacy/ruby-agent/reference-guide/models/enrich-your-models"},{"group":"Relationships","pages":[{"title":"Relationships","href":"/legacy/ruby-agent/reference-guide/models/relationships/overview"},{"group":"Create a Smart relationship","pages":[{"title":"Create a Smart relationship","href":"/legacy/ruby-agent/reference-guide/models/relationships/create-a-smart-relationship/overview"},{"title":"GetIdsFromRequest","href":"/legacy/ruby-agent/reference-guide/models/relationships/create-a-smart-relationship/getidsfromrequest"}]},{"group":"Smart Relationship Examples","pages":[{"title":"Smart Relationship Examples","href":"/legacy/ruby-agent/reference-guide/models/relationships/smart-relationship-examples/README"}]}]}]},{"group":"Actions","pages":[{"title":"Actions","href":"/legacy/ruby-agent/reference-guide/actions/overview"},{"group":"Create and manage Smart Actions","pages":[{"title":"Create and manage Smart Actions","href":"/legacy/ruby-agent/reference-guide/actions/create-and-manage-smart-actions/overview"},{"title":"Use a Smart Action Form","href":"/legacy/ruby-agent/reference-guide/actions/create-and-manage-smart-actions/use-a-smart-action-form"},{"title":"Smart Action Intents","href":"/legacy/ruby-agent/reference-guide/actions/create-and-manage-smart-actions/use-action-intent"}]},{"group":"Smart Action Examples","pages":[{"title":"Smart Action Examples","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/README"},{"title":"Calculate the distance between two string addresses","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/calculate-the-distance-between-two-string-addresses"},{"title":"Impersonate a user","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/impersonate-a-user"},{"title":"Create a record with a multiselect through a many-to-many relationship","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/create-a-record-with-a-multiselect-through-a-many-to-many-relationship"},{"title":"Handle enums with alias labels in a smart action","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/handle-enums-with-alias-labels-in-a-smart-action"},{"title":"Dropdown with list of values in smart action form","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/dropdown-with-list-of-values-in-smart-action-form"},{"title":"Custom dynamic dropdown in a form using smart collections","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/custom-dynamic-dropdown-in-a-form-using-smart-collections"},{"title":"Refresh hasMany relationship in smart action","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/refresh-hasmany-relationship-in-smart-action"},{"title":"Smart segment to restrict access to an action on a record details view","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/smart-segment-to-restrict-access-to-an-action-on-a-record-details-view"},{"title":"BelongsToMany edition through smart collection","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/belongstomany-edition-through-smart-collection"},{"title":"Upload files to amazon s3","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/upload-files-to-amazon-s3"},{"title":"Upload several files with the File Picker","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/upload-several-files-with-the-file-picker"},{"title":"Retrieve smart field info in a smart action","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/retrieve-smart-field-info-in-a-smart-action"},{"title":"Smart action to create several records from the input of a single smart action form","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/smart-action-to-create-several-records-from-the-input-of-a-single-smart-action-form"},{"title":"Add many existing records at the same time (hasMany-belongsTo relationship)","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/add-many-existing-records-at-the-same-time-hasmany-belongsto-relationship"},{"title":"Call a n8n webhook","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/call-a-webhook-with-record-ids"},{"title":"Anonymize users in bulk","href":"/legacy/ruby-agent/reference-guide/actions/smart-action-examples/update-users-in-bulk"}]}]},{"group":"Smart Fields","pages":[{"title":"Smart Fields","href":"/legacy/ruby-agent/reference-guide/smart-fields/overview"},{"group":"Smart Field Examples","pages":[{"title":"Smart Field Examples","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/README"},{"title":"Add an HTML credit card as a smart field in a summary view","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/add-an-html-credit-card-as-a-smart-field-in-a-summary-view"},{"title":"Display field with complex info in html format (rich text editor)","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/display-field-with-complex-info-in-html-format-rich-text-editor"},{"title":"Generate signed urls to display S3 files in a smart field","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/generate-signed-urls-to-display-s3-files-in-a-smart-field"},{"title":"Print a status object in a single line field","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/print-a-status-object-in-a-single-line-field"},{"title":"Sort by smart field","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/sort-by-smart-field"},{"title":"Sort by smart field that includes value from a belongsTo relationship","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/sort-by-smart-field-that-includes-value-from-a-belongsto-relationship"},{"title":"Add fields destined to the create form","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/add-fields-destined-to-the-create-form"},{"title":"Add validation to a smart field edition","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/add-validation-to-a-smart-field-edition"},{"title":"Display smart field as progress bar using rich text editor","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/display-smart-field-as-progress-bar-using-rich-text-editor"},{"title":"Update point geometry field using a smart field and algolia api","href":"/legacy/ruby-agent/reference-guide/smart-fields/smart-field-examples/update-point-geometry-field-using-a-smart-field-and-algolia-api"}]}]},{"group":"Smart Collections","pages":[{"title":"Smart Collections","href":"/legacy/ruby-agent/reference-guide/smart-collections/overview"},{"group":"Examples","pages":[{"title":"Examples","href":"/legacy/ruby-agent/reference-guide/smart-collections/examples/README"},{"title":"Create a Smart Collection with Amazon S3","href":"/legacy/ruby-agent/reference-guide/smart-collections/examples/amazon-s3-integration-example"},{"title":"Smart relationship between model and stripe cards","href":"/legacy/ruby-agent/reference-guide/smart-collections/examples/smart-relationship-between-model-and-stripe-cards"},{"title":"Create records from a Smart collection","href":"/legacy/ruby-agent/reference-guide/smart-collections/examples/create-records-from-a-smart-collection"},{"title":"Searchable smart collection with records fetched from hubspot API","href":"/legacy/ruby-agent/reference-guide/smart-collections/examples/searchable-smart-collection-with-records-fetched-from-hubspot-api"}]},{"title":"Serializing your records","href":"/legacy/ruby-agent/reference-guide/smart-collections/serializing-your-records"}]},{"group":"Routes","pages":[{"title":"Routes","href":"/legacy/ruby-agent/reference-guide/routes/overview"},{"title":"Default routes","href":"/legacy/ruby-agent/reference-guide/routes/default-routes"},{"title":"Extend a route","href":"/legacy/ruby-agent/reference-guide/routes/extend-a-route"},{"title":"Override a route","href":"/legacy/ruby-agent/reference-guide/routes/override-a-route"}]},{"group":"Integrations","pages":[{"title":"Integrations","href":"/legacy/ruby-agent/reference-guide/integrations/README"},{"title":"Stripe","href":"/legacy/ruby-agent/reference-guide/integrations/stripe"},{"title":"Mixpanel","href":"/legacy/ruby-agent/reference-guide/integrations/mixpanel"},{"title":"Intercom","href":"/legacy/ruby-agent/reference-guide/integrations/intercom"},{"group":"Elasticsearch","pages":[{"title":"Readme","href":"/legacy/ruby-agent/reference-guide/integrations/elasticsearch/README"},{"title":"Interact with your Elasticsearch data","href":"/legacy/ruby-agent/reference-guide/integrations/elasticsearch/interact-with-your-elasticsearch-data"},{"title":"Elasticsearch service/utils","href":"/legacy/ruby-agent/reference-guide/integrations/elasticsearch/elasticsearch-service-utils"},{"title":"Another example","href":"/legacy/ruby-agent/reference-guide/integrations/elasticsearch/another-example"}]},{"group":"Zendesk","pages":[{"title":"Zendesk","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/overview"},{"title":"Authentication, Filtering \u0026 Sorting","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/authentication-filtering-and-sorting"},{"title":"Display Zendesk tickets","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/display-zendesk-tickets"},{"title":"Display Zendesk users","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/display-zendesk-users"},{"title":"View tickets related to a user","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/view-tickets-related-to-a-user"},{"title":"Bonus: Direct link to Zendesk + change priority of a ticket","href":"/legacy/ruby-agent/reference-guide/integrations/zendesk/bonus-direct-link-to-zendesk--and--change-priority-of-a-ticket"}]},{"group":"Dwolla","pages":[{"title":"Dwolla","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/README"},{"title":"Display Dwolla customers","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/display-dwolla-customers"},{"title":"Display Dwolla funding sources","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/display-dwolla-funding-sources"},{"title":"Display Dwolla transfers","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/display-dwolla-transfers"},{"title":"Link users and Dwolla customers","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/link-users-and-dwolla-customers"},{"title":"Dwolla Service","href":"/legacy/ruby-agent/reference-guide/integrations/dwolla/dwolla-service"}]},{"title":"Razorpay","href":"/legacy/ruby-agent/reference-guide/integrations/razorpay"},{"group":"Hubspot","pages":[{"title":"Readme","href":"/legacy/ruby-agent/reference-guide/integrations/hubspot/README"},{"title":"Create a Hubspot company","href":"/legacy/ruby-agent/reference-guide/integrations/hubspot/create-a-hubspot-company"},{"title":"Display Hubspot companies","href":"/legacy/ruby-agent/reference-guide/integrations/hubspot/display-hubspot-companies"}]},{"group":"Twilio","pages":[{"title":"Readme","href":"/legacy/ruby-agent/reference-guide/integrations/twilio/README"},{"title":"Send an SMS with Twilio and Zapier","href":"/legacy/ruby-agent/reference-guide/integrations/twilio/send-an-sms-with-twilio-and-zapier"}]},{"title":"Azure Table Storage","href":"/legacy/ruby-agent/reference-guide/integrations/azure-table-storage"},{"group":"Slack","pages":[{"title":"Readme","href":"/legacy/ruby-agent/reference-guide/integrations/slack/README"},{"title":"Send Smart Action notifications to Slack","href":"/legacy/ruby-agent/reference-guide/integrations/slack/send-smart-action-notifications-to-slack"}]},{"group":"Algolia","pages":[{"title":"Algolia","href":"/legacy/ruby-agent/reference-guide/integrations/algolia/README"},{"title":"Geocode an address with Algolia","href":"/legacy/ruby-agent/reference-guide/integrations/algolia/geocode-an-address-with-algolia"}]}]},{"group":"Smart Views","pages":[{"title":"Smart Views","href":"/legacy/ruby-agent/reference-guide/smart-views/overview"},{"title":"Create a Map view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-map-view"},{"title":"Create a Calendar view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-calendar-view"},{"title":"Create a Shipping view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-shipping-view"},{"title":"Create a Gallery view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-gallery-view"},{"title":"Create a custom tinder-like validation view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-custom-tinder-like-validation-view"},{"title":"Create a dynamic calendar view for an event-booking use case","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-dynamic-calendar-view-for-an-event-booking-use-case"},{"title":"Create a custom moderation view","href":"/legacy/ruby-agent/reference-guide/smart-views/create-a-custom-moderation-view"}]},{"title":"Smart Segments","href":"/legacy/ruby-agent/reference-guide/smart-segments"},{"group":"Scopes","pages":[{"title":"Scopes","href":"/legacy/ruby-agent/reference-guide/scopes/overview"},{"title":"Create a scope more than one level away based on a Smart field","href":"/legacy/ruby-agent/reference-guide/scopes/create-a-scope-more-than-one-level-away-based-on-a-smart-field"},{"title":"Scope on a smart field extracting a json's column attribute","href":"/legacy/ruby-agent/reference-guide/scopes/scope-on-a-smart-field-extracting-a-jsons-column-attribute"}]},{"title":"Performance","href":"/legacy/ruby-agent/reference-guide/performance"},{"group":"Charts","pages":[{"title":"Charts","href":"/legacy/ruby-agent/reference-guide/charts/overview"},{"title":"Create an API-based Chart","href":"/legacy/ruby-agent/reference-guide/charts/create-an-api-based-chart"},{"title":"Create a Smart Chart","href":"/legacy/ruby-agent/reference-guide/charts/create-a-smart-chart"},{"title":"Create Charts with AWS Redshift","href":"/legacy/ruby-agent/reference-guide/charts/create-charts-with-aws-redshift"}]},{"group":"Setup","pages":[{"title":"Setup","href":"/legacy/ruby-agent/how-tos/setup/README"},{"title":"Install","href":"/legacy/ruby-agent/how-tos/setup/install"},{"title":"Connecting Forest to Your Database (Forest Cloud)","href":"/legacy/ruby-agent/how-tos/setup/connecting-forest-admin-to-your-database-forest-cloud"},{"title":"Forest IP white-listing (Forest Cloud)","href":"/legacy/ruby-agent/how-tos/setup/forest-admin-ip-white-listing-forest-cloud"},{"title":"Why HTTPS is necessary even locally","href":"/legacy/ruby-agent/how-tos/setup/why-https-is-necessary-even-locally"},{"title":"Troubleshooting","href":"/legacy/ruby-agent/how-tos/setup/troubleshooting"},{"title":"Prevent permission errors at installation","href":"/legacy/ruby-agent/how-tos/setup/prevent-permission-errors-at-installation"},{"title":"Deploy Your Admin Backend With Aws","href":"/legacy/ruby-agent/how-tos/setup/deploy-your-admin-backend-with-aws"},{"title":"Deploy your admin backend on Heroku","href":"/legacy/ruby-agent/how-tos/setup/deploy-to-production-on-heroku"},{"title":"Deploy your admin backend to Ubuntu server","href":"/legacy/ruby-agent/how-tos/setup/deploy-to-production-to-ubuntu-server"},{"title":"Deploy your admin backend to Google Cloud Platform","href":"/legacy/ruby-agent/how-tos/setup/deploy-your-admin-backend-with-google-cloud-platform"},{"title":"Install Forest on a remote machine","href":"/legacy/ruby-agent/how-tos/setup/install-forest-admin-on-a-remote-machine"},{"title":"Use Forest with a read-only database","href":"/legacy/ruby-agent/how-tos/setup/use-forest-admin-with-a-read-only-database"},{"title":"Configuring CORS headers","href":"/legacy/ruby-agent/how-tos/setup/configuring-cors-headers"},{"title":"Running Forest on multiple servers","href":"/legacy/ruby-agent/how-tos/setup/running-forest-admin-on-multiple-servers"}]},{"group":"Upgrade","pages":[{"title":"Upgrade","href":"/legacy/ruby-agent/how-tos/maintain/README"},{"group":"Upgrade notes","pages":[{"title":"Upgrade notes (Rails)","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/README"},{"title":"Upgrade to v9.22","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v9-22"},{"title":"Upgrade to v9","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v9"},{"title":"Upgrade to v8","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v8"},{"title":"Upgrade to v7","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v7"},{"title":"Upgrade to v6","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v6"},{"title":"Upgrade to v5","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/untitled"},{"title":"Upgrade to v4","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v4"},{"title":"Upgrade to v3","href":"/legacy/ruby-agent/how-tos/maintain/upgrade-notes-rails/upgrade-to-v3"}]},{"title":"Update your models' definition","href":"/legacy/ruby-agent/how-tos/maintain/update-your-models-definition"},{"title":"Monitor your Forest's status","href":"/legacy/ruby-agent/how-tos/maintain/monitor-your-forests-status"},{"title":"Manage your Forest environments programmatically","href":"/legacy/ruby-agent/how-tos/maintain/manage-your-forest-admin-programmatically"},{"title":"Changing your domain name","href":"/legacy/ruby-agent/how-tos/maintain/changing-your-domain-name"},{"title":"Migrate to the new role system","href":"/legacy/ruby-agent/how-tos/maintain/migrate-to-the-new-role-system"},{"title":"Push your new version to production","href":"/legacy/ruby-agent/how-tos/maintain/push-your-new-version-to-production"}]},{"group":"Databases","pages":[{"title":"Readme","href":"/legacy/ruby-agent/how-tos/databases/README"},{"title":"Use a demo SQL database","href":"/legacy/ruby-agent/how-tos/databases/use-a-demo-database"},{"title":"Connect to a read replica database","href":"/legacy/ruby-agent/how-tos/databases/connect-to-a-read-replica-database"},{"title":"Plug multiple schemas","href":"/legacy/ruby-agent/how-tos/databases/plug-multiple-schemas"},{"title":"Add new databases","href":"/legacy/ruby-agent/how-tos/databases/add-new-databases"},{"title":"Manage SQL views","href":"/legacy/ruby-agent/how-tos/databases/manage-sql-views"}]},{"group":"Settings","pages":[{"title":"Settings","href":"/legacy/ruby-agent/how-tos/settings/README"},{"title":"Customize your /forest folder","href":"/legacy/ruby-agent/how-tos/settings/customize-your-forest-folder"},{"title":"Disable automatic Forest schema update","href":"/legacy/ruby-agent/how-tos/settings/disable-automatic-forest-admin-schema-update"},{"title":"Include/exclude models","href":"/legacy/ruby-agent/how-tos/settings/include-exclude-models"},{"title":"Display extensive logs","href":"/legacy/ruby-agent/how-tos/settings/display-extensive-logs"}]}]}]}]},"title":"Scopes - Forest Documentation","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}