A Harvest retainer report your client can bookmark.

Harvest exports your Detailed Time CSV in two clicks. HourTab turns it into a public URL your retainer client opens any time — no login, no portal, no per-user seat. “How many hours do I have left this month?” answered before they ask.

Free forever for your first retainer · no credit card · CSV in, URL out.

What your client sees

acme.hourtab.com/october
Acme Co. · October retainer
12 of 20 hours used
8 hours remain · resets Nov 1
  • Oct 3 API sync debug 3h
  • Oct 7 Onboarding call 1h
  • Oct 12 Landing copy revisions 2h
  • Oct 18 DB migration review 4h
  • Oct 22 Weekly status 2h

One URL per retainer. Bookmarked once, always current. The item rows are pulled straight from your Harvest Notes + Hours columns.

Why HourTab instead of a Harvest invoice or shared report

The flow, start to finish

  1. 1. Export from Harvest

    Reports → Time → filter by the retainer client → Export → CSV. Two clicks. (Same flow Harvest users already use for client invoicing.)

  2. 2. Paste into HourTab

    Drag the CSV into your HourTab retainer, or paste its contents. We auto-map Harvest’s columns (Date, Notes, Hours) — no manual field picking.

  3. 3. Send the URL once

    One message to the client: “Here’s your always-current retainer page — bookmark it.” They do. They stop asking. You stop writing mid-month status emails.

Harvest + HourTab FAQ

Is there a native Harvest integration (OAuth)?

Not at v1. CSV is faster to first-value — no OAuth scopes to approve, no IT review at your client’s end, and Harvest’s CSV schema has been stable for years. Native Harvest OAuth is on the roadmap once we have paying Harvest users; reply to the early-access email and we’ll ping you when it ships.

What columns do you need from Harvest’s CSV?

Three: Date, Notes, Hours. Everything else Harvest exports (Client, Project, Task, First Name, Billable?, etc.) is ignored. If you filter your Harvest report by the retainer client before exporting, every row in the CSV belongs to one retainer — no server-side matching needed.

How does the client see updates?

Re-export the CSV in Harvest, paste the new version into HourTab, done. The public URL updates instantly. Most users do this once a week during their Friday admin block.

What if I bill weekly through Harvest invoices?

Keep doing that. HourTab is the in-cycle visibility layer; Harvest stays the invoicing layer. Your client gets the running number on the URL and the invoice in their inbox — same data, two purposes.

Does this work for fixed-fee projects, not just hourly retainers?

Sort of. If you’re tracking hours against a fixed-fee Harvest project (“this project is scoped at 40 hours”), HourTab works exactly the same way — set the cap, import the CSV, share the URL. The difference is just whether the cap resets monthly or when the project ends.

Your Harvest data. A URL your client actually opens.

One email when we launch. That’s the only one you get.