Practice suite

Calendar Sync

FPPC deadlines, session dates, tracked-bill hearings, and fundraisers β€” pushed into your real calendar, with travel time blocked. Two-way when it counts, read-only where your life lives.

Step 1 Β· Connections

Where should events land?

Honest status: manual-export mode is live β€” direct sync is pending

Direct Google/Outlook sync needs OAuth app verification, which is on Johnny's go-live task list. Until then, this page works in manual-export mode: it builds a .ics file you import into Google Calendar, Outlook, or Apple Calendar in one click. SiLobbyist never stores OAuth tokens in localStorage β€” when the connection goes live, refresh tokens will live server-side only, never in your browser.

πŸ“… Google Calendar

Not connected

OAuth via the Google Calendar API. Requires app verification β€” pending.

πŸ“§ Outlook / Exchange

Not connected

OAuth via Microsoft Graph. Requires app registration β€” pending.

πŸ“₯ Manual export

Working now

Import into Google, Outlook, or Apple Calendar. Same events, same travel blocks.

Step 2 Β· Event sources

What syncs

Toggle each source. SiLobbyist only pushes what you enable β€” nothing is read back into the site.

Step 3 Β· Travel time

Block the drive, not just the meeting

Events with a location get travel blocks before and after. Cap-to-Cal-Access runs on Capitol time β€” your calendar should know that.

All-day events (filing deadlines) don't get travel blocks β€” there's no driving to a deadline. In manual-export mode the blocks are separate .ics entries; with direct sync they'll be native calendar blocks.

Conflict rules

Who wins when both sides change

Event typeWinner on conflictWhy
FPPC filing deadlinesSiLobbyist winsDates are authoritative under the Political Reform Act β€” your calendar is a reminder, not the source of truth.
Session deadlines, hearings, floor sessionsSiLobbyist winsSame principle: the official calendar outranks a manually edited copy. Sync refreshes them from the source.
Fundraisers (from your CRM)Your calendar winsSiLobbyist never overwrites an event you edited or moved β€” it only re-syncs fundraiser entries you changed inside the CRM.
Your personal eventsYour calendar winsSync never touches events it didn't create. It can't β€” it only writes events tagged silobbyist-*.

Duplicate-proofing: every synced event carries a stable ID (silobbyist-{source}-{key}), so re-syncs update instead of duplicating. Delete a SiLobbyist event in your calendar and the next sync recreates it β€” that's "SiLobbyist wins" for deadline events, by design.

Upcoming events

What would sync next

Loading…

Ask Goldie about a deadline β†’

Sync log

What changed, when

Deadline dates are pulled from curated site data (data/compliance.json, data/legislative-calendar.json) β€” verify any filing against fppc.ca.gov and the house Daily Files before you rely on it. SiLobbyist never transmits your data anywhere; manual export hands you a file, nothing uploads. Tokens, when OAuth goes live, are server-side only β€” never localStorage.