The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer’s booking link back.
This page applies only to editions with the Pickup windows feature. Check your CRM for
Settings → Feature Flags with a Pickup windows switch. If that page is not there, your
edition takes the single ship_date only, the pickup fields below are silently ignored, and the
quote-config endpoint answers 404. Nothing here is required — every pickup field on this page
is optional everywhere.
This page is self-contained: it has everything a form of your own needs, from the first request to
the customer landing on the booking page. The generic Lead source API
reference lists every optional field the save endpoint accepts if you need more than is shown here.
Settings → Lead Management → Lead sources → + Add new source. Only the name is required.
Set Per Lead Price to 0 for your own website. One source per form or page if you want
their leads and cost tracked separately.
2
Copy its Lead save URL
Back on the Lead sources tab, click the copy icon next to Lead save URL in the
URLs column. The tooltip says Copied! — that URL is the whole credential.
The key in the URL is the authentication — there is no separate token. Every endpoint on this page
lives under the same prefix; replace the trailing /save with the path shown.
Endpoint
Method
What it does
…/<key>/quote-config
GET
Which pickup question this account asks. Call on form load.
…/<key>/save
POST
Create the lead. Returns the lead id and the booking link.
…/<key>/<lead-id>/booking-status
GET
Whether the automatic quote is ready, plus the booking link again.
Treat the URL like a password. Anyone who has it can create leads in your account. Create one
lead source per form or page if you want their leads and cost tracked separately.
Each key is null when the account does not ask that question, so the rendering rule is simple:
pickupTimeframes is a list → show a dropdown built from it, verbatim. Pre-select the option
with isDefault: true. Do not add, rename or reorder options — the values are what pricing keys
off, and the labels are what the account configured.
pickupWindow is an object → you may show two date fields. Set the picker’s minimum to
earliestDate (today on the account’s own calendar, which may not be today where the visitor is).
If you only ask for one date, send it as pickup_window_start and BeRocker adds
defaultWindowDays to make the window.
Both are null, or the request fails (including a 404 on an edition without the feature)
→ show the single pickup date field (ship_date).
The switches behind these are Settings → Feature Flags → Pickup windows and Timeframe
pricing (which needs Pickup windows on). They are account-wide, so every form and lead source of
one account gets the same answer.
Feature Flags and Pickup SOP live under Finance on the Settings page.
Both switches on. Timeframe pricing is greyed out until Pickup windows is on.
Render the single date field by default and only swap it out after quote-config answers. A
form that waits for this call before rendering anything is blank while the request is slow.
First available day and last promised day, YYYY-MM-DD. Also accepted as pickupWindowStart / pickupWindowEnd. Leave the end out and BeRocker fills in the account’s default window length. The same date twice is a one-day pickup.
A timeframe
pickup_timeframe
Timeframe pricing on
One of asap, within_1_week, within_2_weeks, beyond_2_weeks. The option’s label (“Within 1 week”) is accepted too, in any case, with spaces or hyphens.
A field whose switch is off is ignored, never rejected, so one form works for every account.When a window is recorded it becomes the lead’s pickup window — the same thing a rep enters on
Add Shipment or the customer picks on the booking page — it is logged on the lead as set by the
customer, and ship_date is set to the window’s first day. A timeframe is recorded as what the
customer chose, and the deposit is quoted from that timeframe’s own schedule in
Pricing — sooner costs more, the carrier’s pay is the same either way.
A window is checked before the lead is created, so a broken date picker cannot fill your CRM:
Rule
Error field
Both dates today or later on the account’s calendar
the offending date
End on or after the start
pickup_window_end
An end needs a start
pickup_window_start
A value that is not a date
the offending date
Any breach answers 422 with errors naming the field and a message you can show under it, and
no lead is saved. A timeframe that names none of the four options is refused the same way.
If your form shows the timeframe dropdown, treat the selection as required and refuse to submit
without one. Never fall back to “as soon as possible” silently — it is the highest deposit, and a
customer who did not choose it should not be quoted it.
The lead’s id in BeRocker. Needed for booking-status.
bookingLink
The customer’s booking page for this lead. Available immediately, even before a price exists.
price, deposit
Usually null right after the save — pricing runs in the background. See the next step.
pickupTimeframe
What was recorded, or null when none was sent or the account has timeframe pricing off.
pickupWindowStart, pickupWindowEnd
The recorded window as YYYY-MM-DD, or null when none was sent or the account has pickup windows off.
leadProvider
The name of the lead source the URL belongs to.
null back for a pickup field you sent is how you tell it was dropped rather than saved.A validation failure answers 422:
{ "message": "The last pickup date cannot be before the first available date.", "errors": { "pickup_window_end": "The last pickup date cannot be before the first available date." } }
message is the first few field messages joined together; errors maps each field to its own.
A key that does not exist, or whose lead source is Disabled, answers 403 with
"message": "Invalid credentials".
5. Wait for the price, then send the customer to the booking page
The booking link works straight away, but the automatic quote is computed in the background, so a
customer sent there instantly may land on a page with no price yet. To send them with a price on
it, poll:
GET /api/v1/auto-logistics/client/webhooks/lead/<api-key>/<lead-id>/booking-status
A usable price exists. Send the customer to bookingLink.
manualReview
The lead has a custom vehicle; an agent prices it by hand. Stop polling and show your own “we’ll be in touch with your quote” message.
priceFailed
No price is coming — pricing gave up, or the account does not auto-quote. Stop polling and show a message.
autoPriceEnabled
Whether a price was ever going to be computed for this lead. false means the account does not auto-quote — skip the wait.
bookingLink
The same link the save returned.
Poll every couple of seconds for up to a minute or so, then give up gracefully — the lead is already
in the CRM and assigned either way.On the booking page:
a lead saved with a window opens with that window already filled in;
a lead saved with a timeframe opens on the first available date that timeframe implies
(as soon as possible → today, or tomorrow once the account’s day has closed; within 1 week → a
week out, and so on — the offsets are set in Settings → Pickup SOP), and the customer
confirms real dates there;
a lead saved with a single date opens on it.
Whatever the customer confirms there — dates, signature, payment — flows into the lead exactly as
it would for a widget lead.
Settings → Pickup SOP → Timeframes & Expedite: the seed days behind each timeframe.
Settings → Lead Management → Lead sources → URLs. One source per form or page if you want them
tracked separately.
2
Turn on the pickup question you want
Settings → Feature Flags: Pickup windows for the two-date question, plus Timeframe
pricing for the how-soon question. Then check the per-timeframe deposit schedules in
Pricing.
3
Call quote-config on load
Render the timeframe dropdown, the window fields, or the single date — from the answer, never
from an assumption.
4
Post to /save, keep bookingLink
Handle a 422 by showing the field message and keeping the visitor’s input.
5
Poll booking-status, then hand off
Send the customer to bookingLink once priceReady is true.
6
Send one test lead
Use your own name and number, watch it land in Inbox, and open the lead to see
the window on it and the history entry saying the customer set it.
Deposit schedules, including the per-timeframe ones.
Booking page
Where the customer confirms dates, signs and pays.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"BeRocker Knowledge Base","colors":{"primary":"#2B73FF","light":"#2B73FF","dark":"#2B73FF"},"logo":{"light":"https://mintcdn.com/berocker/uK6pXKV8zeW5rkWk/logo/light_1.svg?fit=max\u0026auto=format\u0026n=uK6pXKV8zeW5rkWk\u0026q=85\u0026s=5be2feb3ffa0f2665aec34f15d1a4a84","dark":"https://mintcdn.com/berocker/uK6pXKV8zeW5rkWk/logo/dark_1.svg?fit=max\u0026auto=format\u0026n=uK6pXKV8zeW5rkWk\u0026q=85\u0026s=b22d2a220b5f77c5766a53411a237b6f"},"favicon":"https://mintcdn.com/berocker/VZf4uHEZQyXDuaLq/favicon_1.svg?fit=max\u0026auto=format\u0026n=VZf4uHEZQyXDuaLq\u0026q=85\u0026s=8dc04278a5dbeb9b746dbe75941b2ff4","navbar":{"links":[{"href":"/support/contact","label":"Support"},{"href":"https://berocker.com","label":"Website"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.berocker.com"}},"footer":{"socials":{"x":"https://x.com/BeRockerAI","youtube":"https://www.youtube.com/channel/UCepoqbgJOX6h76xPClOghqA","linkedin":"https://www.linkedin.com/company/berocker","facebook":"https://www.facebook.com/berockerai","slack":"https://berockerai.slack.com/archives/C08LD9WBWQ4"}},"contextual":{"options":["copy","view","chatgpt"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"berocker","hasAudioNarration":false,"actualSubdomain":"berocker","customDomains":["help.berocker.com"],"gitSource":{"type":"github","owner":"nazirov91","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{},"buildId":"6adb9114d3c1778795385d03","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Integrations","count":26},{"language":"default","tag":"Settings","count":15},{"language":"default","tag":"Using BeRocker","count":12},{"language":"default","tag":"CRM settings","count":10},{"language":"default","tag":"Get Started","count":9},{"language":"default","tag":"Phone, SMS and WhatsApp","count":7},{"language":"default","tag":"Start here","count":5},{"language":"default","tag":"Leads and AI","count":5},{"language":"default","tag":"Email","count":5},{"language":"default","tag":"Payments","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"integrations/pickup-windows-api","slug":"/integrations/pickup-windows-api","pageMetadata":{"title":"Lead Source API with pickup windows","description":"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer's booking link back.","href":"/integrations/pickup-windows-api"},"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: \"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer’s booking link back.\"\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`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Frame,Heading,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`This page applies only to editions with the Pickup windows feature.`}),` Check your CRM for\n`,_jsx(_components.strong,{children:`Settings → Feature Flags`}),` with a `,_jsx(_components.strong,{children:`Pickup windows`}),` switch. If that page is not there, your\nedition takes the single `,_jsx(_components.code,{children:`ship_date`}),` only, the pickup fields below are silently ignored, and the\n`,_jsx(_components.code,{children:`quote-config`}),` endpoint answers `,_jsx(_components.code,{children:`404`}),`. Nothing here is required — every pickup field on this page\nis optional everywhere.`]})}),`\n`,_jsxs(_components.p,{children:[`This page is self-contained: it has everything a form of your own needs, from the first request to\nthe customer landing on the booking page. The generic `,_jsx(_components.a,{href:`/integrations/lead-source-api`,children:`Lead source API`}),`\nreference lists every optional field the save endpoint accepts if you need more than is shown here.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`1-your-endpoint-urls`,children:`1. Your endpoint URLs`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a lead source for the form`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Settings → Lead Management → Lead sources → + Add new source`}),`. Only the name is required.\nSet `,_jsx(_components.strong,{children:`Per Lead Price`}),` to 0 for your own website. One source per form or page if you want\ntheir leads and cost tracked separately.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=ac525888faf27f811d6863af7a719d0d`,alt:`The Add new source dialog in Settings → Lead Management`,\"data-og-width\":`3200`,width:`3200`,\"data-og-height\":`2000`,height:`2000`,\"data-path\":`images/pickup-windows/add-source.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=280\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=6c13a0aff9afe443a087df8081d41467 280w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=560\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=d15fbd8220c133602578c79cfbf6afa3 560w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=840\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=798cf1913ca07f17fc6c1d8715fbd3e2 840w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=e86190af3b62b0143a81fd85733d5365 1100w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=ee1348cd6a5b2daef1e2cb6544263255 1650w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/add-source.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=c57d43aad450d20a02c459be38f7a714 2500w`})})]}),_jsxs(Step,{title:`Copy its Lead save URL`,children:[_jsxs(_components.p,{children:[`Back on the `,_jsx(_components.strong,{children:`Lead sources`}),` tab, click the copy icon next to `,_jsx(_components.strong,{children:`Lead save URL`}),` in the\n`,_jsx(_components.strong,{children:`URLs`}),` column. The tooltip says `,_jsx(_components.strong,{children:`Copied!`}),` — that URL is the whole credential.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=0f4ec570c96ee6bd377caaac5d745bf8`,alt:`Copying the Lead save URL from the URLs column of the Lead sources table`,\"data-og-width\":`3200`,width:`3200`,\"data-og-height\":`2000`,height:`2000`,\"data-path\":`images/pickup-windows/lead-sources-copy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=280\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=194d8a1505ed8c1ca0e0d859f40868bc 280w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=560\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=4b001ffe1881d951d6073e88ab61fd67 560w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=840\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=205fb79a9852c1cfc460a65ad0d6edca 840w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=9785eceb00ebad3e3220b6e6507bdb1e 1100w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=439b0acb1557c853b15e94abe844c22c 1650w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/lead-sources-copy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=330eb738f904bae045267e9493292b87 2500w`})})]})]}),`\n`,_jsx(_components.p,{children:`The URL looks like:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://app.berocker.com/api/v1/auto-logistics/client/webhooks/lead/\u003cyour-api-key>/save`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The key in the URL is the authentication — there is no separate token. Every endpoint on this page\nlives under the same prefix; replace the trailing `,_jsx(_components.code,{children:`/save`}),` with the path shown.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Endpoint`}),_jsx(_components.th,{children:`Method`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`…/\u003ckey>/quote-config`})}),_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:`Which pickup question this account asks. Call on form load.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`…/\u003ckey>/save`})}),_jsx(_components.td,{children:`POST`}),_jsxs(_components.td,{children:[`Create the lead. Returns the lead id and the `,_jsx(_components.strong,{children:`booking link`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`…/\u003ckey>/\u003clead-id>/booking-status`})}),_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:`Whether the automatic quote is ready, plus the booking link again.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Treat the URL like a password. Anyone who has it can create leads in your account. Create one\nlead source per form or page if you want their leads and cost tracked separately.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsxs(Heading,{level:`2`,id:`2-ask-what-to-show-—-quote-config`,children:[`2. Ask what to show — `,_jsx(_components.code,{children:`quote-config`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /api/v1/auto-logistics/client/webhooks/lead/\u003capi-key>/quote-config`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pickupTimeframes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"asap\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"As soon as possible\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"isDefault\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"within_1_week\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Within 1 week\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"isDefault\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"within_2_weeks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Within 2 weeks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"isDefault\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"beyond_2_weeks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"More than 2 weeks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"isDefault\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pickupWindow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"earliestDate\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-09-16\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"defaultWindowDays\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timezone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"America/New_York\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Each key is `,_jsx(_components.code,{children:`null`}),` when the account does not ask that question, so the rendering rule is simple:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`pickupTimeframes`}),` is a list`]}),` → show a dropdown built from it, verbatim. Pre-select the option\nwith `,_jsx(_components.code,{children:`isDefault: true`}),`. Do not add, rename or reorder options — the values are what pricing keys\noff, and the labels are what the account configured.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`pickupWindow`}),` is an object`]}),` → you may show two date fields. Set the picker’s minimum to\n`,_jsx(_components.code,{children:`earliestDate`}),` (today on the account’s own calendar, which may not be today where the visitor is).\nIf you only ask for one date, send it as `,_jsx(_components.code,{children:`pickup_window_start`}),` and BeRocker adds\n`,_jsx(_components.code,{children:`defaultWindowDays`}),` to make the window.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Both are `,_jsx(_components.code,{children:`null`}),`, or the request fails`]}),` (including a `,_jsx(_components.code,{children:`404`}),` on an edition without the feature)\n→ show the single pickup date field (`,_jsx(_components.code,{children:`ship_date`}),`).`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The switches behind these are `,_jsx(_components.strong,{children:`Settings → Feature Flags → Pickup windows`}),` and `,_jsx(_components.strong,{children:`Timeframe\npricing`}),` (which needs Pickup windows on). They are account-wide, so every form and lead source of\none account gets the same answer.`]}),`\n`,_jsx(Frame,{caption:`Feature Flags and Pickup SOP live under Finance on the Settings page.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=93ada0c03f8681b340f336ccbd0988e2`,alt:`The Settings page with the Finance group showing Pricing, Feature Flags and Pickup SOP`,\"data-og-width\":`3200`,width:`3200`,\"data-og-height\":`2000`,height:`2000`,\"data-path\":`images/pickup-windows/settings-hub.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=280\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=cd8a78353919982e075ad8cd5d3a4954 280w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=560\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=894c94bf5c035b5cd7b0385600d15235 560w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=840\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=7d9cc343d0f4c44475547016fbf9f8c1 840w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=e924585ef922cf9fa7d7cf5df205fec9 1100w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=9e95760f11c6f4fc78e2cd8626fff686 1650w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/settings-hub.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=5546692f02de0769ca082be964c92c7e 2500w`})}),`\n`,_jsx(Frame,{caption:`Both switches on. Timeframe pricing is greyed out until Pickup windows is on.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=b8dfa0e0351c7d3ee53162e97c5eb1e2`,alt:`The Feature Flags page with Pickup windows and Timeframe pricing switched on`,\"data-og-width\":`3200`,width:`3200`,\"data-og-height\":`2000`,height:`2000`,\"data-path\":`images/pickup-windows/feature-flags.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=280\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=55a47c20044cf78239f50e1478a67bc5 280w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=560\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=c727f485efa68cf01386725cd1597853 560w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=840\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=cdb1e357d7b7e7c13741dc7621591180 840w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=120e4bf73c8f94479a399297a4577eb9 1100w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=72222d0257f5bbcdf2c29b745bb7538c 1650w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/feature-flags.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=56167ab01791837651b1da2e1fc871bd 2500w`})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Render the single date field by default and only swap it out after `,_jsx(_components.code,{children:`quote-config`}),` answers. A\nform that waits for this call before rendering anything is blank while the request is slow.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsxs(Heading,{level:`2`,id:`3-send-the-lead-—-save`,children:[`3. Send the lead — `,_jsx(_components.code,{children:`save`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`POST`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /api/v1/auto-logistics/client/webhooks/lead/\u003capi-key>/save`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Content-Type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` application/json`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`required`,children:`Required`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`first_name`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Must not be empty.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`phone`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Any common US format; normalised on arrival.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vehicles`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`At least one vehicle (fields below).`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`customer-and-route`,children:`Customer and route`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`last_name`}),`, `,_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`additional_phone`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`origin_postal_code`}),`, `,_jsx(_components.code,{children:`destination_postal_code`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`A ZIP on each end is enough — city and state are filled in from it.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`origin_city`}),`, `,_jsx(_components.code,{children:`origin_state`}),`, `,_jsx(_components.code,{children:`destination_city`}),`, `,_jsx(_components.code,{children:`destination_state`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Optional when you send ZIPs.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`origin_address`}),`, `,_jsx(_components.code,{children:`destination_address`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Full street address if you have it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`transport_type`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`open`}),` (default) or `,_jsx(_components.code,{children:`enclosed`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`comment_from_shipper`}),`, `,_jsx(_components.code,{children:`customer_comments`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Free text from the customer.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`secondary_id`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Your own reference — shown as `,_jsx(_components.strong,{children:`Secondary ID`}),` in the CRM.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`each-vehicle`,children:`Each vehicle`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vehicle_model_year`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`vehicle_make`}),`, `,_jsx(_components.code,{children:`vehicle_model`})]}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vehicle_type`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Car`}),`, `,_jsx(_components.code,{children:`SUV`}),`, `,_jsx(_components.code,{children:`Van`}),`, `,_jsx(_components.code,{children:`Pickup`}),`, `,_jsx(_components.code,{children:`Motorcycle`}),`, `,_jsx(_components.code,{children:`ATV`}),`, `,_jsx(_components.code,{children:`Boat`}),`, `,_jsx(_components.code,{children:`RV`}),`, `,_jsx(_components.code,{children:`Travel Trailer`}),`, `,_jsx(_components.code,{children:`Other`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vehicle_inop`})}),_jsx(_components.td,{children:`boolean`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` if the vehicle does not run.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`is_custom`})}),_jsx(_components.td,{children:`boolean`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` for a free-text vehicle that is not in the catalogue. Such leads skip the automatic quote and go to an agent for manual pricing.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`pickup-—-pick-one-of-the-three`,children:`Pickup — pick one of the three`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Question`}),_jsx(_components.th,{children:`Field(s)`}),_jsx(_components.th,{children:`Needs`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`A single date`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`ship_date`})}),_jsx(_components.td,{children:`nothing`}),_jsx(_components.td,{children:`Always accepted.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`A pickup window`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pickup_window_start`}),`, `,_jsx(_components.code,{children:`pickup_window_end`})]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Pickup windows`}),` on`]}),_jsxs(_components.td,{children:[`First available day and last promised day, `,_jsx(_components.code,{children:`YYYY-MM-DD`}),`. Also accepted as `,_jsx(_components.code,{children:`pickupWindowStart`}),` / `,_jsx(_components.code,{children:`pickupWindowEnd`}),`. Leave the end out and BeRocker fills in the account’s default window length. The same date twice is a one-day pickup.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`A timeframe`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`pickup_timeframe`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Timeframe pricing`}),` on`]}),_jsxs(_components.td,{children:[`One of `,_jsx(_components.code,{children:`asap`}),`, `,_jsx(_components.code,{children:`within_1_week`}),`, `,_jsx(_components.code,{children:`within_2_weeks`}),`, `,_jsx(_components.code,{children:`beyond_2_weeks`}),`. The option’s label (“Within 1 week”) is accepted too, in any case, with spaces or hyphens.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`A field whose switch is off is `,_jsx(_components.strong,{children:`ignored, never rejected`}),`, so one form works for every account.`]}),`\n`,_jsxs(_components.p,{children:[`When a window is recorded it becomes the lead’s pickup window — the same thing a rep enters on\n`,_jsx(_components.strong,{children:`Add Shipment`}),` or the customer picks on the booking page — it is logged on the lead as set by the\ncustomer, and `,_jsx(_components.code,{children:`ship_date`}),` is set to the window’s first day. A timeframe is recorded as what the\ncustomer chose, and the deposit is quoted from that timeframe’s own schedule in\n`,_jsx(_components.a,{href:`/settings/pricing`,children:`Pricing`}),` — sooner costs more, the carrier’s pay is the same either way.`]}),`\n`,_jsx(Heading,{level:`3`,id:`window-rules`,children:`Window rules`}),`\n`,_jsxs(_components.p,{children:[`A window is checked `,_jsx(_components.strong,{children:`before`}),` the lead is created, so a broken date picker cannot fill your CRM:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Rule`}),_jsx(_components.th,{children:`Error field`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Both dates today or later on the account’s calendar`}),_jsx(_components.td,{children:`the offending date`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`End on or after the start`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`pickup_window_end`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`An end needs a start`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`pickup_window_start`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A value that is not a date`}),_jsx(_components.td,{children:`the offending date`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Any breach answers `,_jsx(_components.code,{children:`422`}),` with `,_jsx(_components.code,{children:`errors`}),` naming the field and a message you can show under it, and\n`,_jsx(_components.strong,{children:`no lead is saved`}),`. A timeframe that names none of the four options is refused the same way.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If your form shows the timeframe dropdown, treat the selection as required and refuse to submit\nwithout one. Never fall back to “as soon as possible” silently — it is the highest deposit, and a\ncustomer who did not choose it should not be quoted it.`})}),`\n`,_jsx(Heading,{level:`3`,id:`examples`,children:`Examples`}),`\n`,_jsx(_components.p,{children:`With a pickup window:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,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:`17`,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:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://app.berocker.com/api/v1/auto-logistics/client/webhooks/lead/\u003capi-key>/save\"`}),_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:` -H`}),_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:` -d`}),_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:` \"first_name\": \"Dana\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"last_name\": \"Reyes\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"email\": \"dana@example.com\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"phone\": \"3055550101\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"origin_postal_code\": \"33101\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"destination_postal_code\": \"75201\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"transport_type\": \"open\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"pickup_window_start\": \"2026-09-23\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"pickup_window_end\": \"2026-09-25\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"secondary_id\": \"WEB-10482\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"vehicles\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"vehicle_model_year\": 2021, \"vehicle_make\": \"Honda\", \"vehicle_model\": \"Civic\", \"vehicle_type\": \"Car\", \"vehicle_inop\": false }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_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:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`With a timeframe: send `,_jsx(_components.code,{children:`\"pickup_timeframe\": \"within_1_week\"`}),` instead of the two window fields.\nWith a single date: send `,_jsx(_components.code,{children:`\"ship_date\": \"2026-09-23\"`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`4-what-comes-back-—-including-the-booking-link`,children:`4. What comes back — including the booking link`}),`\n`,_jsxs(_components.p,{children:[`A successful save answers `,_jsx(_components.code,{children:`200`}),` with the lead as created:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`48213`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"bookingLink\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://app.berocker.com/booking/…\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deposit\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pickupTimeframe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pickupWindowStart\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-09-23\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pickupWindowEnd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-09-25\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"leadProvider\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Main Website\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"firstName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Dana\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"lastName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Reyes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"phone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"3055550101\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"email\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dana@example.com\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`id`})}),_jsxs(_components.td,{children:[`The lead’s id in BeRocker. Needed for `,_jsx(_components.code,{children:`booking-status`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bookingLink`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`The customer’s booking page for this lead.`}),` Available immediately, even before a price exists.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`price`}),`, `,_jsx(_components.code,{children:`deposit`})]}),_jsxs(_components.td,{children:[`Usually `,_jsx(_components.code,{children:`null`}),` right after the save — pricing runs in the background. See the next step.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pickupTimeframe`})}),_jsxs(_components.td,{children:[`What was recorded, or `,_jsx(_components.code,{children:`null`}),` when none was sent or the account has timeframe pricing off.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pickupWindowStart`}),`, `,_jsx(_components.code,{children:`pickupWindowEnd`})]}),_jsxs(_components.td,{children:[`The recorded window as `,_jsx(_components.code,{children:`YYYY-MM-DD`}),`, or `,_jsx(_components.code,{children:`null`}),` when none was sent or the account has pickup windows off.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`leadProvider`})}),_jsx(_components.td,{children:`The name of the lead source the URL belongs to.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`null`}),` back for a pickup field you sent is how you tell it was dropped rather than saved.`]}),`\n`,_jsxs(_components.p,{children:[`A validation failure answers `,_jsx(_components.code,{children:`422`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"The last pickup date cannot be before the first available date.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"errors\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"pickup_window_end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"The last pickup date cannot be before the first available date.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } }`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`message`}),` is the first few field messages joined together; `,_jsx(_components.code,{children:`errors`}),` maps each field to its own.\nA key that does not exist, or whose lead source is Disabled, answers `,_jsx(_components.code,{children:`403`}),` with\n`,_jsx(_components.code,{children:`\"message\": \"Invalid credentials\"`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`5-wait-for-the-price-then-send-the-customer-to-the-booking-page`,children:`5. Wait for the price, then send the customer to the booking page`}),`\n`,_jsx(_components.p,{children:`The booking link works straight away, but the automatic quote is computed in the background, so a\ncustomer sent there instantly may land on a page with no price yet. To send them with a price on\nit, poll:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`http`,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:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /api/v1/auto-logistics/client/webhooks/lead/\u003capi-key>/\u003clead-id>/booking-status`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`48213`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1250`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"priceReady\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"priceFailed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"manualReview\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"autoPriceEnabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"bookingLink\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://…\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`priceReady`})}),_jsxs(_components.td,{children:[`A usable price exists. Send the customer to `,_jsx(_components.code,{children:`bookingLink`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`manualReview`})}),_jsx(_components.td,{children:`The lead has a custom vehicle; an agent prices it by hand. Stop polling and show your own “we’ll be in touch with your quote” message.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`priceFailed`})}),_jsx(_components.td,{children:`No price is coming — pricing gave up, or the account does not auto-quote. Stop polling and show a message.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`autoPriceEnabled`})}),_jsxs(_components.td,{children:[`Whether a price was ever going to be computed for this lead. `,_jsx(_components.code,{children:`false`}),` means the account does not auto-quote — skip the wait.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bookingLink`})}),_jsx(_components.td,{children:`The same link the save returned.`})]})]})]}),`\n`,_jsx(_components.p,{children:`Poll every couple of seconds for up to a minute or so, then give up gracefully — the lead is already\nin the CRM and assigned either way.`}),`\n`,_jsx(_components.p,{children:`On the booking page:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`a lead saved with a `,_jsx(_components.strong,{children:`window`}),` opens with that window already filled in;`]}),`\n`,_jsxs(_components.li,{children:[`a lead saved with a `,_jsx(_components.strong,{children:`timeframe`}),` opens on the first available date that timeframe implies\n(as soon as possible → today, or tomorrow once the account’s day has closed; within 1 week → a\nweek out, and so on — the offsets are set in `,_jsx(_components.strong,{children:`Settings → Pickup SOP`}),`), and the customer\nconfirms real dates there;`]}),`\n`,_jsxs(_components.li,{children:[`a lead saved with a `,_jsx(_components.strong,{children:`single date`}),` opens on it.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Whatever the customer confirms there — dates, signature, payment — flows into the lead exactly as\nit would for a widget lead.`}),`\n`,_jsx(Frame,{caption:`Settings → Pickup SOP → Timeframes \u0026 Expedite: the seed days behind each timeframe.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=0feef9c777f89364baab6e3f39f7d6ce`,alt:`The Timeframes and Expedite tab of Pickup SOP, with the seed days for each of the four timeframes`,\"data-og-width\":`3200`,width:`3200`,\"data-og-height\":`2000`,height:`2000`,\"data-path\":`images/pickup-windows/pickup-sop-timeframes.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=280\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=92800dff2c62db5e9c53962d0374967b 280w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=560\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=807cf613a65201b357dd5c57006df7aa 560w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=840\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=e2c0217b1325b4922f09781c9c68ad08 840w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=fb81177de59f93ae01268b7a0b5e2b16 1100w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=c3a2643d98b49ede5a350049778f0f79 1650w, https://mintcdn.com/berocker/6vbTSL5n4FiuXlNO/images/pickup-windows/pickup-sop-timeframes.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6vbTSL5n4FiuXlNO\u0026q=85\u0026s=a8f37b8cb6d018e3288acaa4c4701db8 2500w`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`checklist`,children:`Checklist`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Copy your Lead save URL`,children:_jsx(_components.p,{children:`Settings → Lead Management → Lead sources → URLs. One source per form or page if you want them\ntracked separately.`})}),_jsx(Step,{title:`Turn on the pickup question you want`,children:_jsxs(_components.p,{children:[`Settings → Feature Flags: `,_jsx(_components.strong,{children:`Pickup windows`}),` for the two-date question, plus `,_jsx(_components.strong,{children:`Timeframe\npricing`}),` for the how-soon question. Then check the per-timeframe deposit schedules in\n`,_jsx(_components.a,{href:`/settings/pricing`,children:`Pricing`}),`.`]})}),_jsx(Step,{title:`Call quote-config on load`,children:_jsx(_components.p,{children:`Render the timeframe dropdown, the window fields, or the single date — from the answer, never\nfrom an assumption.`})}),_jsx(Step,{title:`Post to /save, keep bookingLink`,children:_jsxs(_components.p,{children:[`Handle a `,_jsx(_components.code,{children:`422`}),` by showing the field message and keeping the visitor’s input.`]})}),_jsx(Step,{title:`Poll booking-status, then hand off`,children:_jsxs(_components.p,{children:[`Send the customer to `,_jsx(_components.code,{children:`bookingLink`}),` once `,_jsx(_components.code,{children:`priceReady`}),` is true.`]})}),_jsx(Step,{title:`Send one test lead`,children:_jsxs(_components.p,{children:[`Use your own name and number, watch it land in `,_jsx(_components.a,{href:`/using/inbox`,children:`Inbox`}),`, and open the lead to see\nthe window on it and the history entry saying the customer set it.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Symptom`}),_jsx(_components.th,{children:`Check`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`404`}),` on save`]}),_jsxs(_components.td,{children:[`The URL, including the key and the trailing `,_jsx(_components.code,{children:`/save`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`404`}),` on `,_jsx(_components.code,{children:`quote-config`})]}),_jsx(_components.td,{children:`Your edition does not have the feature. Show the single date field.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Both `,_jsx(_components.code,{children:`quote-config`}),` keys are `,_jsx(_components.code,{children:`null`})]}),_jsxs(_components.td,{children:[`The switches are off in `,_jsx(_components.strong,{children:`Settings → Feature Flags`}),`. Show the single date field.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Window or timeframe `,_jsx(_components.code,{children:`null`}),` in the response`]}),_jsx(_components.td,{children:`The matching switch is off; the field was ignored on purpose.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`422`}),` naming `,_jsx(_components.code,{children:`pickup_window_start`}),` or `,_jsx(_components.code,{children:`pickup_window_end`})]}),_jsx(_components.td,{children:`Dates in the past, out of order, an end without a start, or not a date.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`422`}),` naming `,_jsx(_components.code,{children:`pickup_timeframe`})]}),_jsxs(_components.td,{children:[`The value names none of the four options. Use the `,_jsx(_components.code,{children:`value`}),` from `,_jsx(_components.code,{children:`quote-config`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Lead arrives but is not assigned`}),_jsx(_components.td,{children:`Distribution quotas are 0, or you are outside shift hours with no fallback.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Nothing arrived at all`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Settings → Lead Management → Logs`}),` records the raw payload.`]})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Lead source API`,icon:`code`,href:`/integrations/lead-source-api`,children:_jsx(_components.p,{children:`Every optional field the save endpoint accepts.`})}),_jsx(Card,{title:`Lead sources`,icon:`filter`,href:`/settings/lead-sources`,children:_jsx(_components.p,{children:`Create the source and get the URL.`})}),_jsx(Card,{title:`Pricing`,icon:`tags`,href:`/settings/pricing`,children:_jsx(_components.p,{children:`Deposit schedules, including the per-timeframe ones.`})}),_jsx(Card,{title:`Booking page`,icon:`browser`,href:`/settings/booking-page`,children:_jsx(_components.p,{children:`Where the customer confirms dates, signs and pays.`})})]})]})}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":"Lead Source API with pickup windows","description":"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer's booking link back.","href":"/integrations/pickup-windows-api"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Your endpoint URLs","slug":"1-your-endpoint-urls","depth":2,"children":[]},{"title":"2. Ask what to show — quote-config","slug":"2-ask-what-to-show-—-quote-config","depth":2,"children":[]},{"title":"3. Send the lead — save","slug":"3-send-the-lead-—-save","depth":2,"children":[{"title":"Required","slug":"required","depth":3,"children":[]},{"title":"Customer and route","slug":"customer-and-route","depth":3,"children":[]},{"title":"Each vehicle","slug":"each-vehicle","depth":3,"children":[]},{"title":"Pickup — pick one of the three","slug":"pickup-—-pick-one-of-the-three","depth":3,"children":[]},{"title":"Window rules","slug":"window-rules","depth":3,"children":[]},{"title":"Examples","slug":"examples","depth":3,"children":[]}]},{"title":"4. What comes back — including the booking link","slug":"4-what-comes-back-—-including-the-booking-link","depth":2,"children":[]},{"title":"5. Wait for the price, then send the customer to the booking page","slug":"5-wait-for-the-price-then-send-the-customer-to-the-booking-page","depth":2,"children":[]},{"title":"Checklist","slug":"checklist","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"berocker","siteName":"BeRocker Knowledge Base","title":"Lead Source API with pickup windows - BeRocker Knowledge Base","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T23:39:21.680Z","originalFileLocation":"integrations/pickup-windows-api.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=\"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer\u0026#x27;s booking link back.\">\u003cmeta data-mint-head name=\"application-name\" content=\"BeRocker Knowledge Base\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_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/berocker/SUNdX93bvlP2YbDj/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Lead Source API with pickup windows - BeRocker Knowledge Base\">\u003cmeta data-mint-head property=\"og:description\" content=\"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer\u0026#x27;s booking link back.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"BeRocker Knowledge Base\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.berocker.com/integrations/pickup-windows-api\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://berocker.mintlify.site/_mintlify/api/og/v2?division=Leads+and+AI\u0026amp;title=Lead+Source+API+with+pickup+windows\u0026amp;description=The+complete+guide+for+a+quote+form+of+your+own+on+editions+with+the+Pickup+windows+feature+%E2%80%94+what+to+send%2C+the+optional+pickup+window+or+timeframe%2C+and+how+to+\u0026amp;theme=7c247f7c29d7e4fd558f39a6\u0026amp;signature=d9886a1c54c0221dc5610c9ae0c7daa010a1c0f4a8490709424eb0ca419f555a\">\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=\"Lead Source API with pickup windows - BeRocker Knowledge Base\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer\u0026#x27;s booking link back.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://berocker.mintlify.site/_mintlify/api/og/v2?division=Leads+and+AI\u0026amp;title=Lead+Source+API+with+pickup+windows\u0026amp;description=The+complete+guide+for+a+quote+form+of+your+own+on+editions+with+the+Pickup+windows+feature+%E2%80%94+what+to+send%2C+the+optional+pickup+window+or+timeframe%2C+and+how+to+\u0026amp;theme=7c247f7c29d7e4fd558f39a6\u0026amp;signature=d9886a1c54c0221dc5610c9ae0c7daa010a1c0f4a8490709424eb0ca419f555a\">\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/berocker/SUNdX93bvlP2YbDj/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"BeRocker Knowledge Base\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2B73FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.berocker.com/integrations/pickup-windows-api\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/pickup-windows-api.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.berocker.com/#organization\",\"name\":\"BeRocker Knowledge Base\",\"url\":\"https://help.berocker.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/berocker/uK6pXKV8zeW5rkWk/logo/light_1.svg?fit=max\u0026auto=format\u0026n=uK6pXKV8zeW5rkWk\u0026q=85\u0026s=5be2feb3ffa0f2665aec34f15d1a4a84\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.berocker.com#website\",\"name\":\"BeRocker Knowledge Base\",\"url\":\"https://help.berocker.com\",\"publisher\":{\"@id\":\"https://help.berocker.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.berocker.com/integrations/pickup-windows-api#webpage\",\"url\":\"https://help.berocker.com/integrations/pickup-windows-api\",\"name\":\"Lead Source API with pickup windows\",\"description\":\"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer's booking link back.\",\"dateModified\":\"2026-10-07T23:39:21.680Z\",\"isPartOf\":{\"@id\":\"https://help.berocker.com#website\"},\"breadcrumb\":{\"@id\":\"https://help.berocker.com/integrations/pickup-windows-api#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.berocker.com/integrations/pickup-windows-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Leads and AI\",\"item\":\"https://help.berocker.com/integrations/lead-source-api\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lead Source API with pickup windows\",\"item\":\"https://help.berocker.com/integrations/pickup-windows-api\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://help.berocker.com/integrations/pickup-windows-api#article\",\"headline\":\"Lead Source API with pickup windows\",\"name\":\"Lead Source API with pickup windows\",\"description\":\"The complete guide for a quote form of your own on editions with the Pickup windows feature — what to send, the optional pickup window or timeframe, and how to get the customer's booking link back.\",\"url\":\"https://help.berocker.com/integrations/pickup-windows-api\",\"mainEntityOfPage\":{\"@id\":\"https://help.berocker.com/integrations/pickup-windows-api#webpage\"},\"dateModified\":\"2026-10-07T23:39:21.680Z\",\"publisher\":{\"@id\":\"https://help.berocker.com/#organization\"},\"isPartOf\":{\"@id\":\"https://help.berocker.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BeRocker Knowledge Base\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"BeRocker Knowledge Base","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Using BeRocker","pages":[{"title":"Using BeRocker","href":"/using/inbox"}]},{"tab":"Settings","pages":[{"title":"Settings","href":"/settings/profile"}]},{"tab":"Integrations","groups":[{"group":"Phone, SMS and WhatsApp","pages":[{"title":"Twilio","href":"/integrations/phone/how-to-configure-twilio"},{"title":"RingCentral","href":"/integrations/phone/add-ring-central-phone-numbers"},{"title":"Telnyx — connect it to BeRocker","href":"/integrations/phone/telnyx/telnyx-setup"},{"title":"Telnyx - Account Setup \u0026 Team Management","href":"/integrations/phone/telnyx/telnyx-account-verification"},{"title":"Telnyx — 10DLC registration","href":"/integrations/phone/telnyx/telnyx-10dlc-setup"},{"title":"Vonage","href":"/integrations/phone/vonage-add-user"},{"title":"Zoom Phone","href":"/integrations/phone/zoom-phone"}]},{"group":"Email","pages":[{"title":"SendGrid — account and domain setup","href":"/integrations/email/sendgrid/sendgrid-setup"},{"title":"SendGrid — connect it to BeRocker","href":"/integrations/email/sendgrid/configure-sendgrid-key"},{"title":"Email deliverability","href":"/integrations/email/sendgrid/email-deliveribility"},{"title":"Mailgun","href":"/integrations/email/mailgun/how-to-configure-mailgun-in-berocker-settings"},{"title":"Gmail","href":"/integrations/email/gmail"}]},{"group":"Load boards","pages":[{"title":"Central Dispatch","href":"/integrations/loadboards/centraldispatch"},{"title":"Super Dispatch","href":"/integrations/loadboards/superdispatch"},{"title":"LongMile carrier verification","href":"/integrations/loadboards/longmile"}]},{"group":"Payments","pages":[{"title":"Stripe","href":"/integrations/payment/stripe"},{"title":"Square","href":"/integrations/payment/square"},{"title":"Authorize.Net","href":"/integrations/payment/authorize-net"},{"title":"RevitPay","href":"/integrations/payment/revitpay"},{"title":"Zelle and manual payments","href":"/integrations/payment/zelle"}]},{"group":"Accounting","pages":[{"title":"QuickBooks Integration","href":"/integrations/accounting/quickbooks"}]},{"group":"Leads and AI","pages":[{"title":"Lead source API","href":"/integrations/lead-source-api"},{"title":"Build your own quote form","href":"/integrations/custom-quote-form"},{"title":"Vehicle database API","description":"Power the year, make and model pickers of your own quote form with the same vehicle catalogue the BeRocker widget uses — read-only, one API key, three requests.","href":"/integrations/vehicle-database-api"},{"title":"Lead Source API with pickup windows","href":"/integrations/pickup-windows-api"},{"title":"Connecting BeRocker to Claude (MCP)","description":"Ask Claude plain-English questions about your own CRM data — leads, analytics, pricing and load board posts.","href":"/integrations/mcp/mcp-connection"}]}]},{"tab":"Support","pages":[{"title":"Support","href":"/support/contact"}]}]},"basePath":"","title":"Lead Source API with pickup windows - BeRocker Knowledge Base","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["07c022d89b","a74be98ba7","a9bb46feb3"],"chunks":["Frame-5Xwp92K7.js","DynamicMarkdown-BoyYAA8K.js","zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}