Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.
Three routes through the same platform, depending on who you are and what “working” means for you. Each one ends with a real order moving.
The shortest path from a connected store to a parcel with a label on it.
#
Step
Where
1
Connect your store. Find it in the catalog and press Explore Channel. Shopify and Salla install OTO’s app from their own marketplace; most others take a store URL and an API key.
Integrations → Sales Channels
2
Create the place you ship from. One warehouse is enough to start. Set the address on the map rather than typing it, so routing gets a coordinate.
Settings → Management → Warehouses
3
Set the two fields that make promises.Serving Radius and Preparation SLA, on that hub. The SLA defaults to 24 hours — change it to what you actually do.
Same screen, step 2 of the wizard
4
Connect a carrier. Open one and connect the specific service you need — a carrier is several services, and rules select services.
Integrations → Shipping Partners
5
Connect a messaging provider. Your SMS account, so tracking messages go out under your registered sender name.
Settings → Customer Notifs → SMS
6
Ship one order. Pick a real order, create the shipment, print the label. Then track it to delivery and read the tracking page your customer sees.
Shipments
Ship one order end to end before configuring anything elseThe temptation is to set up rules, notifications and branding first, then try it. Do the opposite: one order, all the way to delivered, with everything on defaults.It takes twenty minutes and it surfaces the real problems — an address format the carrier rejects, a missing contact name, a product with no weight — while there is still only one order to fix rather than four hundred.
Everything above, plus the four decisions that only matter once there is more than one of something.
Decision
Why now
Hub codes
Agree them with whoever owns your ERP or POS before creating hubs. They are the join between systems, cheap to decide and expensive to change. See ERP systems.
Which hubs ship what, where
Serving radius and preparation SLA per hub, then order routing rules to choose between them.
Which carrier, when
Shipping automation rules, weighing cost, coverage and speed — including your own drivers if you run them.
Who sees what
Role templates before people, not after. Financial visibility is its own permission. See Users, roles & permissions.
If you run shops as well as warehouses, add them as branches and decide per hub whether location-based inventory is on — see Hubs Management. If you trade under more than one name, set up brands first, because messages, tracking pages and labels all hang off them.
Order of operations matters more than it looksBrands, hub codes and SKU conventions are referenced by everything created after them. Set them up first and the rest follows; set them up late and you are editing history.The sequence that works: brands → hubs → products → channels → carriers → rules → people.
Five calls, in order. The full surface is in the endpoint index; this is the spine.
#
Call
What you get
1
POST /rest/v2/refreshToken
An access token, valid one hour. Cache it; do not fetch one per request.
2
GET /rest/v2/healthCheck
Confirmation that the token and the host are both right before you debug anything else.
3
POST /rest/v2/createOrder
The order exists in OTO and is subject to routing. Supply your own order number or let OTO generate one.
4
POST /rest/v2/createShipment
A carrier is booked and an AWB exists.
5
POST /rest/v2/webhook
Registered once, not per order. Everything after this point is pushed to you.
Get your refresh_token from Settings → API Integrations → Connect, and build against https://staging-api.tryoto.com before production. See Authentication.
Add step 5 on day one, not when polling starts hurtingPolling orderStatus works immediately and needs no endpoint of your own, which is exactly why integrations get built that way and stay that way.A webhook is a morning’s work. Retrofitting one into a system that has assumed polling for a year is not.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OTO Docs","description":"Product documentation for OTO, the ecommerce operations platform and shipping gateway for merchants in Saudi Arabia, the UAE and Türkiye.","colors":{"primary":"#506EFE","light":"#3D5FFF","dark":"#506EFE"},"logo":{"light":"https://mintcdn.com/oto/50MvmFcOsjmCy_H4/images/docs-logo.png?fit=max\u0026auto=format\u0026n=50MvmFcOsjmCy_H4\u0026q=85\u0026s=e77cede9643d5290bd5ff9ef3cd62084","dark":"https://mintcdn.com/oto/CC-n0HhbZXZkyIOY/images/docs-logo-dark.png?fit=max\u0026auto=format\u0026n=CC-n0HhbZXZkyIOY\u0026q=85\u0026s=0eaa761eda10edc1248ec73a7a464915"},"favicon":{"light":"https://mintcdn.com/oto/jqSnxa8fmU8MbKy9/images/oto-logo-51232.png?fit=max\u0026auto=format\u0026n=jqSnxa8fmU8MbKy9\u0026q=85\u0026s=40c563a4988902b756905551f7dfa08e","dark":"https://mintcdn.com/oto/jqSnxa8fmU8MbKy9/images/oto-logo-51232.png?fit=max\u0026auto=format\u0026n=jqSnxa8fmU8MbKy9\u0026q=85\u0026s=40c563a4988902b756905551f7dfa08e"},"background":{"color":{"light":"#F5F7F9","dark":"#111111"}},"navbar":{"links":[{"href":"https://tryoto.com","label":"Home"},{"href":"https://support.tryoto.com","label":"Help center"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.tryoto.com"}},"seo":{"organization":{"id":"https://tryoto.com/#organization","name":"OTO","url":"https://tryoto.com","logo":"https://docs.tryoto.com/images/oto-logo-51232.png","sameAs":["https://www.linkedin.com/company/tryotocom","https://x.com/tryotocom","https://www.instagram.com/tryotocom","https://www.facebook.com/tryotocom","https://www.youtube.com/@tryotocom"]}},"fonts":{"family":"Ping ARLT Regular","source":"https://storage.googleapis.com/tryoto-public/public/assets/fonts/PingARLT-Regular.woff2","format":"woff2"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"ar","navbar":{"links":[{"href":"https://tryoto.com","label":"الرئيسية"},{"href":"https://support.tryoto.com/ar","label":"مركز المساعدة"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://app.tryoto.com"}},"href":"ar"},{"language":"tr","navbar":{"links":[{"href":"https://tryoto.com","label":"Anasayfa"},{"href":"https://support.tryoto.com/tr","label":"Yardım Merkezi"}],"primary":{"type":"button","label":"Gösterge Paneli","href":"https://app.tryoto.com"}},"href":"tr"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"oto","hasAudioNarration":false,"actualSubdomain":"oto","customDomains":["docs.tryoto.com"],"gitSource":{"type":"github","owner":"otoglobal","repo":"oto-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6ad8ce8fad82cbcc460c882d"},"chroma":{"latestBuiltDeploymentHistoryId":"6addbb84b128bc39b5e5b942","collectionId":"d72dffa9-51ec-43cf-8cd6-cc0c06f5df60","liveDeploymentHistoryId":"6addbb84b128bc39b5e5b942","schemaVersion":"v3"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6addbb84b128bc39b5e5b942","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"ar","tag":"الأنظمة","count":43},{"language":"en","tag":"Modules","count":43},{"language":"tr","tag":"Modüller","count":43},{"language":"ar","tag":"عمليات الربط","count":8},{"language":"en","tag":"Integrations","count":8},{"language":"tr","tag":"Entegrasyonlar","count":8},{"language":"ar","tag":"المطورون","count":6},{"language":"ar","tag":"البدء","count":6},{"language":"ar","tag":"إشعارات العملاء","count":6},{"language":"ar","tag":"إدارة المخزون","count":6},{"language":"ar","tag":"OMS متعدد القنوات","count":6},{"language":"en","tag":"Developers","count":6},{"language":"en","tag":"Get started","count":6},{"language":"en","tag":"Customer Notification","count":6},{"language":"en","tag":"Inventory Management","count":6},{"language":"en","tag":"Omnichannel OMS","count":6},{"language":"tr","tag":"Geliştiriciler","count":6},{"language":"tr","tag":"Başlarken","count":6},{"language":"tr","tag":"Müşteri Bildirimleri","count":6},{"language":"tr","tag":"Envanter Yönetimi","count":6},{"language":"tr","tag":"Omnichannel OMS","count":6},{"language":"ar","tag":"OTO FLEX","count":5},{"language":"ar","tag":"إدارة الشحن","count":5},{"language":"ar","tag":"إدارة المستودعات","count":5},{"language":"en","tag":"OTO FLEX","count":5},{"language":"en","tag":"Shipping Management","count":5},{"language":"en","tag":"Warehouse Management","count":5},{"language":"tr","tag":"OTO FLEX","count":5},{"language":"tr","tag":"Kargo Yönetimi","count":5},{"language":"tr","tag":"Depo Yönetimi","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"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":[{"filePath":"rtl.css","content":":is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar button.lg\\:hidden>div+div,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#content-area, #page-title, #header, #table-of-contents, #sidebar-content, #mobile-nav, #pagination, #footer),:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=menu]{direction:rtl;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul{padding-left:0;padding-right:0}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul>li{padding-left:0;padding-right:2rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul>li::before{left:auto;right:.5rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area blockquote{border-left:0;border-right:.25rem solid currentColor;padding-left:0;padding-right:1em}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(table, th, td){text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(pre, code, .code-block, .code-group, .frame svg, [data-badge]){direction:ltr;unicode-bidi:isolate;text-align:left}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #mobile-nav #localization-select-trigger svg,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu.ml-auto,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-next]{margin-left:0;margin-right:auto}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu-button{border-radius:0 var(--radius-xl, 0.75rem) var(--radius-xl, 0.75rem) 0;border-left-width:0;border-right-width:1px}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu-button+button{border-radius:var(--radius-xl, 0.75rem) 0 0 var(--radius-xl, 0.75rem)}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar button.lg\\:hidden>div+div svg,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=menuitem] .font-medium>svg{scale:-1 1}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]):has(#page-context-menu button[aria-expanded=true]) [role=menu][data-align=end]{translate:calc(100% - var(--anchor-width, 0px)) 0;transform-origin:0 -4px}}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area em{unicode-bidi:plaintext}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(h1, h2, h3, h4, h5, h6)>.absolute>a{display:none}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(h1, h2, h3, h4, h5, h6)>.absolute>a{display:flex;margin-left:0;translate:2.5rem 0}}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #sidebar-content>div{padding-right:0;padding-left:2rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) .sidebar-group-header{padding-left:0;padding-right:1rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button)[style*=padding-left]{padding-left:.75rem!important;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:1rem\"], [style*=\"padding-left: 1rem\"]){padding-right:1rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:1.75rem\"], [style*=\"padding-left: 1.75rem\"]){padding-right:1.75rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:2.5rem\"], [style*=\"padding-left: 2.5rem\"]){padding-right:2.5rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) button[aria-expanded]:not([aria-haspopup]) svg{margin-right:0;margin-left:-.125rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) button[aria-expanded=false]:not([aria-haspopup]) svg{scale:-1 1}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #table-of-contents a{padding-left:0;padding-right:calc(var(--toc-padding-left, 0rem) + var(--toc-focus-padding, 0rem))}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-prev] svg{rotate:180deg}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-next] svg{rotate:none}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button){direction:rtl;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button)>button{right:auto;left:.375rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button) li:first-child>a{padding-left:30px;padding-right:.75rem}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar{direction:rtl}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #topbar-cta-button svg{scale:-1 1}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) div:has(>#sidebar){flex-direction:row-reverse}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-container>div:has(>#content-area){flex-direction:row}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area{padding-left:.25rem;padding-right:5.7rem;margin-left:0;margin-right:-3rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #table-of-contents-layout{padding-left:0;padding-right:2.5rem}}"}],"page":{"pagePath":"get-started/quickstart","slug":"/get-started/quickstart","pageMetadata":{"title":"Quick start: ship your first order with OTO","sidebarTitle":"Quick start","description":"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.","href":"/get-started/quickstart"},"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: \"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\"\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`,em:`em`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Three routes through the same platform, depending on who you are and what “working” means for you. Each one ends with a real order moving.`}),`\n`,_jsx(Heading,{level:`2`,id:`which-route`,children:`Which route`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`If you…`}),_jsx(_components.th,{children:`Start at`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Sell on a storefront and want orders shipping`}),_jsx(_components.td,{children:`Merchant — about an hour`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Run several locations, brands or carriers`}),_jsx(_components.td,{children:`Multi-location — adds hubs and rules`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Are integrating another system`}),_jsx(_components.td,{children:`Developer — five API calls`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`merchant`,children:`Merchant`}),`\n`,_jsx(_components.p,{children:`The shortest path from a connected store to a parcel with a label on it.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`#`}),_jsx(_components.th,{children:`Step`}),_jsx(_components.th,{children:`Where`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`1`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Connect your store.`}),` Find it in the catalog and press `,_jsx(_components.strong,{children:`Explore Channel`}),`. Shopify and Salla install OTO’s app from their own marketplace; most others take a store URL and an API key.`]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Integrations → Sales Channels`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Create the place you ship from.`}),` One warehouse is enough to start. Set the address on the map rather than typing it, so routing gets a coordinate.`]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Settings → Management → Warehouses`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Set the two fields that make promises.`}),` `,_jsx(_components.strong,{children:`Serving Radius`}),` and `,_jsx(_components.strong,{children:`Preparation SLA`}),`, on that hub. The SLA defaults to 24 hours — change it to what you actually do.`]}),_jsx(_components.td,{children:`Same screen, step 2 of the wizard`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`4`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Connect a carrier.`}),` Open one and connect the specific `,_jsx(_components.em,{children:`service`}),` you need — a carrier is several services, and rules select services.`]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Integrations → Shipping Partners`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`5`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Connect a messaging provider.`}),` Your SMS account, so tracking messages go out under your registered sender name.`]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Settings → Customer Notifs → SMS`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`6`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Ship one order.`}),` Pick a real order, create the shipment, print the label. Then track it to delivery and read the tracking page your customer sees.`]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Shipments`})})]})]})]}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Ship one order end to end before configuring anything else`})}),_jsx(_components.p,{children:`The temptation is to set up rules, notifications and branding first, then try it. Do the opposite: one order, all the way to delivered, with everything on defaults.`}),_jsx(_components.p,{children:`It takes twenty minutes and it surfaces the real problems — an address format the carrier rejects, a missing contact name, a product with no weight — while there is still only one order to fix rather than four hundred.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`multi-location`,children:`Multi-location`}),`\n`,_jsx(_components.p,{children:`Everything above, plus the four decisions that only matter once there is more than one of something.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Decision`}),_jsx(_components.th,{children:`Why now`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Hub codes`})}),_jsxs(_components.td,{children:[`Agree them with whoever owns your ERP or POS `,_jsx(_components.em,{children:`before`}),` creating hubs. They are the join between systems, cheap to decide and expensive to change. See `,_jsx(_components.a,{href:`/integrations/erp-systems`,children:`ERP systems`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Which hubs ship what, where`})}),_jsxs(_components.td,{children:[`Serving radius and preparation SLA per hub, then `,_jsx(_components.a,{href:`/modules/omnichannel-oms/order-routing`,children:`order routing`}),` rules to choose between them.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Which carrier, when`})}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`/modules/shipping-management/shipping-automation`,children:`Shipping automation`}),` rules, weighing cost, coverage and speed — including your own drivers if you run them.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Who sees what`})}),_jsxs(_components.td,{children:[`Role templates before people, not after. Financial visibility is its own permission. See `,_jsx(_components.a,{href:`/platform/users-roles-and-permissions`,children:`Users, roles \u0026 permissions`}),`.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`If you run shops as well as warehouses, add them as `,_jsx(_components.strong,{children:`branches`}),` and decide per hub whether location-based inventory is on — see `,_jsx(_components.a,{href:`/modules/hubs-management/overview`,children:`Hubs Management`}),`. If you trade under more than one name, set up `,_jsx(_components.strong,{children:`brands`}),` first, because messages, tracking pages and labels all hang off them.`]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Order of operations matters more than it looks`})}),_jsx(_components.p,{children:`Brands, hub codes and SKU conventions are referenced by everything created after them. Set them up first and the rest follows; set them up late and you are editing history.`}),_jsxs(_components.p,{children:[`The sequence that works: `,_jsx(_components.strong,{children:`brands → hubs → products → channels → carriers → rules → people`}),`.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`developer`,children:`Developer`}),`\n`,_jsxs(_components.p,{children:[`Five calls, in order. The full surface is in the `,_jsx(_components.a,{href:`/developers/rest-api-reference`,children:`endpoint index`}),`; this is the spine.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`#`}),_jsx(_components.th,{children:`Call`}),_jsx(_components.th,{children:`What you get`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`1`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /rest/v2/refreshToken`})}),_jsx(_components.td,{children:`An access token, valid one hour. Cache it; do not fetch one per request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /rest/v2/healthCheck`})}),_jsx(_components.td,{children:`Confirmation that the token and the host are both right before you debug anything else.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /rest/v2/createOrder`})}),_jsx(_components.td,{children:`The order exists in OTO and is subject to routing. Supply your own order number or let OTO generate one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`4`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /rest/v2/createShipment`})}),_jsx(_components.td,{children:`A carrier is booked and an AWB exists.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`5`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`POST /rest/v2/webhook`})}),_jsx(_components.td,{children:`Registered once, not per order. Everything after this point is pushed to you.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Get your `,_jsx(_components.code,{children:`refresh_token`}),` from `,_jsx(_components.strong,{children:`Settings → API Integrations → Connect`}),`, and build against `,_jsx(_components.code,{children:`https://staging-api.tryoto.com`}),` before production. See `,_jsx(_components.a,{href:`/developers/authentication`,children:`Authentication`}),`.`]}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Add step 5 on day one, not when polling starts hurting`})}),_jsxs(_components.p,{children:[`Polling `,_jsx(_components.code,{children:`orderStatus`}),` works immediately and needs no endpoint of your own, which is exactly why integrations get built that way and stay that way.`]}),_jsx(_components.p,{children:`A webhook is a morning’s work. Retrofitting one into a system that has assumed polling for a year is not.`})]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-go-live`,children:`Before you go live`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Check preparation SLAs`})}),_jsx(_components.td,{children:`Every hub, set from what it actually does rather than the 24-hour default.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Check working hours`})}),_jsx(_components.td,{children:`Including whether branches have any. Hours feed the delivery promise.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Send yourself every message`})}),_jsx(_components.td,{children:`Tracking, delivery, return — in every language you support, on a real handset.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Set the credit threshold`})}),_jsx(_components.td,{children:`High enough to leave time to notice and pay. Out of credit means shipments stop being created.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Turn on MFA`})}),_jsxs(_components.td,{children:[`Everyone, and administrators first. See `,_jsx(_components.a,{href:`/platform/security-and-compliance`,children:`Security \u0026 compliance`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(`strong`,{children:`Subscribe to the silent failures`})}),_jsxs(_components.td,{children:[_jsx(`strong`,{children:`Shipment Creation Attempt Failed`}),` and `,_jsx(`strong`,{children:`SLA Breach`}),`. Nothing else tells you about them. See `,_jsx(_components.a,{href:`/platform/collaboration-and-notifications`,children:`notifications`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-go-next`,children:`Where to go next`}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsx(Card,{title:`Core concepts`,href:`/get-started/core-concepts`,children:_jsx(_components.p,{children:`The vocabulary everything else uses.`})}),_jsx(Card,{title:`Omnichannel OMS`,href:`/modules/omnichannel-oms/overview`,children:_jsx(_components.p,{children:`The module to read first.`})}),_jsx(Card,{title:`Developers`,href:`/developers/overview`,children:_jsx(_components.p,{children:`The full API.`})})]})]})}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":"Quick start: ship your first order with OTO","sidebarTitle":"Quick start","description":"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.","href":"/get-started/quickstart"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Which route","slug":"which-route","depth":2,"children":[]},{"title":"Merchant","slug":"merchant","depth":2,"children":[]},{"title":"Multi-location","slug":"multi-location","depth":2,"children":[]},{"title":"Developer","slug":"developer","depth":2,"children":[]},{"title":"Before you go live","slug":"before-you-go-live","depth":2,"children":[]},{"title":"Where to go next","slug":"where-to-go-next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/oto/5e4908087dc78be6/adsping.js"],"subdomain":"oto","siteName":"OTO Docs","title":"Quick start: ship your first order with OTO - OTO Docs","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/get-started/quickstart","matchLevel":0},"ar":{"href":"/ar/get-started/quickstart","matchLevel":1},"tr":{"href":"/tr/get-started/quickstart","matchLevel":1}}},"lastModified":"2026-10-22T15:40:13.897Z","originalFileLocation":"get-started/quickstart.mdx","locale":"en"},"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=\"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OTO Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_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/oto/S_K-Ar2SQPcQI6e_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Quick start: ship your first order with OTO - OTO Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OTO Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tryoto.com/get-started/quickstart\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://oto.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Quick+start%3A+ship+your+first+order+with+OTO\u0026amp;description=Get+your+first+order+moving+in+OTO+on+the+route+that+fits+you%3A+a+merchant+connecting+a+store%2C+a+business+with+several+locations%2C+or+a+developer+using+the+API.\u0026amp;theme=fb0540dacc0ff6c761581805\u0026amp;signature=a4e6549f99c21e06bb3a88b2f3cc9fdbf43d2313741e36003074454a4f756602\">\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=\"Quick start: ship your first order with OTO - OTO Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://oto.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Quick+start%3A+ship+your+first+order+with+OTO\u0026amp;description=Get+your+first+order+moving+in+OTO+on+the+route+that+fits+you%3A+a+merchant+connecting+a+store%2C+a+business+with+several+locations%2C+or+a+developer+using+the+API.\u0026amp;theme=fb0540dacc0ff6c761581805\u0026amp;signature=a4e6549f99c21e06bb3a88b2f3cc9fdbf43d2313741e36003074454a4f756602\">\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/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OTO Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#506EFE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tryoto.com/get-started/quickstart\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/get-started/quickstart.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.tryoto.com/get-started/quickstart\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.tryoto.com/ar/get-started/quickstart\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://docs.tryoto.com/tr/get-started/quickstart\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.tryoto.com/get-started/quickstart\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://tryoto.com/#organization\",\"name\":\"OTO\",\"url\":\"https://tryoto.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.tryoto.com/images/oto-logo-51232.png\"},\"sameAs\":[\"https://www.linkedin.com/company/tryotocom\",\"https://x.com/tryotocom\",\"https://www.instagram.com/tryotocom\",\"https://www.facebook.com/tryotocom\",\"https://www.youtube.com/@tryotocom\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tryoto.com#website\",\"name\":\"OTO Docs\",\"url\":\"https://docs.tryoto.com\",\"publisher\":{\"@id\":\"https://tryoto.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tryoto.com/get-started/quickstart#webpage\",\"url\":\"https://docs.tryoto.com/get-started/quickstart\",\"name\":\"Quick start: ship your first order with OTO\",\"description\":\"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\",\"dateModified\":\"2026-10-22T15:40:13.897Z\",\"isPartOf\":{\"@id\":\"https://docs.tryoto.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tryoto.com/get-started/quickstart#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tryoto.com/get-started/quickstart#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get started\",\"item\":\"https://docs.tryoto.com/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quick start: ship your first order with OTO\",\"item\":\"https://docs.tryoto.com/get-started/quickstart\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tryoto.com/get-started/quickstart#article\",\"headline\":\"Quick start: ship your first order with OTO\",\"name\":\"Quick start: ship your first order with OTO\",\"description\":\"Get your first order moving in OTO on the route that fits you: a merchant connecting a store, a business with several locations, or a developer using the API.\",\"url\":\"https://docs.tryoto.com/get-started/quickstart\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tryoto.com/get-started/quickstart#webpage\"},\"dateModified\":\"2026-10-22T15:40:13.897Z\",\"publisher\":{\"@id\":\"https://tryoto.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tryoto.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OTO Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OTO Docs","nav":{"global":null,"languages":[{"language":"en","pages":[{"group":"Get started","pages":[{"title":"Ecommerce operations platform and shipping gateway","sidebarTitle":"Home","href":""},{"title":"What is OTO","href":"/get-started/what-is-oto"},{"title":"Core concepts: orders, shipments, stock and hubs","sidebarTitle":"Core concepts","href":"/get-started/core-concepts"},{"title":"Platform architecture","description":"How the OTO platform fits together: its four surfaces, how data enters and leaves, what stays separate, where it runs, and how you can extend it.","href":"/get-started/architecture"},{"title":"Quick start: ship your first order with OTO","sidebarTitle":"Quick start","href":"/get-started/quickstart"},{"title":"Glossary of OTO terms","sidebarTitle":"Glossary","description":"Short definitions of the terms used across the OTO docs, from AWB, COD and SKU to hubs, bins and waves, with links to the pages that explain them.","href":"/get-started/glossary"}]},{"group":"Modules","pages":[{"group":"Omnichannel OMS","pages":[{"title":"Omnichannel OMS","sidebarTitle":"Overview","href":"/modules/omnichannel-oms/overview"},{"title":"Order sync: how orders get into OTO","sidebarTitle":"Order Sync","href":"/modules/omnichannel-oms/order-sync"},{"title":"Order routing across warehouses and stores","sidebarTitle":"Order Routing","href":"/modules/omnichannel-oms/order-routing"},{"title":"Address and data correction","href":"/modules/omnichannel-oms/order-data-correction"},{"title":"Pre-fulfillment checks","href":"/modules/omnichannel-oms/prefulfillment"},{"title":"Order fulfillment in warehouses and stores","sidebarTitle":"Order Fulfillment","href":"/modules/omnichannel-oms/order-fulfillment"}]},{"group":"Sales Channels","pages":[{"title":"Sales Channels","sidebarTitle":"Overview","href":"/modules/sales-channels/overview"},{"title":"Connect and sync a sales channel","sidebarTitle":"Channel sync","href":"/modules/sales-channels/sync"},{"title":"Sync order status and tracking to your store","sidebarTitle":"Status and tracking updates","href":"/modules/sales-channels/updates"},{"title":"Checkout API for live shipping rates","sidebarTitle":"Checkout API","href":"/modules/sales-channels/checkout-api"}]},{"group":"Shipping Management","pages":[{"title":"Shipping Management","sidebarTitle":"Overview","href":"/modules/shipping-management/overview"},{"title":"Carrier integration and configuration","sidebarTitle":"Carrier Integration","href":"/modules/shipping-management/carrier-integration"},{"title":"Create shipments, print labels and track parcels","sidebarTitle":"Shipping \u0026 Tracking","href":"/modules/shipping-management/shipping-and-tracking"},{"title":"Shipping automation and carrier selection rules","sidebarTitle":"Shipping Automation","href":"/modules/shipping-management/shipping-automation"},{"title":"Shipping Invoices Reconciliation","href":"/modules/shipping-management/shipping-invoices-reconciliation"}]},{"group":"Return Management","pages":[{"title":"Return Management","sidebarTitle":"Overview","href":"/modules/return-management/overview"},{"title":"Return portal and customer return requests","sidebarTitle":"Customer returns","href":"/modules/return-management/customer-returns"},{"title":"Receiving and inspecting returns","sidebarTitle":"Returns receiving","href":"/modules/return-management/returns-receiving"},{"title":"Return automation rules","sidebarTitle":"Return automation","href":"/modules/return-management/return-automation"}]},{"group":"Hubs Management","pages":[{"title":"Hubs Management","sidebarTitle":"Overview","href":"/modules/hubs-management/overview"},{"title":"Add and configure warehouses and branches","sidebarTitle":"Hub configuration","href":"/modules/hubs-management/hubs-management"}]},{"group":"Customer Notification","pages":[{"title":"Customer Notification","sidebarTitle":"Overview","href":"/modules/customer-notification/overview"},{"title":"Branded tracking and confirmation pages","sidebarTitle":"Branded pages","href":"/modules/customer-notification/branded-pages"},{"title":"SMS notifications","sidebarTitle":"SMS","href":"/modules/customer-notification/sms"},{"title":"Email notifications","sidebarTitle":"Email","href":"/modules/customer-notification/email"},{"title":"WhatsApp notifications","sidebarTitle":"WhatsApp","href":"/modules/customer-notification/whatsapp"},{"title":"Custom notification workflows","sidebarTitle":"Custom workflows","href":"/modules/customer-notification/custom-workflows"}]},{"group":"Warehouse Management","pages":[{"title":"Warehouse Management","sidebarTitle":"Overview","href":"/modules/warehouse-management/overview"},{"title":"OTO PACK mobile app for warehouse staff","sidebarTitle":"The OTO PACK app","href":"/modules/warehouse-management/ops"},{"title":"Warehouse picking methods and waves","sidebarTitle":"Picking methods","href":"/modules/warehouse-management/picking-methods"},{"title":"Packing and dispatch","href":"/modules/warehouse-management/packing-dispatch"},{"title":"Inbound and putaway","href":"/modules/warehouse-management/inbound-putaway"}]},{"group":"Inventory Management","pages":[{"title":"Inventory Management","sidebarTitle":"Overview","href":"/modules/inventory-management/overview"},{"title":"Inventory tracking","href":"/modules/inventory-management/inventory-tracking"},{"title":"Inbound inventory","href":"/modules/inventory-management/inbound-inventory"},{"title":"Sync inventory to your sales channels","sidebarTitle":"Inventory sync","href":"/modules/inventory-management/inventory-sync"},{"title":"Product catalog and SKU configuration","sidebarTitle":"Product configuration","href":"/modules/inventory-management/product-configuration"},{"title":"Inventory counts in the OTO PACK app","sidebarTitle":"Inventory counts","href":"/modules/inventory-management/inventory-count"}]},{"group":"OTO FLEX","pages":[{"title":"OTO FLEX: delivery with your own drivers","sidebarTitle":"Overview","href":"/modules/oto-flex/overview"},{"title":"Driver and fleet management","sidebarTitle":"Fleet Management","href":"/modules/oto-flex/fleet-management"},{"title":"Delivery planning and driver assignment","sidebarTitle":"Planning","href":"/modules/oto-flex/planning"},{"title":"Driver pickup in OTO FLEX","sidebarTitle":"Pickup","href":"/modules/oto-flex/pickup"},{"title":"Last-mile delivery in OTO FLEX","sidebarTitle":"Delivery","href":"/modules/oto-flex/delivery"}]}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/integrations/overview"},{"title":"Sales channel integrations","sidebarTitle":"Sales channels","href":"/integrations/sales-channels"},{"title":"Marketplace integrations","sidebarTitle":"Marketplaces","href":"/integrations/marketplaces"},{"title":"ERP integrations","sidebarTitle":"ERP systems","href":"/integrations/erp-systems"},{"title":"POS integrations","sidebarTitle":"POS systems","href":"/integrations/pos-systems"},{"title":"Carrier integrations","sidebarTitle":"Carriers","href":"/integrations/carriers"},{"title":"SMS, email and WhatsApp providers","sidebarTitle":"Messaging providers","href":"/integrations/messaging-providers"},{"title":"Webhooks for real-time updates","sidebarTitle":"Webhooks","href":"/integrations/webhooks"}]},{"group":"Developers","pages":[{"title":"OTO API overview","sidebarTitle":"Developers overview","href":"/developers/overview"},{"title":"API authentication","sidebarTitle":"Authentication","href":"/developers/authentication"},{"title":"REST API reference","href":"/developers/rest-api-reference"},{"title":"Webhook events and payloads","sidebarTitle":"Webhook events","href":"/developers/webhook-events"},{"title":"OTO API Postman collection","sidebarTitle":"Postman collection","href":"/developers/postman-collection"},{"title":"API errors and rate limits","sidebarTitle":"Errors \u0026 rate limits","href":"/developers/errors-and-rate-limits"}]},{"group":"Platform","pages":[{"title":"Security \u0026 compliance","href":"/platform/security-and-compliance"},{"title":"Users, roles \u0026 permissions","href":"/platform/users-roles-and-permissions"},{"title":"Localization: languages, currency and time zones","sidebarTitle":"Localization","href":"/platform/localization"},{"title":"Collaboration \u0026 notifications","href":"/platform/collaboration-and-notifications"},{"title":"Platform announcements","sidebarTitle":"Announcements","href":"/platform/announcements"}]},{"group":"Pricing","pages":[{"title":"Plans, pricing and add-ons","sidebarTitle":"Plans \u0026 packaging","href":"/pricing/plans-and-packaging"}]}]},{"language":"ar","navbar":{"links":[{"href":"https://tryoto.com","label":"الرئيسية"},{"href":"https://support.tryoto.com/ar","label":"مركز المساعدة"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://app.tryoto.com"}},"pages":[{"title":"ar","href":"/ar/get-started/quickstart"}]},{"language":"tr","navbar":{"links":[{"href":"https://tryoto.com","label":"Anasayfa"},{"href":"https://support.tryoto.com/tr","label":"Yardım Merkezi"}],"primary":{"type":"button","label":"Gösterge Paneli","href":"https://app.tryoto.com"}},"pages":[{"title":"tr","href":"/tr/get-started/quickstart"}]}]},"title":"Quick start: ship your first order with OTO - OTO Docs","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}