The schedule, in your calendar
Every visit on the plan can appear beside your own days in Apple Calendar, Google Calendar or Outlook. Sign in and copy the address below, paste it in once, and the calendar keeps itself current — a service day that moves next month moves in your calendar too, with nothing to re-import.
It is a read-only view. Dragging an event in your own calendar moves your copy and nothing else. Visits nobody has agreed to yet arrive marked tentative, so a proposal never lands in your week looking like a commitment.
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//VendoRFP//Service schedule feed//EN CALSCALE:GREGORIAN X-WR-CALNAME:Willow Creek — service schedule REFRESH-INTERVAL;VALUE=DURATION:PT12H X-PUBLISHED-TTL:PT12H BEGIN:VEVENT UID:schedule-8f2c-2026-09-07@vendorfp.com DTSTAMP:20260907T060000Z DTSTART;VALUE=DATE:20260907 DTEND;VALUE=DATE:20260908 SUMMARY:Pool Cleaning DESCRIPTION:Vendor: Blue Water Pools\nWindow: 7:00 – 11:00 AM STATUS:CONFIRMED TRANSP:TRANSPARENT END:VEVENT END:VCALENDAR
A service under contract with no day set stays off the calendar, on purpose.
A request form on your own site
Run a service company? Two lines of HTML put a proposal request form on your own website. Somebody reading your services page asks you for a proposal without leaving it, and the request arrives in your dashboard addressed to your company alone.
<div data-vendorfp-proposal-form data-key="hoac_embed_your_key_here"><a href="https://vendorfp.com/embed/w/hoac_embed_your_key_here">Request a proposal</a></div> <script src="https://vendorfp.com/embed/v1.js" async></script>
Each website builder gets its own page below: the three steps for that builder, and the exact menu item you are looking for.
- WordPressGoes in a Custom HTML block.
- SquarespaceGoes in a Code block.
- WixGoes in a button, or Custom Code.
- WebflowGoes in a Code embed element.
- ShopifyGoes in a Custom Liquid section.
- A plain HTML siteGoes in anywhere inside the body.
- React or Next.jsGoes in a component.
- The security modelWhat the key can and cannot do, what is stored, and where the edges are. The page to forward to whoever asks.
- The form is not showing upThe one failure with no error message, its usual cause, and the two-minute fix.
One of those two lines is a <script> tag, which means it is somebody else’s code running on your website. There is a whole guide on what that code can reach, what it records and where the edges are, and it is written to be forwarded to whoever asks.
The read-only API
If you have somebody who writes software — in-house, or the firm that keeps your systems talking to each other — they can read your own records straight out of the platform. A key is issued to you, you choose which of the areas below it opens, and it opens no others.
- community:readThe record of the place itself — its name, address, and the boundary mapped for it.
- work_orders:readService visits: what was done, when, and what it cost you.
- invoices:readInvoices and their line items, with sales tax and payment processing on their own lines.
- rfps:readWork you have published, and how many proposals each has drawn.
- vendors:readThe companies working for you, and whether their insurance and licences are current.
The API reads. A person in the dashboard does everything else.
{
"data": {
"id": "a1b2c3d4-0000-0000-0000-000000000000",
"name": "Willow Creek",
"address": "4200 Willow Creek Dr, Charlotte, NC",
"lat": 35.1596,
"lng": -80.8392,
"msa_signed": true,
"boundary": null,
"created_at": "2026-01-14T00:00:00.000Z"
}
}API access is switched on per account rather than being on by default, because a key that reads your records is not a thing to hand out by accident. The ask lives in your dashboard under Settings, on the same page the keys will appear on once it is open — tell us what you want to read and somebody reads the request.
Files for your books
Pick a period, pick a format, download it. Every one of these opens in the package it names without a third-party account, a connector to authorise or a subscription in between — the file is yours and the import is the one your accounting package already has.
- Detailed CSVEvery invoice and payment for the period, one row each, with tax broken out. Opens in any spreadsheet.
- General journal CSV (double-entry)A double-entry journal — debits and credits, totalling equal. The one to hand an accountant who wants "the journal".
- QuickBooks Online CSVQuickBooks Online's own import columns.
- QuickBooks Desktop IIFThe file format QuickBooks Desktop imports directly.
- Xero CSVXero's own import columns.
Record type,Date,Due date,Document number,Billed by,PO number,Status,Service,Sales tax,Payment processing,"Amount (charged on an Invoice row, paid on a Payment row)",Stored document total,Variance,Sales tax detail,Processing method,Currency
Sales tax and payment processing are their own lines, in every one of them.