Support

Something need a human?

Support is by email. Oneop does not publish a response time — there is no SLA instrument behind one — so the fastest thing you can do is send a complete first message.

Email support@oneop.ioOpen your workspace

Worth including

  • The email you log in with
  • The URL of the screen it happened on
  • What you expected, and what happened instead

Goes somewhere else

Salesforce integration — Contact, Account and Opportunity sync

Oneop syncs Salesforce Contacts, Accounts and Opportunities in, and pushes contact and deal changes back out as they happen. Three objects, no more.

Salesforce websiteLast updated

The Salesforce integration exists for the same reason the HubSpot one does: some teams are not leaving Salesforce, and the two systems still have to agree about who a customer is. It syncs three Salesforce objects and nothing else, which is the most useful thing this page can tell you.

What it does

Connects over OAuth 2.0. You authorise Oneop against your Salesforce org from integrations settings. The callback state is bound to your session with a CSRF token and your workspace ID, both checked in constant time and consumed on use, so a callback that did not originate from your own click is rejected. Access tokens are refreshed automatically against the stored refresh token — you do not reconnect every time a token expires.

Pulls three objects on demand. A full sync queries Salesforce over REST API v59.0 and brings back:

  • Contacts → Oneop contacts (first and last name, email, phone, title, and the parent Account’s name),
  • Accounts → Oneop companies (name, industry, website, phone, billing city and country, employee count, annual revenue),
  • Opportunities → Oneop deals (name, amount, stage, close date, probability, description).

Each query is capped at 2,000 records per run. Matching is by the Salesforce record ID stored on the Oneop record, so a re-run updates rather than duplicates.

Pushes contacts and deals back as they change. When a contact is created or updated, or a deal is created or has its stage moved, Oneop writes that record to Salesforce — creating the Contact or Opportunity if it has no Salesforce ID yet, patching it if it does, and storing the returned ID. The push happens after the response is sent, so a Salesforce outage slows nothing down and fails nothing in Oneop.

Accepts inbound change events. A webhook endpoint takes Salesforce change notifications, identifies your workspace by the organisation ID in the payload, and verifies an HMAC-SHA256 signature against a per-connection secret generated at connect time. Unsigned, mis-signed, or unrecognised-org events are rejected — and if the secret is missing the endpoint refuses the event rather than trusting it. Verified Contact, Account and Opportunity events update the matching record.

Resolves conflicts explicitly. When both sides changed, the later modification wins — except inside a 30-second window, where Oneop’s version is kept, so a record Oneop just pushed is not immediately overwritten by the echo of its own write. Every sync decision, in both directions, is written to a sync log with the direction, object, both IDs, and whether it succeeded, was skipped as a conflict, or errored.

Answers from Salesforce inside a chat. Chatbot flows can search Salesforce contacts and query opportunities live during a conversation.

What syncs, in which direction

  • Salesforce → Oneop: Contacts, Accounts, Opportunities.
  • Oneop → Salesforce: Contacts and Opportunities, pushed automatically on create and update. Accounts are pull-only.
  • Not synced, in either direction: Salesforce Leads, Cases, Tasks and Events, Campaigns, Products and Price Books, Quotes, custom objects, attachments and files, Chatter, and reports. The scope is three standard objects and the fields listed above.

Setup

Connect per workspace from integrations settings and authorise against your Salesforce org. Tokens and the webhook secret are stored per workspace and never returned by the API. One Salesforce org per Oneop workspace. Run a full sync from the same screen; point Salesforce’s change notifications at Oneop’s webhook endpoint using the secret generated at connect time.

What it does not do

  • There is no sync scheduler. The full pull runs when you trigger it, not on a cadence. Continuous inbound depends on you configuring Salesforce’s change events; without them, inbound is manual.
  • Company pushes are not wired to a route. The Oneop → Salesforce Account write exists in the sync engine but no part of the product calls it today, so company edits made in Oneop do not reach Salesforce until you re-sync from the Salesforce side. Contacts and deals do push; companies do not.
  • Field mappings are not yet applied. The integration stores a per-workspace field-mapping configuration, but the sync engine uses the fixed field list above and does not read it. Treat the field set as fixed, and do not plan a rollout around custom field mapping.
  • Only the first 2,000 records per object, per run. There is no pagination beyond that limit, so an org larger than 2,000 Contacts will not fully mirror in one pass.
  • It is not a migration tool. For a one-time move off Salesforce, Oneop’s CSV import — 22 record types, a validation report, and a 30-minute rollback window — is the better path.
  • No automated test coverage. This integration has no tests in Oneop’s suite. It is exercised by hand, and we would rather say so than imply a safety net that is not there.

Works with the CRM module, available on every plan. Teams running two CRMs at once should also read the HubSpot integration, which covers the same three-object ground in the same way.

← All integrations

Start on the free plan and see the real thing

No credit card. Free plan, 2 seats.

Sign-up opens when the app launches. We will email you once — no marketing list.