CRM & Marketing Integrations
Push bookings to Salesforce as Events and HubSpot as Meetings, route by CRM owner, accept Slack `/book` commands, and track conversions in GA4 + Meta Pixel.
Workestra's scheduling already runs against the built-in CRM — every booking creates a contact, optionally a deal, and lives on the same Postgres as the rest of your sales data. This page is about pushing bookings to external CRMs and marketing tools that you may already use.
The four primary integrations covered here:
- Salesforce — booking → SFDC Event, owner mapping, owner-based routing
- HubSpot — booking → HubSpot Meeting engagement, contact + deal association
- Slack —
/wx book <user>slash command, plus inbound notifications - GA4 + Meta Pixel — conversion event firing from the public booking page
Plus secondary pages on Zapier, browser extensions, and the Outlook add-in and Gmail add-on.
Screenshot needed — /settings/integrations directory with Salesforce + HubSpot tiles available
Salesforce
What gets pushed
| Workestra event | Salesforce result |
|---|---|
| Booking confirmed | New Event record on the SFDC contact / lead — date, time, subject, description, location, attendees |
| Booking rescheduled | Existing Event is updated with the new time |
| Booking cancelled | Existing Event is deleted (or marked closed, configurable) |
| Recap pushed (from Notetaker) | Note attached to the SFDC contact / deal with the summary + action items |
Each push also writes an entry to Workestra's audit log so you can see "this booking pushed to SF at this timestamp."
Owner mapping
By default, the host on the Workestra booking link is mapped to the SFDC user with the same email. So if alice@acme.com is the booked host, the resulting SFDC Event.OwnerId is the SFDC user with that email.
For mismatched emails (e.g. host's Workestra email is alice@workestra.io but SFDC is a.smith@acme.com), set the override on /settings/integrations/salesforce → User mapping.
Owner-based routing
A routing form route can use Salesforce lookup as its action. It pulls the matched SFDC owner for an inbound contact and routes to that owner's booking link automatically.
Configure on a routing form route:
- Set the action to Salesforce lookup
- Pick the SFDC object to query (
Lead,Contact,Account,Opportunity) - Pick the field to match against the form answer (e.g. "match the form's email field against
Lead.Email") - Pick the field on the matched record to use as the routing key (e.g.
Lead.Owner.Email) - Pick the booking link to fall back to if no match is found
When a respondent submits the form, Workestra queries SFDC live, finds the owner, and routes them to that owner's link. Latency is typically 200–800ms.
What's NOT supported (yet)
- Deeper SFDC sync beyond Event records — no Lead create, no Opportunity stage update
- Custom field mapping beyond the standard Event fields
- Sandbox vs production toggle — connect to either, but separate workspaces
- AppExchange managed package — not published yet; the integration is OAuth-only
The substrate ships with this release. Live OAuth client IDs (SALESFORCE_CLIENT_ID, SALESFORCE_CLIENT_SECRET) need to be configured in workspace settings before connect works — Workestra ships with example values for staging, but production workspaces need their own SFDC connected app.
Connecting
/settings/integrations/salesforce → Connect. OAuth flow against your SFDC org. Pick the user mapping. Pick the object scope (Events alone, or Events + Notes for recaps). Save.
HubSpot
What gets pushed
| Workestra event | HubSpot result |
|---|---|
| Booking confirmed | New Meeting engagement on the HubSpot contact — type, time, attendees, notes |
| Booking rescheduled | Engagement updated in place |
| Booking cancelled | Engagement marked cancelled |
| Deal auto-created from booking | Engagement associated with that HubSpot deal too |
| Recap pushed | Note engagement on the contact with summary + action items |
Contact and deal association
HubSpot finds-or-creates the contact by email. If the workspace has CRM auto-create-deal turned on for the booking link, Workestra creates the deal in its own CRM first, then mirrors the deal into HubSpot — single source of truth on the Workestra side, copy on the HubSpot side. Edits in HubSpot don't sync back (one-way push).
Owner-based routing (HubSpot lookup)
Same pattern as Salesforce. A routing form route with action = HubSpot lookup pulls the contact's owner from HubSpot and routes to that owner's booking link.
| Field | What it does |
|---|---|
| Object | Contact or Company |
| Match field | Form field to match against (typically email for contact, domain for company) |
| Owner field | hubspot_owner_id resolved to the owner's email |
| Target booking link | The link to route to (Workestra finds the link owned by the matched HubSpot owner) |
Connecting
/settings/integrations/hubspot → Connect. OAuth, pick scopes, pick the user mapping, save. Same caveat about live OAuth client IDs.
Slack /wx book
When the workspace has Slack connected (see Slack Integration), a slash command becomes available:
/wx book @alice
/wx book alice@acme.comThis DMs the user with their booking link URL, copyable. Most useful inside an internal Slack — "I need 30 min on Alice's calendar" without leaving the keyboard.
For external Slack workspaces (Slack Connect), the command resolves Workestra users by email — useful for shared-channel scheduling.
The /wx book slash command requires the Workestra Slack app to be installed in your Slack workspace. Ask your Slack admin to install via /settings/integrations/slack. If you see "command not found," the app isn't installed yet.
GA4 + Meta Pixel
The public booking page (/book/<slug>) and the embed widget can fire conversion events to Google Analytics 4 and Meta's Pixel automatically.
Configure in /settings/integrations/analytics:
| Property | What it does |
|---|---|
| GA4 Measurement ID | G-XXXXXXXXXX. When set, page views and meeting_booked events are sent. |
| GA4 Conversion event name | Default: meeting_booked. Overrideable. |
| Meta Pixel ID | When set, Lead and Schedule events are sent. |
The events fire on the booking confirmation step — after slot pick, after form submit, after payment if required. Event payload includes booking ID, slug, attendee email (hashed for Meta), and any UTM parameters captured at booking.
For embed widgets, the parent page receives a workestra:event_scheduled CustomEvent with the same payload — wire your own GTM trigger off that. See Embed Widget for details.
Webhooks (the hidden CRM integration)
For any CRM not listed here, the outbound webhook is your friend. Every booking lifecycle event fires a webhook to a URL you configure. See Booking Links → Webhooks tab and Zapier.
Read next
- Booking Links — toggle external CRM push per link
- Routing Forms — owner-based routing in detail
- AI Notetaker & Recaps — recap push to CRM
- Slack Integration — workspace-level Slack connection
- Zapier — Workestra Scheduling Zapier app
AI Notetaker & Recaps
An AI bot joins your Zoom, Meet, or Teams call, transcribes the conversation, and produces a summary, action items, and a recap you can edit, share, or push into CRM.
Availability Bridges
PTO, FSM dispatches, focus blocks, planning allocations, and goal-review weeks all feed the slot engine automatically — Workestra knows what your team is doing.