Integrations
Set up Google sign-in, xAI, a mailbox, Stripe, PayPal, calendar import and exchange rates, and see every outside service YourDesk talks to.
3 min readUpdated Oct 17, 2026Applies to YourDesk 1.0.0
On this page
Every integration is optional. Clients, projects, proposals, invoices, the planner, time and client portals all work without any of them.
| Integration | Configured in | Used for |
|---|---|---|
| Google sign-in | Environment variables | "Continue with Google" |
| xAI | Environment variable, or each user's Settings → Agent | The Agent and AI drafting |
| Email mailbox | Each studio's Settings → Workspace → Mailbox | Sending letters, reminders and follow-ups |
| Stripe | Ops → Payments | Selling plans |
| PayPal | Ops → Payments | Selling plans |
| Calendars | The Planner | One-off .ics import, and export |
| Exchange rates | Settings → Workspace → FX rates | Approximate home-currency amounts on invoices |
Google sign-in
In the Google Cloud console, create an OAuth client ID of type Web application.
Add the authorised redirect URIs:
https://desk.example.com/api/auth/callback/google http://localhost:8080/api/auth/callback/googleSet both values in the server environment and restart (or redeploy):
GOOGLE_CLIENT_ID=1234.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=...
The "Continue with Google" button works once both are present at server start. A Google sign-in with the same email as an existing password account signs in to that account. Closed sign-up applies to Google too.
xAI
Create an API key in the xAI console. Either set it for everyone as XAI_API_KEY, or let each user paste their own under Settings → Agent. The Agent explains the order keys are used in, the models and the costs.
Email mailbox
Each studio connects its own IMAP and SMTP mailbox; there is no server-wide mail setting. Presets cover Gmail, Google Workspace, Outlook, Fastmail and iCloud, and "Other IMAP" takes any provider on the standard secure ports. Gmail needs an App Password. Details: Connecting a mailbox.
Stripe
Stripe sells YourDesk plans to studios through Stripe Checkout. You enter the secret key and the webhook signing secret in Ops → Payments, and add a webhook endpoint at https://<your-domain>/api/payments/stripe/webhook. Full steps: Stripe setup.
PayPal
PayPal takes a one-off payment for a plan through PayPal Checkout, using a REST app's Client ID and Secret in Ops → Payments, in sandbox or live mode. Full steps: PayPal setup.
Note
Stripe and PayPal here are for selling plans on your deployment. They are not connected to studio invoices: a studio's clients pay the studio directly using the bank details or PayPal handle printed on the invoice.
Calendars
The Planner imports .ics calendars from an https:// link or an uploaded file, and exports its own items as planner.ics. Import is a one-time copy, not a live subscription. See Calendar import and export.
Exchange rates
Settings → Workspace → FX rates accepts rates typed by hand, or refreshes them from the free Frankfurter API (European Central Bank reference rates, no key needed). Rates are only used to show an approximate home-currency amount on foreign-currency invoices.
Outside services the app contacts
For privacy notices and firewall rules, these are all the outside hosts involved:
| Host | Contacted by | When |
|---|---|---|
api.x.ai |
The server | Agent runs and AI drafting, when a key is set |
api.stripe.com |
The server | Creating a checkout, verifying webhooks |
api-m.paypal.com, api-m.sandbox.paypal.com |
The server | Creating and capturing PayPal orders |
api.frankfurter.app |
The server | Refreshing FX rates |
| Your mail provider's IMAP and SMTP hosts | The server | Connecting a mailbox and sending mail |
| Calendar hosts you paste | The server | Importing a calendar |
| Google's OAuth servers | Browser and server | Google sign-in |
fonts.googleapis.com, fonts.gstatic.com |
Every visitor's browser | Loading the Bricolage Grotesque and IBM Plex Mono fonts, on every page including client portals |
randomuser.me |
Browsers viewing the demo studio | Sample avatar photos in the demo and seed data |
mail.google.com |
The user's browser | Only when a send falls back to opening a Gmail compose window |
Tip
If you need to avoid Google Fonts (for example for GDPR reasons), download the two font families, serve them from public/, and replace the Google Fonts <link> tags in src/routes/__root.tsx.