Skip to main content
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.

1. Your endpoint URLs

1

Create a lead source for the form

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.
The Add new source dialog in Settings → Lead Management
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.
Copying the Lead save URL from the URLs column of the Lead sources table
The URL looks like:
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.
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.

2. Ask what to show — quote-config

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.
The Settings page with the Finance group showing Pricing, Feature Flags and Pickup SOP

Feature Flags and Pickup SOP live under Finance on the Settings page.

The Feature Flags page with Pickup windows and Timeframe pricing switched on

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.

3. Send the lead — save

Required

Customer and route

Each vehicle

Pickup — pick one of the three

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.

Window rules

A window is checked before the lead is created, so a broken date picker cannot fill your CRM: 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.

Examples

With a pickup window:
With a timeframe: send "pickup_timeframe": "within_1_week" instead of the two window fields. With a single date: send "ship_date": "2026-09-23".
A successful save answers 200 with the lead as created:
null back for a pickup field you sent is how you tell it was dropped rather than saved. A validation failure answers 422:

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:
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.
The Timeframes and Expedite tab of Pickup SOP, with the seed days for each of the four timeframes

Settings → Pickup SOP → Timeframes & Expedite: the seed days behind each timeframe.


Checklist

1

Copy your Lead save URL

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.

Troubleshooting


Lead source API

Every optional field the save endpoint accepts.

Lead sources

Create the source and get the URL.

Pricing

Deposit schedules, including the per-timeframe ones.

Booking page

Where the customer confirms dates, signs and pays.