Skip to main content

Integrations

Every external service the CRM talks to is connected through a unified integration layer. The AI can call any integration by name. Credentials never touch the AI — they live in an encrypted vault and are resolved at the edge.

Architecture

The integration layer has five tiers:

AI Agent → MCP Layer → Workers → Vault → Vendors

TierWhat It Does
AI AgentCalls high-level MCP tools by name: send_sms, post_to_facebook, charge_card, geocode_address, upload_video, send_contract. The AI never sees raw credentials or vendor-specific APIs.
MCP LayerModel Context Protocol abstraction. Each MCP tool maps to a specific vendor integration. The AI calls the tool; MCP routes the call to the correct Worker.
WorkersCloudflare edge functions. Stateless, deployed per-integration. Each Worker resolves the contractor's encrypted credentials from the Vault and makes the vendor API call. No secrets in Worker code — credentials are injected at runtime.
VaultEncrypted credential store. Holds all API keys, OAuth tokens, webhook secrets, and service accounts per contractor. Workers request credentials at call time. The AI agent never receives vault contents — only the Worker sees them.
VendorsThe actual third-party services: Twilio, Stripe, Meta, Google, Anthropic, etc. Workers call vendor APIs directly using the contractor's credentials.

Security Model

The AI never sees raw API keys, OAuth tokens, or any credential material. When the AI calls crm/charge_card, the Worker retrieves the Stripe secret key from the vault, makes the Stripe API call, and returns only the result to the AI. The AI sees { success: true, charge_id: "ch_..." } — never the key itself.

Credential Vault

Every integration requires credentials stored in the vault. Four credential types are supported:

TypeUsed ForExamples
API KeyServices that authenticate with a static keyTwilio, SendGrid, Anthropic, Google Maps
OAuth TokenServices that use delegated access (account-level)Google Calendar, Meta, YouTube, Google Business
Webhook SecretInbound events from vendors that must be verifiedStripe webhooks, Meta webhooks
Service AccountLong-lived service credentials with scoped permissionsGoogle Workspace, enterprise integrations

Credentials are encrypted at rest and decrypted only by the Worker that needs them. Contractors manage credentials from Settings → Integrations → [Integration Name] → Credentials.

Integration Catalog

Voice & Communication

IntegrationStatusWhat It Powers
Twilio🟢 ConnectedSMS send/receive, phone number provisioning, call routing, Digital Receptionist inbound call handling
ElevenLabs🟢 ConnectedVoice synthesis for Digital Receptionist — natural-sounding AI voice for outbound calls and call responses
Deepgram / Whisper🟢 ConnectedSpeech-to-text transcription — call transcripts, field video audio extraction, voice mode in AI Assistant
SendGrid / Mailgun🟢 ConnectedTransactional email delivery — estimates, invoices, follow-up sequences, email templates

AI Models

IntegrationStatusWhat It Powers
Anthropic / Claude🟢 ConnectedCore AI agent — all AI Assistant responses, email personalization, smart automation decisions, workflow routing
Google Gemini🟡 Planned / TBDMultimodal AI — potential use for photo analysis, longer context windows, or model fallback
Higgsfield🟡 Planned / TBDAI video generation — portfolio video creation from job photos and project data

Payments

IntegrationStatusWhat It Powers
Stripe🟡 Planned / TBDOnline payment processing — Pay Now button in customer portal, invoice payments, recurring billing
Square🟡 Planned / TBDIn-person payment processing — card reader for on-site payment collection at job completion

E-Signature

IntegrationStatusWhat It Powers
Dropbox Sign🟡 Planned / TBDContract e-signature — send_contract MCP tool, approval workflows, signed document storage
DocuSign🟡 Planned / TBDEnterprise e-signature alternative — same use cases as Dropbox Sign, for contractors who already use DocuSign

Social Media & Publishing

IntegrationStatusWhat It Powers
Meta (Facebook / Instagram)🟡 Planned / TBDPost completed project photos to Facebook Page and Instagram profile automatically after job close
YouTube🟡 Planned / TBDUpload portfolio/project videos to contractor's YouTube channel from the video pipeline
Google Business Profile🟡 Planned / TBDPost project updates and review requests directly to Google Business listing
TikTok⚪ Not connectedShort-form video publishing — low priority; listed for future consideration
Contractor Website🟡 Planned / TBDSync completed projects, portfolio photos, and review content to the contractor's Tradesmen Website

Advertising

IntegrationStatusWhat It Powers
Meta Ads🟡 Planned / TBDManage Facebook and Instagram ad campaigns from within the CRM — budget control, audience targeting, lead ad integration
Google Ads🟡 Planned / TBDSearch and display campaign management — keyword bidding, local service ads, conversion tracking tied to booked jobs

