Google Sheets
Connect a Google Sheet and Foan treats it as your live customer database. Inbound calls match the caller to a row by phone number; outbound campaigns dial from the rows; the agent has full row context during the call.
What it gets you
- Inbound recognition — when a customer rings in, the agent already knows their name, last order date, plan tier, anything you've put in the sheet. The greeting personalises automatically.
- Outbound source — campaigns can dial from the sheet directly. No need to upload a separate CSV.
- Outcome write-back — call results write back to the sheet (status, summary, captured fields). Your sheet stays in sync with what's happening on the phone.
- Real-time — changes to the sheet are reflected on the next call. No re-sync.
Setting it up
- Connect Google Sheets in
/dashboard/integrations. OAuth flow — you grant Foan read+write access to the sheet you pick. - Pick a sheet — Foan lists every spreadsheet you have access to. Pick the one with your contacts.
- Map columns — match Foan's expected fields (Phone, Name, Email, Customer ID) to your sheet's columns. Phone is required because that's how we match incoming calls.
- Save.
How it's used during a call
Inbound: when a call comes in, Foan looks up the matching row by normalised phone number. The matched row is injected into the agent's prompt as a "Caller context" block:
"The caller is Anna Bowen. last_order_date: 2026-04-21. subscription: weekly bread box. next_delivery: Friday."
The agent then opens with: "Hi Anna — I see you ordered two weeks ago, are you calling about Friday's delivery?"
Outbound: the campaign sources contacts from the sheet directly. Each call has full row context. After the call, the outcome (booked / not interested / opt-out / left voicemail) writes back to a last_call_* column set on the sheet.
What if the columns change
If you rename or delete a column that Foan was mapped to, the integration shows a warning in the dashboard and the affected campaigns pause until you re-map. We don't silently break — you'll know.
Permissions and privacy
We only read the sheet you pick. Other sheets in your Drive are not accessible. Tokens are stored encrypted, refreshed automatically. Disconnect any time — we keep the call history but the integration goes inactive.