| name | sheets-crm-sync |
| description | Sync data between Google Sheets and a CRM (HubSpot/Salesforce) — push sheet rows as contacts/deals, or pull CRM records into a sheet for reporting. Use on "sync this sheet to HubSpot", "pull my pipeline into Sheets", or "build a weekly CRM report". |
| allowed-tools | ["Bash","Read","Write","AskUserQuestion"] |
Google Sheets ↔ CRM Sync
Move records between Google Sheets and HubSpot/Salesforce via Composio.
Workflow
- Pick a direction. Sheet → CRM (import) or CRM → Sheet (report)?
- Link both toolkits:
composio link googlesheets
composio link hubspot
- Read the sheet:
composio execute GOOGLESHEETS_BATCH_GET -d '{
"spreadsheet_id": "1abc...",
"ranges": ["Leads!A1:F500"]
}'
- Map columns explicitly: ask the user for sheet_col → CRM_property pairs. Never guess.
- Import or export:
- Timestamp the sync. Write
last_synced_at into a header cell so the user sees freshness.
Reporting recipes
- Weekly pipeline report: Pull all open opps → group by stage → write to
Report!A1 with columns: Stage, Count, $Amount, Avg Age.
- New signups log: Append each new HubSpot contact created in the last 24h to an "Intake" tab.
Guardrails
- For Sheet → CRM imports: dedupe on email before creating. Ask before creating > 50 records.
- Never overwrite a sheet without making a backup tab (
<tab>_backup_<date>).
- If column mapping is ambiguous, stop and ask — bad mappings silently corrupt the CRM.