How Spiich and your CRM stay in sync
Your CRM is the source of truth. Every sync rewrites CRM fields in Spiich, Spiich-generated values survive untouched, and every write you make in Spiich is pushed to the CRM immediately or rolled back.
Spiich is not a second system of record. It reads your CRM, writes back to it, and defers to it whenever the two disagree. That one rule explains almost everything about how records behave here.
Your CRM is the source of truth
A Spiich workspace connects to exactly one CRM, and that connection belongs to the workspace rather than to the person who set it up. Every member reads and writes through it.
Attio, HubSpot and Pipedrive you connect yourself over OAuth, approved once by an admin in that CRM. Salesforce is set up with the Spiich team during onboarding rather than self-serve, because it is mapped to your own objects, fields and validation rules. See Connect your CRM for the setup itself.
Every sync rewrites CRM fields
When a record syncs, the values that came from your CRM are rewritten from your CRM. Edit a deal amount in HubSpot and that new amount lands in Spiich, replacing what was there. There is no merge step and no conflict prompt, because there is no conflict to resolve: the CRM wins.
The exception is anything Spiich generated itself.
| Kind of value | Where it lives | What a sync does to it |
|---|---|---|
| A CRM field such as Stage, Amount, Owner | Your CRM | Rewritten from the CRM on every sync |
| An AI Summary or prompt column answer | Spiich only | Left untouched, and never sent to your CRM |
That is the whole split. Spiich-generated values are deliberately preserved and deliberately never pushed, so your CRM never fills up with fields it did not ask for, and a sync never wipes work you paid for.
Writes are pushed immediately, or rolled back
When a record is created or edited in Spiich, by you in a table, on a record card, in My Day, or by the assistant in Chat, the change is pushed to your CRM in the same action. It is not queued for later.
If the CRM refuses the write, Spiich undoes its own change: a new record is deleted, and changed fields are restored to their previous values. You see the CRM's own message, prefixed with the CRM's name, so you can fix what it asked for and save again. A record never exists in Spiich that your CRM rejected.
Notes behave the same way. A note written in Spiich is pushed and attached to the right record. On HubSpot, a note on a call or a meeting is written onto that call or meeting itself, because HubSpot has no relationship between a note and a call.
What is real-time and what is polled
Changes made in your CRM flow back into Spiich continuously. How fast depends on the CRM and the object.
| CRM | Real-time via webhooks | Picked up on a cycle |
|---|---|---|
| Attio | Records, notes, tasks and lists | Field schema, lists and workspace members, hourly |
| Pipedrive | Deals, persons, organizations, activities, notes, users and pipelines | Field schema, hourly |
| HubSpot | Contacts, companies and deals: created, deleted, property changed | Everything else on a five-minute cycle. Field schema and synced emails, hourly |
So on HubSpot a stage change on a deal shows up within seconds, while a new task, lead or ticket can take up to five minutes. On Attio and Pipedrive far more of the object set is covered by webhooks. Once an hour, whichever CRM you are on, Spiich re-reads the field schema, which is why a field you just created in your CRM may not appear in a column picker straight away.
There is no resync button
There is no "Sync now" or "Resync" control anywhere in Spiich, and that is deliberate. Syncing is continuous, and a manual button would only duplicate work already scheduled. If something looks stale, the fix is almost never a resync; it is one of the causes in CRM sync problems.
The one manual action that does exist is Reauthenticate. When Spiich needs a CRM permission the existing connection does not hold, a banner appears at the top of Chat offering to re-run the consent screen. It refreshes access and re-syncs the affected data without re-importing your whole CRM. Only workspace admins see the banner, and only admins can start the flow.
What this does not do
- One CRM per workspace. Connecting a second is blocked, and the other CRM cards read Unavailable.
- No self-service disconnect. A connected CRM shows a greyed-out Connected button with no menu. Switching CRMs is a support request, so get in touch if you need one.
- No new CRM fields from inside Spiich. Tables and cards can only use fields your CRM already syncs, plus Spiich-generated columns and action buttons.
- No record deletion from Spiich, and no export in Tables. Deletes happen in your CRM and reach Spiich through the sync.
- Read-only CRM fields stay read-only. Spiich marks them and locks their Writable switch rather than letting a write fail later.
- The first import does not backfill forever. HubSpot calls and meetings, and Attio call recordings, are prepared for the past 28 days at connect. Older activity is not pulled in.
If something goes wrong
Saving a record fails with a CRM error and the record disappears again. The CRM rejected the write, usually a missing required field or an invalid value, and Spiich rolled its own change back so the two never drift. Read the CRM's message in the error, supply what it asks for, and save again.
A change made in HubSpot has not appeared yet. If it is a contact, company or deal it should arrive in seconds. Anything else waits for the five-minute polling cycle, and a brand new field waits for the hourly schema refresh.
Chat keeps showing a "Reconnect to your CRM" banner. Spiich needs a permission the connection does not hold. An admin clicks Reauthenticate and approves the consent screen. Members do not see the banner, so ask an admin.
Reconnecting fails with a workspace mismatch. You signed in to a different CRM workspace, portal or account than the one already connected. Sign out of the CRM, sign back in to the correct one, and try again.
An object shows a "Sync failed" badge in [`Settings > Object Types`](https://app.spiich.ai/settings/entity-types). Hover it for the reason your CRM returned. Most causes are a missing permission, fixed by reconnecting, or an object your CRM plan does not include.