It shows up in Apple Calendar, Google Calendar and Outlook for your schedule, on WordPress, Squarespace, Wix, Webflow, Shopify, A plain HTML site and React or Next.js for the request form, and in QuickBooks Online, QuickBooks Desktop and Xero for your books.
The schedule, in your calendar
Every visit on the plan can appear beside your own days in Apple Calendar, Google Calendar or Outlook. 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.
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.
See this schedule in your own calendar
Add this address to Apple Calendar, Google Calendar or Outlook and every visit on the plan appears beside your own days. It updates itself.
Masked example. Sign in for yours.
Sign in to get yoursIf you’re the company doing the work, you get the same address for the opposite side of it: every visit your business is on, across every community you’re contracted with, in one calendar — whatever mix of time zones those communities keep.
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//VendoRFP//Service schedule feed//EN CALSCALE:GREGORIAN X-WR-CALNAME:Blue Water Pools — service visits 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 — Willow Creek DESCRIPTION:Window: 7:00 – 11:00 AM STATUS:CONFIRMED END:VEVENT END:VCALENDAR
Free for the board, busy for the crew
See your own visits in your calendar
Add this address to your crew's calendar and every visit your company is on, across every community you work, shows up in one place. It updates itself.
Masked example. Sign in for yours.
Sign in to get yoursA 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="vrfp_embed_your_key_here"><a href="https://hoacrew.com/embed/w/vrfp_embed_your_key_here">Request a proposal</a></div> <script src="https://hoacrew.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 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:read | The record of the place itself — its name, address, and the boundary mapped for it. |
|---|---|
work_orders:read | Service visits: what was done, when, and what it cost you. |
invoices:read | Invoices and their line items, with sales tax as its own line. |
rfps:read | Work you have published, and how many proposals each has drawn. |
vendors:read | The companies working for you, and whether their insurance and licenses are current. |
What a key cannot do
{
"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": {
"type": "Polygon",
"coordinates": [
[
[
-80.8409,
35.1583
],
[
-80.8375,
35.1583
],
[
-80.8375,
35.1609
],
[
-80.8409,
35.1609
],
[
-80.8409,
35.1583
]
]
]
},
"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 authorize or a subscription in between — the file is yours and the import is the one your accounting package already has.
| Detailed CSV | Every 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 CSV | QuickBooks Online's own import columns. |
| QuickBooks Desktop IIF | The file format QuickBooks Desktop imports directly. |
| Xero CSV | Xero's own import columns. |
Record type,Date,Due date,Document number,Billed by,PO number,Status,Service,Sales tax,"Amount (charged on an Invoice row, paid on a Payment row)",Stored document total,Variance,Sales tax detail,Currency
Sales tax is its own line, in every one of them.
Every one of these lives in your dashboard under Settings.