Capture an opportunity, create or associate a deal, and manage the opportunity’s lifecycle.
Use an opportunity to capture interest before you have a qualified sales deal. When the lead is ready for your sales process, create a deal from the opportunity or associate it with an existing deal.An opportunity does not reserve a unit or create an order. Use the booking flow when the customer is ready to rent.
Use a token with public.opportunity:read and public.opportunity:write. To create a deal, associate an opportunity with a deal, or disassociate it, also grant public.deal:write. Listing deal stages requires public.deal_stage:read.You need an existing contact ID for the example below. To include a storage preference, also choose a site and a unit type from that site. All records must belong to the connected operator. Add the appropriate read scopes if you look up or expand those resources.To run this guide’s curl examples, set STORA_ACCESS_TOKEN in your shell to your access token. STORA_ACCESS_TOKEN is an example variable name, not an API requirement. Replace the placeholder IDs with your records’ IDs.
The response contains opportunity.id, an open status, and a public_api source. Save the ID with the lead in your system and set OPPORTUNITY_ID to that returned ID for later requests.If the site or storage preference is not known yet, omit site and line_items. To create a new contact, omit the contact ID and supply contact.email. This creates a new contact rather than looking up an existing contact by email. See the create request for the supported contact fields. When you supply a contact ID alongside other contact fields, those fields update that contact.
The response contains the new deal. Stora copies the opportunity’s contact, site, and line items, then associates the opportunity with that deal. The opportunity’s status becomes associated. An archived opportunity is unarchived when it is converted.
Conversion fails while the opportunity is associated or still has a previous conversion recorded. It also fails if its unit type or protection no longer belongs to its site. Fix invalid preferences before retrying. To change an existing association, follow the disassociation procedure below.
If your CRM already has the deal in Stora, associate the opportunity instead of creating another deal.Send POST /opportunities/{opportunity_id}/associate_deal with a deal object containing the existing deal’s id. Use an idempotency key for this action too.The deal and opportunity must belong to the same contact. Several opportunities can refer to one deal, but each opportunity can refer to only one deal. Association does not change the deal or copy the opportunity’s preferences into it.After either creation or association, you can update only the opportunity’s metadata. Update the deal itself for subsequent sales work.
For a lead you no longer need to work, archive the opportunity. You can archive only an open, unassociated opportunity. Unarchive it if interest resumes.To remove a deal association, use Disassociate an Opportunity from its Deal. The deal is unchanged. Association unarchives an archived opportunity. Disassociation returns the opportunity to open, or to archived if it was archived before association.Disassociation also clears the previous conversion record, so you can associate the opportunity with another deal or convert it again. The original deal remains. Create another deal only if you intend a separate sales record.You cannot delete an associated opportunity. Remove its association first if you need to delete it.Handle 409 responses as lifecycle conflicts. Retrieve the current opportunity before choosing another action. For request timeouts, retry the original action with the same idempotency key rather than creating a duplicate lead or deal.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Stora","colors":{"primary":"#05195A","light":"#F54309","dark":"#13183E"},"logo":{"light":"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/logo/stora-logo.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=208e8987df1797b88ccc8c1c418f8126","dark":"https://mintcdn.com/stora-f4154d0c/dmKerB3EhgN2KR1E/logo/stora-logo-white.svg?fit=max\u0026auto=format\u0026n=dmKerB3EhgN2KR1E\u0026q=85\u0026s=952b96d5123da5b794de397c9d2edacb"},"favicon":"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/favicon.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=03693c34ec06252c51107f6d1057a0ac","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://stora.co/contact","label":"Contact"}],"primary":{"type":"button","label":"Book a demo","href":"https://stora.co/get-started"}},"integrations":{"intercom":{"appId":"qaw9usmk"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"stora-f4154d0c","hasAudioNarration":false,"actualSubdomain":"stora-f4154d0c","customDomains":["docs.stora.co"],"gitSource":{"type":"github","owner":"stora-co","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf1833b80f21f061120388","collectionId":"6c1524d6-71cc-47b0-bd89-a5d15eb85c6e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf1833b80f21f061120388"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae22a8378169c4e7c58f440","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API reference","count":186},{"language":"default","tag":"Webhooks","count":73},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Opportunities","count":10},{"language":"default","tag":"Building integrations","count":8},{"language":"default","tag":"Deals","count":8},{"language":"default","tag":"Orders","count":8},{"language":"default","tag":"Working with the API","count":7},{"language":"default","tag":"Tasks","count":7},{"language":"default","tag":"Units","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"api@stora.co","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img.nav-logo{height:21px}.mermaid .node rect{rx:.375rem;ry:.375rem}.mermaid .edgeLabel,.mermaid .edgeLabel .labelBkg{border-radius:4px!important}[data-component-part=update-tag]{padding:.0625rem .375rem;background-color:#f4f4f5;border:1px solid #e4e4e7;font-size:.75rem}.dark [data-component-part=update-tag]{background-color:#27272a;border-color:#3f3f46}.mermaid .edgeLabel p{color:#fff!important;font-size:.625rem!important;font-weight:700!important;text-transform:uppercase!important;letter-spacing:.05em!important}.dark .mermaid .labelText,.dark .mermaid .labelText>tspan,.dark .mermaid .loopText,.dark .mermaid .loopText>tspan,.dark .mermaid .messageText{fill:#f4f4f5!important;stroke:none!important}.dark .mermaid marker[id$=-arrowhead] path,.dark .mermaid marker[id$=-filled-head] path{fill:#ff7237!important;stroke:#ff7237!important}.dark .mermaid .messageLine0,.dark .mermaid .messageLine1,.dark .mermaid marker[id$=-crosshead] path{stroke:#ff7237!important}[data-nav-tag=Beta],[data-nav-tag=Beta] *{background-color:#f87171;color:#fff!important}[data-nav-tag=Changing],[data-nav-tag=Changing] *{background-color:#f59e0b;color:#fff!important}"}],"page":{"pagePath":"2025-09/guides/opportunities-and-deals","slug":"/2025-09/guides/opportunities-and-deals","pageMetadata":{"title":"Capture and qualify leads","description":"Capture an opportunity, create or associate a deal, and manage the opportunity's lifecycle.","href":"/2025-09/guides/opportunities-and-deals"},"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: \"Capture an opportunity, create or associate a deal, and manage the opportunity’s lifecycle.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use an opportunity to capture interest before you have a qualified sales deal. When the lead is ready for your sales process, create a deal from the opportunity or associate it with an existing deal.`}),`\n`,_jsxs(_components.p,{children:[`An opportunity does not reserve a unit or create an order. Use the `,_jsx(_components.a,{href:`/2025-09/guides/booking-flow`,children:`booking flow`}),` when the customer is ready to rent.`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.p,{children:[`Use a token with `,_jsx(_components.code,{children:`public.opportunity:read`}),` and `,_jsx(_components.code,{children:`public.opportunity:write`}),`. To create a deal, `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/associate-an-opportunity-with-a-deal`,children:`associate an opportunity with a deal`}),`, or `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/disassociate-an-opportunity-from-its-deal`,children:`disassociate it`}),`, also grant `,_jsx(_components.code,{children:`public.deal:write`}),`. Listing deal stages requires `,_jsx(_components.code,{children:`public.deal_stage:read`}),`.`]}),`\n`,_jsx(_components.p,{children:`You need an existing contact ID for the example below. To include a storage preference, also choose a site and a unit type from that site. All records must belong to the connected operator. Add the appropriate read scopes if you look up or expand those resources.`}),`\n`,_jsxs(_components.p,{children:[`To run this guide’s `,_jsx(_components.code,{children:`curl`}),` examples, set `,_jsx(_components.code,{children:`STORA_ACCESS_TOKEN`}),` in your shell to your access token. `,_jsx(_components.code,{children:`STORA_ACCESS_TOKEN`}),` is an example variable name, not an API requirement. Replace the placeholder IDs with your records’ IDs.`]}),`\n`,_jsx(Heading,{level:`2`,id:`capture-the-opportunity`,children:`Capture the opportunity`}),`\n`,_jsx(_components.p,{children:`Generate an idempotency key for the lead:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`OPPORTUNITY_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/create-an-opportunity`,children:`Create an opportunity`}),` with the contact and the storage preference:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t'https://public-api.stora.co/2025-09/opportunities'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$OPPORTUNITY_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"contact\": {\"id\": \"con_REPLACE\"},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"site\": {\"id\": \"site_REPLACE\"},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"line_items\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\t{\"type\": \"unit_type\", \"item\": {\"id\": \"utype_REPLACE\"}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"metadata\": {\"external_lead_id\": \"lead_123\"}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t}'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response contains `,_jsx(_components.code,{children:`opportunity.id`}),`, an `,_jsx(_components.code,{children:`open`}),` status, and a `,_jsx(_components.code,{children:`public_api`}),` source. Save the ID with the lead in your system and set `,_jsx(_components.code,{children:`OPPORTUNITY_ID`}),` to that returned ID for later requests.`]}),`\n`,_jsxs(_components.p,{children:[`If the site or storage preference is not known yet, omit `,_jsx(_components.code,{children:`site`}),` and `,_jsx(_components.code,{children:`line_items`}),`. To create a new contact, omit the contact ID and supply `,_jsx(_components.code,{children:`contact.email`}),`. This creates a new contact rather than looking up an existing contact by email. See the `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/create-an-opportunity`,children:`create request`}),` for the supported contact fields. When you supply a contact ID alongside other contact fields, those fields update that contact.`]}),`\n`,_jsx(Heading,{level:`2`,id:`update-the-customer’s-preference`,children:`Update the customer’s preference`}),`\n`,_jsxs(_components.p,{children:[`While the opportunity is not associated with a deal, `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/update-an-opportunity`,children:`update it`}),` as you qualify the lead.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Keep the original contact. You cannot change the contact on an existing opportunity.`}),`\n`,_jsx(_components.li,{children:`Include at most one unit-type line item and one protection line item. A site is required for either type.`}),`\n`,_jsxs(_components.li,{children:[`Choose a unit type and `,_jsx(_components.a,{href:`/2025-09/guides/site-scoped-protection-levels`,children:`site-scoped protection level`}),` from the opportunity’s site.`]}),`\n`,_jsxs(_components.li,{children:[`To remove all line items, send `,_jsx(_components.code,{children:`\"line_items\": []`}),`. Omitting `,_jsx(_components.code,{children:`line_items`}),` leaves them unchanged.`]}),`\n`,_jsx(_components.li,{children:`If you change or clear the site, remove or replace any line items that no longer belong to it in the same request.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Use metadata for your own identifiers. Source, creator, and lifecycle fields are read-only.`}),`\n`,_jsx(Heading,{level:`2`,id:`create-a-deal-for-a-qualified-lead`,children:`Create a deal for a qualified lead`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/2025-09/api-reference/deals-stages/list-all-stages`,children:`List deal stages`}),` and choose an active stage for the new deal:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t'https://public-api.stora.co/2025-09/deals/stages?limit=100'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use that stage’s ID to `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/create-a-deal-from-an-opportunity`,children:`create a deal from the opportunity`}),`. Generate a different idempotency key for this action:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`DEAL_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\"https://public-api.stora.co/2025-09/opportunities/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$OPPORTUNITY_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/deal\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$DEAL_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"stage\": {\"id\": \"dstg_REPLACE\"},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"name\": \"Storage enquiry from our CRM\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t}'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response contains the new `,_jsx(_components.code,{children:`deal`}),`. Stora copies the opportunity’s contact, site, and line items, then associates the opportunity with that deal. The opportunity’s status becomes `,_jsx(_components.code,{children:`associated`}),`. An archived opportunity is unarchived when it is converted.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Conversion fails while the opportunity is associated or still has a previous conversion recorded. It also fails if its unit type or protection no longer belongs to its site. Fix invalid preferences before retrying. To change an existing association, follow the disassociation procedure below.`})}),`\n`,_jsx(Heading,{level:`2`,id:`use-an-existing-deal-instead`,children:`Use an existing deal instead`}),`\n`,_jsxs(_components.p,{children:[`If your CRM already has the deal in Stora, `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/associate-an-opportunity-with-a-deal`,children:`associate the opportunity`}),` instead of creating another deal.`]}),`\n`,_jsxs(_components.p,{children:[`Send `,_jsx(_components.code,{children:`POST /opportunities/{opportunity_id}/associate_deal`}),` with a `,_jsx(_components.code,{children:`deal`}),` object containing the existing deal’s `,_jsx(_components.code,{children:`id`}),`. Use an idempotency key for this action too.`]}),`\n`,_jsx(_components.p,{children:`The deal and opportunity must belong to the same contact. Several opportunities can refer to one deal, but each opportunity can refer to only one deal. Association does not change the deal or copy the opportunity’s preferences into it.`}),`\n`,_jsx(_components.p,{children:`After either creation or association, you can update only the opportunity’s metadata. Update the deal itself for subsequent sales work.`}),`\n`,_jsx(Heading,{level:`2`,id:`archive-or-remove-the-association`,children:`Archive or remove the association`}),`\n`,_jsxs(_components.p,{children:[`For a lead you no longer need to work, `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/archive-an-opportunity`,children:`archive the opportunity`}),`. You can archive only an open, unassociated opportunity. `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/unarchive-an-opportunity`,children:`Unarchive it`}),` if interest resumes.`]}),`\n`,_jsxs(_components.p,{children:[`To remove a deal association, use `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/disassociate-an-opportunity-from-its-deal`,children:`Disassociate an Opportunity from its Deal`}),`. The deal is unchanged. Association unarchives an archived opportunity. Disassociation returns the opportunity to `,_jsx(_components.code,{children:`open`}),`, or to `,_jsx(_components.code,{children:`archived`}),` if it was archived before association.`]}),`\n`,_jsx(_components.p,{children:`Disassociation also clears the previous conversion record, so you can associate the opportunity with another deal or convert it again. The original deal remains. Create another deal only if you intend a separate sales record.`}),`\n`,_jsxs(_components.p,{children:[`You cannot delete an associated opportunity. Remove its association first if you need to `,_jsx(_components.a,{href:`/2025-09/api-reference/opportunities/delete-an-opportunity`,children:`delete it`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Handle `,_jsx(_components.code,{children:`409`}),` responses as lifecycle conflicts. Retrieve the current opportunity before choosing another action. For request timeouts, retry the original action with the same idempotency key rather than creating a duplicate lead or deal.`]})]})}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":"Capture and qualify leads","description":"Capture an opportunity, create or associate a deal, and manage the opportunity's lifecycle.","href":"/2025-09/guides/opportunities-and-deals"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Capture the opportunity","slug":"capture-the-opportunity","depth":2,"children":[]},{"title":"Update the customer’s preference","slug":"update-the-customer’s-preference","depth":2,"children":[]},{"title":"Create a deal for a qualified lead","slug":"create-a-deal-for-a-qualified-lead","depth":2,"children":[]},{"title":"Use an existing deal instead","slug":"use-an-existing-deal-instead","depth":2,"children":[]},{"title":"Archive or remove the association","slug":"archive-or-remove-the-association","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"stora-f4154d0c","siteName":"Stora","title":"Capture and qualify leads - Stora","navMaps":{"firstHrefInVersion":{"2025-09":{"href":"/2025-09/guides/opportunities-and-deals","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T13:44:11.876Z","originalFileLocation":"2025-09/guides/opportunities-and-deals.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=\"Capture an opportunity, create or associate a deal, and manage the opportunity\u0026#x27;s lifecycle.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Stora\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_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/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Capture and qualify leads - Stora\">\u003cmeta data-mint-head property=\"og:description\" content=\"Capture an opportunity, create or associate a deal, and manage the opportunity\u0026#x27;s lifecycle.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Stora\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.stora.co/2025-09/guides/opportunities-and-deals\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://stora-f4154d0c.mintlify.app/_mintlify/api/og/v2?division=Building+integrations\u0026amp;title=Capture+and+qualify+leads\u0026amp;description=Capture+an+opportunity%2C+create+or+associate+a+deal%2C+and+manage+the+opportunity%27s+lifecycle.\u0026amp;theme=e0fa26a73a1fabf36459047f\u0026amp;signature=2a27ee06306e5c7bb191dfcfcce03c40526e590ca72aacadbccead3bdcec939f\">\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=\"Capture and qualify leads - Stora\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Capture an opportunity, create or associate a deal, and manage the opportunity\u0026#x27;s lifecycle.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://stora-f4154d0c.mintlify.app/_mintlify/api/og/v2?division=Building+integrations\u0026amp;title=Capture+and+qualify+leads\u0026amp;description=Capture+an+opportunity%2C+create+or+associate+a+deal%2C+and+manage+the+opportunity%27s+lifecycle.\u0026amp;theme=e0fa26a73a1fabf36459047f\u0026amp;signature=2a27ee06306e5c7bb191dfcfcce03c40526e590ca72aacadbccead3bdcec939f\">\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/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Stora\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#05195A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.stora.co/2025-09/guides/opportunities-and-deals\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/2025-09/guides/opportunities-and-deals.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.stora.co/#organization\",\"name\":\"Stora\",\"url\":\"https://docs.stora.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/logo/stora-logo.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=208e8987df1797b88ccc8c1c418f8126\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.stora.co#website\",\"name\":\"Stora\",\"url\":\"https://docs.stora.co\",\"publisher\":{\"@id\":\"https://docs.stora.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals#webpage\",\"url\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals\",\"name\":\"Capture and qualify leads\",\"description\":\"Capture an opportunity, create or associate a deal, and manage the opportunity's lifecycle.\",\"dateModified\":\"2026-10-22T13:44:11.876Z\",\"isPartOf\":{\"@id\":\"https://docs.stora.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Building integrations\",\"item\":\"https://docs.stora.co/2025-09/guides/data-synchronisation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Capture and qualify leads\",\"item\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals#article\",\"headline\":\"Capture and qualify leads\",\"name\":\"Capture and qualify leads\",\"description\":\"Capture an opportunity, create or associate a deal, and manage the opportunity's lifecycle.\",\"url\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals\",\"mainEntityOfPage\":{\"@id\":\"https://docs.stora.co/2025-09/guides/opportunities-and-deals#webpage\"},\"dateModified\":\"2026-10-22T13:44:11.876Z\",\"publisher\":{\"@id\":\"https://docs.stora.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.stora.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Stora\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Stora","nav":{"global":null,"versions":[{"version":"2025-09","default":true,"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/2025-09/guides/introduction"},{"title":"Core concepts","href":"/2025-09/guides/core-concepts"},{"title":"Developer Portal","href":"/2025-09/guides/developer-portal"},{"title":"Authentication overview","href":"/2025-09/guides/authentication"},{"title":"Your first API call","href":"/2025-09/guides/first-request"},{"title":"Authorization","href":"/2025-09/guides/authorization"}]},{"group":"Developer Portal","pages":[{"title":"Create a test operator","href":"/2025-09/guides/test-operators"},{"title":"Secure your Developer Portal account","href":"/2025-09/guides/developer-account-security"},{"title":"Manage your developer company and team","href":"/2025-09/guides/developer-company-and-team"}]},{"group":"Manage accounts","pages":[{"title":"Connect an account","href":"/2025-09/guides/connect-account"},{"title":"API credentials","href":"/2025-09/guides/managed-account-authentication"},{"title":"Manage access","href":"/2025-09/guides/manage-account-access"}]},{"group":"Concepts","pages":[{"title":"Allocations and access","href":"/2025-09/guides/allocations-and-access"}]},{"group":"Working with the API","pages":[{"title":"Requests","href":"/2025-09/guides/requests"},{"title":"Responses","href":"/2025-09/guides/responses"},{"title":"API versioning","href":"/2025-09/guides/api-versioning"},{"title":"Migrating to site-scoped protection levels","href":"/2025-09/guides/site-scoped-protection-levels"},{"title":"Webhooks","href":"/2025-09/guides/webhooks"},{"title":"Resource metadata","href":"/2025-09/guides/metadata"},{"title":"Errors","href":"/2025-09/guides/errors"}]},{"group":"Building integrations","pages":[{"title":"Data synchronisation","href":"/2025-09/guides/data-synchronisation"},{"title":"Building a booking flow","description":"Create a custom booking experience using the Stora API — from browsing availability to completing an order.","href":"/2025-09/guides/booking-flow"},{"title":"Capture and qualify leads","href":"/2025-09/guides/opportunities-and-deals"},{"title":"Schedule a subscription price adjustment","description":"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.","href":"/2025-09/guides/price-adjustments"},{"title":"Record integration activity","href":"/2025-09/guides/timeline-events"},{"title":"Building a partner integration","href":"/2025-09/guides/partner-integrations"},{"title":"Distributing a public plugin","href":"/2025-09/guides/distributing-public-plugins"},{"title":"Naming third-party plugins","href":"/2025-09/guides/third-party-plugin-naming"}]},{"group":"Marketplace","pages":[{"title":"Publish a marketplace listing","href":"/2025-09/guides/publish-marketplace-listing"}]},{"group":"Resources","pages":[{"title":"Developer tools","href":"/2025-09/guides/developer-tools"},{"title":"Changelog","href":"/2025-09/guides/changelog"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/2025-09/api-reference/contacts/list-all-contacts"}]}]}]},"title":"Capture and qualify leads - Stora","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}