Mapping & Location

IntegrationStatusWhat It Powers
Google Maps🟡 Planned / TBDAddress geocoding, distance calculations, service area boundaries, route optimization for dispatch
Mapbox🟡 Planned / TBDMap rendering for the GPS tracking view, geofence boundary drawing, offline map tiles for mobile

Incentives & Rewards

IntegrationStatusWhat It Powers
Marketing Boost🟡 Planned / TBDReward incentives for reviews and referrals — send vacation certificates or gift cards to customers who refer new business
Gift Card Vendor⚪ Not connectedDirect gift card fulfillment for referral rewards — vendor not yet selected

Calendar & Scheduling

IntegrationStatusWhat It Powers
Google Calendar🟡 Planned / TBDTwo-way calendar sync — jobs booked in the CRM appear on the contractor's Google Calendar; events created in Google Calendar block CRM availability
Apple Calendar⚪ Not connectedCalDAV sync for iOS-primary contractors — not yet implemented

How the AI Uses Integrations

The AI calls integrations through MCP tools. It doesn't know which vendor is behind each tool — it calls the tool by name, and the MCP layer routes to the right Worker and vendor.

MCP ToolWhat the AI Can Do With It
crm/send_smsSend a text message to any contact. Used in follow-up workflows, appointment reminders, and direct AI Assistant actions. Routed through Twilio.
crm/send_emailSend a templated or free-form email. Used in workflows, estimate delivery, invoice reminders. Routed through SendGrid or Mailgun.
crm/charge_cardCharge a stored payment method or initiate a payment request. Routed through Stripe or Square depending on contractor config.
crm/post_to_socialPublish a post (text + image/video) to one or more connected social platforms. Routed to Meta, YouTube, or Google Business depending on target.
crm/send_contractSend a contract document for e-signature. Routed through Dropbox Sign or DocuSign. Returns signed status and document URL when complete.
crm/geocode_addressConvert a street address to GPS coordinates. Used by dispatch, geofencing, and project association intelligence. Routed through Google Maps or Mapbox.

Connecting an Integration

Every integration follows the same connection flow from Settings → Integrations → [Integration Name] → Connect.

Auth TypeStepsWhat Happens
API Key1. Copy your API key from the vendor dashboard. 2. Paste it into the API Key field. 3. Click Save & Test.The system sends a test request to verify the key is valid and has the required permissions. Green check = connected.
OAuth1. Click Connect with [Vendor]. 2. Authorize in the vendor's login window. 3. Approve the requested permissions.An OAuth token is generated and stored in the vault. The token refreshes automatically — no manual key rotation needed.
Webhook1. Copy the webhook URL shown in the CRM. 2. Paste it into the vendor's webhook configuration. 3. Set the signing secret if required.Inbound events are verified using the signing secret before being processed. Invalid signatures are rejected.

Integration Status & Health

StatusIndicatorWhat It Means
Connected🟢 GreenIntegration is active and last test call succeeded.
Warning🟡 YellowIntegration is connected but a recent call returned a non-fatal error (e.g., rate limit, temporary vendor outage).
Error🔴 RedIntegration call failed. Credentials may be expired, revoked, or the vendor returned a hard error. Action required.
Not Connected⚪ GrayNo credentials stored. Integration is available but has not been configured.
Planned / TBD🟡 Yellow badgeIntegration is on the roadmap but not yet available to configure.

When an integration enters Error state, the CRM notifies the account owner via in-app alert and email. Workflows that depend on the failing integration are paused — they do not silently fail or drop data. Once credentials are updated and the integration passes a test call, paused workflow runs resume from the last successful step.

Open Questions

  • Which SMS vendor is primary — Twilio, Vapi, or another? Does the contractor-facing config expose the vendor choice, or is it abstracted?
  • Payment processor decision — Stripe vs Square vs both. Are both offered simultaneously, or does the contractor pick one on setup?
  • E-signature vendor — Dropbox Sign vs DocuSign. Is one the default with the other as an enterprise option?
  • Social media posting — should posts require contractor approval before publishing, or can the AI post directly to connected accounts?
  • Google Calendar sync — should CRM be the source of truth, or should conflicts be surfaced for manual resolution?
  • Webhook retry behavior — if a vendor sends a webhook and the CRM is temporarily unavailable, does the vendor retry? Does the CRM have an event replay queue?
  • Rate limiting — how are per-contractor API usage limits tracked across concurrent workflow runs?
  • Integration marketplace — will contractors be able to install third-party integrations beyond the built-in catalog? What's the security model for community integrations?