Your CRM knows everything about your customers. Your phone knows nothing about them.
Krayin Google Contacts integration makes it easier for sales teams to keep customer contacts accessible and up to date. With the new Export CRM Contacts to Google feature, you can quickly move contacts from Krayin to Google Contacts without manually exporting CSV files or cleaning spreadsheets. Every sales team eventually hits this wall. A prospect calls, and the screen just shows an unknown number.
You want to send a quick WhatsApp message, but the contact only exists in a database you can’t reach from your phone. With the Export CRM Contacts to Google feature, you can quickly export contacts from Krayin to Google Contacts instead of manually exporting a CSV, cleaning it up in a spreadsheet, and discovering three weeks later that half the records are duplicated and the rest are out of date.
We built this release to delete that entire workflow. With the new Krayin Google Contacts integration, your CRM connects directly to your Google account and pushes contacts into Google Contacts — no CSV, no spreadsheet cleanup, no duplicates.
How to Export CRM Contacts to Google Contacts
In short: it takes the people stored in your CRM and creates them as real contacts in your Google account. Once they’re there, they sync everywhere Google already syncs — your Android phone, the Gmail address book, Google Meet invitations, and the contacts app on any device signed into that account.
- One-click export. Pick Google Contacts from the export dialog you already use for CSV and XLS.
- Duplicate detection built in. Krayin reads your existing Google Contacts first and skips anyone already there.
- Per-user connections. Every CRM user connects their own Google account. Your reps’ contacts go to their phones, not to a shared inbox.
- Respects your filters. Export the exact segment you’re looking at — one organisation, one tag, one search — not the whole database.
- Runs in the background. Large exports are queued and batched, so the browser never hangs and you can keep working.
- Revocable at any time. One click disconnects the account and revokes Krayin’s access on Google’s side.
Before you begin: one-time setup
Because Krayin is self-hosted, you supply your own Google OAuth credentials. This keeps your contact data flowing directly between your server and Google — it never passes through us. It’s a five-minute job you do once.
- Open the Google Cloud Console and create a project (or reuse an existing one).
- Enable the People API for that project.
- Configure the OAuth consent screen and add the
.../auth/contactsand.../auth/userinfo.emailscopes. - Create an OAuth 2.0 Client ID of type Web application, and set the authorised redirect URI to your Krayin callback URL.
- Copy the client ID and secret into your
.envfile.
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-client-secret GOOGLE_REDIRECT_URI=https://your-crm-domain.com/admin/settings/google-contacts/callback
Two things worth checking. The redirect URI has to match what you entered in the Google Cloud Console character for character — a missing trailing slash or an http where Google expects https is the most common reason a connection fails. And because exports run as queued jobs, make sure a queue worker is running on your server.
If you skip the credentials step, Krayin won’t crash on you — it shows a clear “Google Contacts is not configured” message and sends you back to the settings page.
Find Google Contacts in your settings
Head to Settings in the Krayin admin panel and scroll to the Other Settings section. You’ll find a new tile sitting alongside Web Forms and Tags.
Connect your Google account
Click the tile and you’ll land on a deliberately plain screen: a single Connect Google Account button. There’s nothing to configure here, because the configuration already happened in your .env file.
That button hands you off to Google’s own consent screen. This is standard OAuth 2.0 — you’re signing in on Google’s domain, and Krayin never sees your Google password. Google tells you exactly what access it’s granting before you agree to anything.
Approve it, and you’re back in Krayin with a confirmation. The settings page now shows which Google account is linked, plus a Disconnect button.
Disconnecting isn’t cosmetic. Krayin revokes the token with Google and deletes the stored credentials from your database, so access genuinely ends rather than merely disappearing from the interface.
Export CRM Contacts to Google Contacts
Now go to Contacts → Persons and click Export. The familiar download dialog has a new option in its dropdown: Google Contacts, sitting right beside CSV and XLS.
Here’s the detail that makes this genuinely useful day to day: the export follows whatever filters are applied to the grid. Filter to one organisation and export just that account team. Search for a tag and export that segment. Clear everything and export the lot. What you see is what gets sent.
Hit Export and the work moves to a background queue. Krayin first reads your existing Google Contacts to work out who’s already there, then sends the rest to Google in batches. You get live progress as it runs — how many were exported, how many were skipped as duplicates, and how many failed.
Check Google Contacts
Open contacts.google.com and your CRM records are there as proper Google contacts.
Notice what came across. Not just names and emails, but phone numbers, job titles and company names too. Krayin maps each CRM person onto Google’s contact format properly:
- The person’s name is split into given and family name, so Google sorts and searches them correctly.
- Every email address on the record is carried over, labelled as work.
- Every contact number comes across, also labelled as work.
- Job title and the linked organisation’s name populate Google’s company fields.
The practical upshot: when Wilson Fisk calls your rep’s mobile, the screen says “Wilson Fisk, Sales Executive, ShieldGuard Security” instead of an unrecognised number.
How duplicate contacts are handled
This is the part that makes CSV-based workflows so miserable, so it’s worth being explicit about.
Before creating anything, Krayin fetches the email addresses already present in your Google Contacts and compares them against the people you’re exporting. Anyone whose email is already in your Google account is marked as a duplicate and skipped — not re-created, not overwritten. They’re counted separately in the results so you can see exactly what happened.
That means running the same export twice is safe. Export your full contact list today, add forty new leads next month, and run it again — only the forty new people get created.
Permissions and privacy
Pushing customer data into a third-party service deserves proper controls, so the integration is wired into Krayin’s existing role-based access system in two separate places.
- Connecting an account is governed by its own permission under Settings. You decide which roles may link a Google account at all.
- Exporting contacts is a distinct permission on the Persons module. A user can hold one without the other — so you can let a rep connect their account while reserving bulk export for managers.
If a role doesn’t have the export permission, the Google Contacts option simply isn’t offered.
On the data side: connections are strictly per user, so one person’s Google account is never visible or usable by another. OAuth tokens are stored encrypted in your database rather than as plain text, and they’re hidden from API responses. And since Krayin is self-hosted, the whole exchange runs between your server and Google’s — there is no intermediary service holding your customer list.
Who this is for
A few situations where teams have told us this closes a real gap:
- Field sales teams. Reps who spend the day on the phone need CRM contacts on the device in their pocket, not on a laptop back at the office.
- Caller identification. An incoming call from a known prospect should show a name and a company, not a bare number.
- Gmail-first workflows. Once contacts are in Google, Gmail autocompletes them and Calendar suggests them for meeting invites.
- Onboarding a new rep. Assign them a territory, filter the grid to it, export once, and their phone is ready on day one.
- Messaging apps. WhatsApp and Signal read your phone’s address book. Contacts in Google means contacts you can message without copying numbers around.
What this release does and doesn’t do
We’d rather be straight with you about scope than let you discover the boundaries yourself.
This release is a one-way export: Krayin → Google Contacts. It creates contacts that don’t yet exist in your Google account. It does not pull contacts from Google into your CRM, it does not update Google contacts when a CRM record changes afterwards, and it does not run automatically on a schedule — you trigger each export deliberately.
That’s a starting point, not the destination. Two-way sync, automatic updates on record changes, and importing from Google are all on the roadmap, and what we build next depends heavily on what you tell us you need.
Frequently asked questions
Does the Krayin Google Contacts integration cost extra?
No. It ships as part of Krayin CRM, which is free and open source. There is no add-on to purchase and nothing extra to install — update to the latest version and the feature appears in your settings.
Is this a two-way sync between Krayin and Google Contacts?
Not in this release. It is a one-way export from Krayin to Google Contacts. Contacts created in Google are not pulled back into your CRM, and later edits to a CRM record are not pushed to Google automatically. Two-way sync is on the roadmap.
Will exporting twice create duplicate contacts in Google?
No. Before creating anything, Krayin reads the email addresses already in your Google Contacts and skips anyone who is already there. Those records are reported separately as duplicates, so re-running an export only adds people who are genuinely new.
Can each sales rep connect their own Google account?
Yes, and that is how it is designed to work. Connections are per user, so every rep links their own Google account and exports land in their own address book. No user can see or use another user’s connection.
What contact details are exported to Google?
Full name, split into given and family name for correct sorting; every email address on the record; every contact number; and the person’s job title together with their organisation’s name. These populate the equivalent fields in Google Contacts.
Do I need my own Google API credentials?
Yes. Because Krayin is self-hosted, you create an OAuth 2.0 client in the Google Cloud Console and add the client ID, secret and redirect URI to your .env file. It is a one-time setup that takes about five minutes, and it means your contact data travels directly between your own server and Google.
How do I revoke access later?
Click Disconnect on the Google Contacts settings page. Krayin revokes the token with Google and deletes the stored credentials from your database, so access ends immediately rather than just being hidden from the interface.
Getting started
The Google Contacts integration ships as part of Krayin CRM — there’s no add-on to buy and nothing extra to install. Update to the latest version, add your Google OAuth credentials to .env, and the option appears in your settings.
Krayin is free and open source, built on Laravel. If you’re not running it yet, you can grab it from the links below.
Built something interesting with the Google Contacts integration, or hit a snag setting it up? Open an issue on GitHub or tell us in the comments — feature requests from users are what shaped this one.