Skip to main content

Connect Cademy to Salesforce

Set up the Salesforce integration, create the required fields and objects, choose what Cademy sends and fix common sync problems.

Written by Artur Binzaru

Cademy can send customer and training data to Salesforce. This lets your team see contacts, organisations, course dates and registrations alongside the information already held in your CRM.

This guide explains what the integration does and takes you through the full setup, one step at a time.

Allow about 45 minutes for the full setup. You can complete the shorter Contacts-only setup first and add the other modules later.

Before you start

You will need:

  • A Cademy account with the Salesforce app enabled. The integration is currently shown as an Enterprise beta feature.

  • Administrator access in Cademy.

  • A Salesforce administrator who can create an External Client App, users, permission sets, fields and custom objects.

  • A Salesforce user for the integration to run as. A separate integration user is strongly recommended.

  • Your Salesforce My Domain URL.

If you cannot see Salesforce under Apps in Cademy, contact Cademy Support before continuing.

Important: existing records are not sent automatically

Cademy starts sending records when they are created or changed after you connect Salesforce and enable the relevant module. It does not send all your existing Cademy records when you first connect.

For example:

  • A new contact created after setup will be sent to Salesforce.

  • An existing contact will be sent when their record is changed after setup.

  • An existing contact whose record does not change will not be sent.

There is currently no button to send all existing records. The Retry button in Sync Activity only works for a record that Cademy has already tried and failed to send.

Do not try to force a full sync by making bulk changes to your Cademy records. This can change important dates, trigger other integrations and send too much data to Salesforce at once. If you need historic data moved into Salesforce, contact Cademy Support before connecting.

Important: check for existing Salesforce records

Cademy uses its own unique ID fields in Salesforce to recognise records it has synced before. An existing Salesforce Contact or Account will normally have an empty Cademy ID field.

This means Cademy may create a new Salesforce record even if a similar Contact or Account already exists. If Salesforce already contains many of the same people or organisations as Cademy, contact Cademy Support before enabling the sync. Agreeing how those records will be matched first helps you avoid duplicates.

How the integration works

The sync is one-way:

Cademy → Salesforce

Changes made in Cademy can be sent to Salesforce. Changes made in Salesforce are not sent back to Cademy.

Cademy never deletes a record from Salesforce. Turning off a module or disconnecting Salesforce stops future updates, but it does not remove information that has already been sent.

What can be sent

In Cademy

In Salesforce

Default setting

Contacts

Contact

On

Organisations

Account

Off

Course Dates

Course_Date__c

Off

Registrations

Registration__c

Off

Contacts are turned on when you connect. The other modules are off so that you can create their Salesforce fields and check their mappings before any data is sent.

Course Date and Registration are custom Salesforce objects. You create them by following the recipes in this guide.

How records are matched

Salesforce data

Matching field

Value written by Cademy

Contact

Cademy_Contact_ID__c

Cademy contact ID

Account

Cademy_Organisation_ID__c

Cademy organisation ID

Course Date

Cademy_Course_Date_ID__c

Cademy course-date ID

Registration

Cademy_Registration_ID__c

Cademy registration ID

Cademy uses Salesforce external-ID upserts. With the fields in this guide configured, it does not use a matching name or email address instead. The same Cademy ID updates the same Salesforce record on later syncs. This is why the fields must be created before the connection and why similar Salesforce records with empty Cademy ID fields can become duplicates.

If you connect more than one Salesforce org, Cademy sends new changes to every connection marked Ready. The Default label identifies your main connection, but it does not stop your other Ready connections from syncing.

Step 1: choose the Salesforce integration user

The integration uses Salesforce's OAuth 2.0 Client Credentials flow. It always works as one named Salesforce user, called the Run As user in Salesforce.

Use a dedicated integration user if your Salesforce plan allows it. This makes the integration easier to audit and prevents it from stopping when a staff member leaves.

The user needs:

  • API Enabled system permission.

  • Read, Create and Edit access to every Salesforce object you enable.

  • Read and edit access to the fields Cademy uses.

  • Access to see the Salesforce records that Cademy may need to update.

Do not give this user Delete access just for Cademy. The integration never deletes Salesforce records.

You can give the access through a profile or a permission set. A permission set is usually easier to review later.

To create a permission set:

  1. In Salesforce, click the gear icon, then select Setup.

  2. In Quick Find, enter Permission Sets, then select Permission Sets.

  3. Click New.

  4. Enter a label such as Cademy Integration and save it.

  5. Open System Permissions, click Edit, enable API Enabled, then save.

  6. Return to the permission set and open Object Settings.

  7. Add the object and field permissions listed in Step 5 after you have created the fields.

  8. Open Manage Assignments, click Add Assignments, select the integration user and finish the assignment.

Keep the integration user's username nearby. Salesforce may use a username that looks like an email address, but it is not always the same as the user's contact email.

Step 2: find your My Domain URL

  1. In Salesforce Setup, enter My Domain in Quick Find.

  2. Select My Domain.

  3. Find Current My Domain URL.

  4. Copy the full address, including https://.

A production URL normally looks like:

https://yourcompany.my.salesforce.com

A sandbox or Developer Edition URL may look like:

  • https://yourcompany.sandbox.my.salesforce.com

  • https://yourcompany.develop.my.salesforce.com

Use the My Domain URL, not a Lightning page address ending in .lightning.force.com, and do not add /services/oauth2/token to it.

Step 3: create the Cademy ID fields

Create these fields before you add the Salesforce connection in Cademy. The integration checks for them while it creates the starting mappings.

Create the Contact ID field

  1. In Salesforce Setup, open Object Manager.

  2. Select Contact.

  3. Select Fields & Relationships.

  4. Click New.

  5. Choose Text, then click Next.

  6. Enter these values:

    • Field Label:Cademy Contact ID

    • Length:255

    • Field Name:Cademy_Contact_ID

  7. Enable Unique.

  8. Keep the value case-sensitive if Salesforce asks how to compare text.

  9. Enable External ID.

  10. Click Next.

  11. Make the field visible to the integration user or its profile.

  12. Continue through the page layout step and click Save.

Check that the final API name is exactly:

Cademy_Contact_ID__c

Create the Account ID field

If you plan to sync Organisations now or later, repeat the same process under Object Manager → Account → Fields & Relationships with these values:

  • Field Label:Cademy Organisation ID

  • Type: Text

  • Length:255

  • Unique: On

  • External ID: On

  • API name:Cademy_Organisation_ID__c

Create this field before connecting even if you plan to leave Organisations off at first. Adding it after the connection is created does not automatically add it to that connection's saved setup.

These fields are managed by Cademy. Your Salesforce users should not type into or change them.

Step 4: create the optional training objects

You can skip this step if you only want to sync Contacts and Organisations.

Complete the Course Date recipe before the Registration recipe because each Registration links to a Course Date.

Create the Course Date object

  1. In Salesforce Setup, open Object Manager.

  2. Click Create, then select Custom Object.

  3. Enter these values:

    • Label:Course Date

    • Plural Label:Course Dates

    • Object Name:Course_Date

    • Record Name:Course Date Name

    • Record Name Data Type: Text

  4. Enable Allow Reports.

  5. Click Save.

The object's API name must be:

Course_Date__c

Add the Course Date fields

Open Fields & Relationships on the new Course Date object and create each field below.

Field

Type

Settings

API name

Cademy Course Date ID

Text

Length 255, Unique and External ID

Cademy_Course_Date_ID__c

Start

Date/Time

No extra settings

Start__c

End

Date/Time

No extra settings

End__c

Status

Picklist

Values: Scheduled, Cancelled, Completed, one per line

Status__c

For the Cademy Course Date ID field:

  1. Click New and choose Text.

  2. Set the label to Cademy Course Date ID and the length to 255.

  3. Enable Unique and External ID.

  4. Give the integration user field access.

  5. Save and check the API name is Cademy_Course_Date_ID__c.

For Status, choose the option to enter one picklist value per line, then enter:

Scheduled
Cancelled
Completed

Cademy currently sends Scheduled for an active course date and Cancelled when a synced course date is deleted. Keep Completed in the picklist so the object is ready for reporting or future use.

Make Course Dates easy to find

A tab is optional for the sync, but useful for Salesforce users:

  1. In Setup, enter Tabs in Quick Find and select Tabs.

  2. Under Custom Object Tabs, click New.

  3. Choose Course Date and any tab style.

  4. Click Next, then Next, then Save.

Create the Registration object

  1. Return to Object Manager.

  2. Click Create, then select Custom Object.

  3. Enter these values:

    • Label:Registration

    • Plural Label:Registrations

    • Object Name:Registration

    • Record Name:Registration Name

    • Record Name Data Type: Text

  4. Enable Allow Reports.

  5. Click Save.

The object's API name must be:

Registration__c

Add the Registration fields

Open Fields & Relationships on the new Registration object and create each field below.

Field

Type

Settings

API name

Cademy Registration ID

Text

Length 255, Unique and External ID

Cademy_Registration_ID__c

Contact

Lookup Relationship

Related to Contact

Contact__c

Course Date

Lookup Relationship

Related to Course Date

Course_Date__c

Status

Picklist

Values: Registered, Cancelled, Moved, one per line

Status__c

Attendance Status

Picklist

Values: Attended, Absent, one per line

Attendance_Status__c

For each lookup field:

  1. Click New and choose Lookup Relationship.

  2. For Contact, choose Contact under Related To. For Course Date, choose Course Date.

  3. Keep the field labels exactly as shown in the table.

  4. Accept the normal field security and page layout steps, making sure the integration user can edit the field.

  5. Save and check the API name.

Add a Registration tab in the same way as the Course Date tab if you want users to find these records from the App Launcher.

Step 5: finish the integration user's permissions

Return to the profile or permission set used by the integration user.

Give it these object permissions for every module you plan to enable:

Salesforce object

Object permissions

Contact

Read, Create and Edit

Account

Read, Create and Edit

Course Date

Read, Create and Edit

Registration

Read, Create and Edit

Also give the user read and edit access to:

  • The standard fields used in your Cademy mappings.

  • Every Cademy ID field used by the modules you enable.

  • Course_Date__c.Name, Start__c, End__c and Status__c.

  • Registration__c.Name, Contact__c, Course_Date__c, Status__c and Attendance_Status__c.

You only need to grant access to the optional objects if you plan to use those modules.

If your Salesforce sharing rules restrict which Contacts or Accounts the integration user can see, make sure it can see the records Cademy may need to update. Ask your Salesforce administrator to use the smallest access that still covers the records you want to sync.

Step 6: create an External Client App in Salesforce

An External Client App gives Cademy permission to call the Salesforce API. It does not give Cademy the integration user's password.

Treat its Consumer Secret like a password. Do not put it in an email, ticket or shared document. After you save the connection, Cademy stores the credentials in encrypted form.

Salesforce recommends External Client Apps for new integrations. Salesforce menus can differ by edition and release, so use the Connected App instructions later in this step only if your org still uses the older screen.

Recommended route: External Client App

  1. In Salesforce Setup, enter App Manager in Quick Find.

  2. Select App Manager.

  3. Click New External Client App.

  4. Enter a name such as Cademy Sync and a contact email your Salesforce team monitors.

  5. If Salesforce asks for a distribution state, choose Local.

  6. In the API or OAuth section, enable OAuth.

  7. Enter this Callback URL:

    https://login.salesforce.com/services/oauth2/callback

    Salesforce requires a callback value, but Cademy's Client Credentials connection does not use it to redirect a person.

  8. Add this OAuth scope:

    Manage user data via APIs (api)

  9. Under Flow Enablement, enable Client Credentials Flow.

  10. Accept Salesforce's security warning if one appears.

  11. Save or create the app.

  12. Open the app's Policies tab and click Edit.

  13. Under OAuth Policies or Client Credentials Flow, make sure Enable Client Credentials Flow is on.

  14. In Run As, enter or select the integration user's Salesforce username.

  15. Save the policies.

The Run As value must be the exact Salesforce username shown under Setup → Users → Users. Do not assume it is the same as the person's email address.

Copy the Consumer Key and Consumer Secret

  1. In External Client App Manager, open the app's action menu and select Edit Settings.

  2. Expand OAuth Settings.

  3. Click Consumer Key and Secret.

  4. Complete Salesforce's identity check. Salesforce may email you a verification code.

  5. Copy the Consumer Key and Consumer Secret to a secure password manager until you finish the Cademy setup.

Do not paste either value into this guide or send it to Cademy Support.

Older route: Connected App

If your Salesforce org does not offer External Client Apps but does offer Connected Apps:

  1. In Setup, open App Manager.

  2. Click New Connected App.

  3. Enter Cademy Sync as the name and add your contact email.

  4. Enable OAuth Settings.

  5. Use https://login.salesforce.com/services/oauth2/callback as the Callback URL.

  6. Add Manage user data via APIs (api) to the selected OAuth scopes.

  7. Enable Client Credentials Flow and accept the warning.

  8. Save the app and click Continue.

  9. Open Manage, then Edit Policies.

  10. Under Client Credentials Flow, choose the integration user in Run As and save.

  11. In App Manager, open the app's action menu and choose View.

  12. Under API (Enable OAuth Settings), click Manage Consumer Details.

  13. Complete the identity check, then copy the Consumer Key and Consumer Secret.

If New Connected App is missing, Salesforce may require you to enable connected-app creation or ask Salesforce Support for access. Use an External Client App when it is available.

New apps can take up to 10 minutes to become active. If the connection test fails immediately after setup, wait 10 minutes and try once more before changing the settings.

Step 7: install the Salesforce app in Cademy

  1. Sign in to Cademy Admin as an administrator.

  2. Go to Apps.

  3. Select Salesforce.

  4. Read the summary, then click Install.

Cademy installs the app and opens the Salesforce connections page. Installing the app does not send any data. You still need to add a connection.

Step 8: connect your Salesforce org

  1. On the Salesforce connections page, click Connect Your First Salesforce Org. If another org is already connected, click + Add Connection instead.

  2. In Connection Name, enter a name that will help your team recognise the org, such as Production Salesforce.

  3. Paste your full My Domain URL.

  4. Paste the Consumer Key.

  5. Paste the Consumer Secret.

  6. Leave API Version blank unless Cademy Support has told you to use a specific version. Cademy currently uses version 67.0 by default.

  7. Click Test & Continue.

  8. Wait for Cademy to confirm that the connection succeeded.

  9. Check Connected as. It should show the integration user's Salesforce username.

  10. Check the Organization ID. Make sure this is the Salesforce org you meant to connect.

  11. Click Save Connection.

  12. Click Finish.

Your first connection becomes the default connection automatically. Saving the connection creates the starting mappings but does not send all your existing records.

Step 9: choose what you want to sync

From Apps → Salesforce, select the connection you have just added. The Mappings page shows one card for each module.

Open each module, check its settings and click Save after making a change. Switching a module on does not send old records. It only allows new changes from that point onwards to be sent.

Contacts

Contacts sync to the standard Salesforce Contact object. This module is on by default.

Cademy starts with these field mappings:

Cademy field

Salesforce field

Email

Email

First Name

First Name

Last Name

Last Name

Phone

Business Phone

Cademy uses Cademy_Contact_ID__c to create or update the same Contact each time.

If the Cademy contact belongs to an organisation and Organisations sync is on, Cademy makes sure the Salesforce Account exists first, then fills the Contact's Account link. If the Account cannot be synced, Cademy can still sync the Contact without that link.

Deleting a contact in Cademy does not delete the Contact in Salesforce.

Salesforce normally requires a Last Name when a Contact is created. If your Cademy contacts do not always have one, test the setup carefully and agree a suitable data rule with your Salesforce administrator.

Organisations

Organisations sync to the standard Salesforce Account object. This module is off by default.

Cademy starts with this field mapping:

Cademy field

Salesforce field

Name

Account Name

Cademy uses Cademy_Organisation_ID__c to create or update the same Account each time.

To turn it on:

  1. Open Organisations on the Mappings page.

  2. Check that Map to Salesforce account shows Account.

  3. Turn on Organisations Sync.

  4. Review the field mappings.

  5. Click Save.

Deleting an organisation in Cademy does not delete the Account in Salesforce. Sync Activity keeps a readable message explaining that the Salesforce record was left in place.

Course Dates

Course Dates sync to the custom Salesforce Course Date object. This module is off by default.

Complete the Course Date recipe in Step 4 before turning it on.

Cademy starts with these field mappings:

Cademy field

Salesforce field

Course Name with Date

Course Date Name

Starts at

Start

Ends at

End

Status

Status

Cademy uses Cademy_Course_Date_ID__c to create or update the same Course Date each time.

To turn it on:

  1. Open Course Dates on the Mappings page.

  2. Check that Map to Salesforce course date shows Course Date (Course_Date__c).

  3. Turn on Course Dates Sync.

  4. Review the field mappings.

  5. Click Save.

When an active course date is sent, its Status is Scheduled. If a course date that previously synced is deleted in Cademy, Cademy changes its Salesforce Status to Cancelled. It does not delete the Salesforce record.

For a multi-session block course, each real session syncs as its own Course Date. Cademy's internal block-parent placeholder is not synced.

Registrations

Registrations sync to the custom Salesforce Registration object. This module is off by default.

Complete the Registration recipe in Step 4 first. Contacts should be on, and Course Dates must be on if you want the Registration linked to its Course Date.

Cademy starts with these field mappings:

Cademy field

Salesforce field

Registration Code (REG-123)

Registration Name

Status

Status

Attendance Status

Attendance Status

Cademy uses Cademy_Registration_ID__c to create or update the same Registration each time.

The Contact and Course Date lookups are filled automatically, so they do not appear as normal editable mappings. Before writing a Registration, Cademy tries to sync the Contact and Course Date first. If an existing parent record fails to sync to Salesforce, Cademy can still create or update the Registration without that lookup. The parent's own Sync Activity row shows the error. A registration with no Contact or no usable Course Date fails with a readable reason instead.

To turn it on:

  1. Turn on and save Contacts and Course Dates first.

  2. Return to the Mappings list and open Registrations.

  3. Check that Map to Salesforce registration shows Registration (Registration__c).

  4. Turn on Registrations Sync.

  5. Review the field mappings.

  6. Click Save.

Registration values work as follows:

  • A new booking uses Status Registered.

  • A cancelled booking keeps its Salesforce record and changes Status to Cancelled.

  • Moving a booking uses Status Moved for the move update and changes the Course Date link. A later update, such as attendance, returns the status to Registered on the new Course Date.

  • Attendance Status is empty until attendance is marked, then becomes Attended or Absent.

Registrations for on-demand or e-learning courses have no Course Date, so they are not synced. The reason appears in Sync Activity.

A block registration covers the whole multi-session block and has no single Course Date to link to, so it is not synced. The individual sessions can still sync through Course Dates.

Step 10: change the field mappings, if needed

The starting mappings will be enough for many accounts. You can add your own Cademy fields and map them to suitable Salesforce fields.

To add a mapping:

  1. Go to Apps → Salesforce and select your connection.

  2. Open Mappings and choose the module you want to change.

  3. Click Add Mapping.

  4. Choose the Cademy Module.

  5. Choose the Cademy Field.

  6. Choose the Salesforce field on the right.

  7. If both fields are dropdown lists, use Map values when the values in Cademy and Salesforce do not match exactly.

  8. Complete or remove every unfinished row.

  9. Click Save at the top of the page.

You can also remove a mapping using the remove button at the end of its row.

If the Cademy field you need does not exist yet, choose Create new field… from the Cademy Field list where that option is available. Create the field, then continue setting up the mapping.

Keep these rules in mind:

  • Map fields that hold the same kind of information. For example, map a date to a date field and a number to a number field.

  • Required Salesforce fields and validation rules still apply to the integration user.

  • Do not map two Cademy fields to the same Salesforce field. Only one value can be kept.

  • Removing a mapping stops future updates to that Salesforce field. It does not clear the old value already stored in Salesforce.

  • Mapping changes are not applied to old records automatically. They are used the next time each Cademy record changes.

  • Cademy ID fields and automatic relationship links are managed by the integration. Do not add them as ordinary field mappings.

  • Changing the Salesforce object for a module clears that module's field mappings, external-ID matching rule and automatic relationship links after you confirm the warning. Rebuild the ordinary field mappings before enabling the module. A custom target then uses the Salesforce Record ID stored after its first successful create; it does not automatically regain the Cademy-ID upsert or parent links from the default target. Keep the default objects if you need the matching and relationships described in this guide.

  • Unsupported complex Salesforce fields appear unavailable in the field picker.

Step 11: test the setup

Use new test records rather than changing a large number of real records.

Test one module at a time:

  1. Create a test contact in Cademy with a recognisable email address, first name and last name.

  2. Wait a short time, then search for the Contact in Salesforce.

  3. Open the Contact and confirm Cademy_Contact_ID__c has a value.

  4. In Cademy, open Apps → Salesforce, select the connection, then open Sync Activity.

  5. Confirm that the contact shows as Synced.

  6. If you enabled Organisations, create or update a test organisation and check its Account.

  7. Link the test contact to that organisation and confirm the Contact's Account link is filled.

  8. If you enabled Course Dates, create or update a test course date and check the Course Date record, times and Status.

  9. If you enabled Registrations, register the test contact and check both lookup fields on the Salesforce Registration.

  10. Mark attendance, move the registration or cancel it, then check the values update as described above.

If a test fails, check Sync Activity before changing your setup. Salesforce's error message will often name the missing permission, required field or validation rule.

Check Sync Activity

Open Apps → Salesforce, select a connection, then select Sync Activity.

This page shows the 100 most recent sync records for that connection. You can filter the list by:

  • Synced

  • Failed

  • Needs reconnect

Each row shows the Cademy record, the Salesforce record ID when available, the last attempt and the latest error.

If a row says Failed:

  1. Read the full error message.

  2. Fix the cause in Cademy or Salesforce.

  3. Click Retry on that row.

Retry sends that one record again. It does not resend other records and it does not send records that have never been attempted.

If a row says Needs reconnect, replace the credentials as explained below. Retry is not available until the connection works again.

An on-demand registration or a registration on a block-parent course date appears as Failed with a readable reason. Cademy's internal block-parent course date is skipped before a sync attempt, so it does not appear in Sync Activity. The real sessions in the block can still sync.

Replace or rotate Salesforce credentials

Salesforce recommends changing OAuth secrets regularly and immediately if a secret may have been exposed.

When Salesforce gives you a new Consumer Key or Consumer Secret:

  1. In Cademy, go to Apps → Salesforce.

  2. Open the action menu on the affected connection.

  3. Click Edit Connection.

  4. Check the pre-filled My Domain URL.

  5. Enter the Consumer Key and Consumer Secret again. Cademy does not show the saved secret.

  6. Click Test & Continue.

  7. Check the username and Organization ID carefully.

  8. Click Update Connection, then Finish.

Updating credentials does not remove your mappings.

Use Edit Connection for replacement credentials from the same Salesforce org. If you want to connect a different org, use + Add Connection so each org keeps separate mappings and Sync Activity.

Disconnect a Salesforce org

  1. Go to Apps → Salesforce.

  2. Open the action menu on the connection.

  3. Click Disconnect.

  4. Confirm Disconnect.

Syncing to that org stops. Existing Contacts, Accounts, Course Dates and Registrations stay in Salesforce.

You can reconnect later by choosing Edit Connection and entering valid credentials.

Common problems

I cannot see the Salesforce app in Cademy
The Salesforce feature may not be enabled for your account, or you may not be a Cademy administrator. Ask your Cademy account owner or contact Cademy Support.

I cannot create an External Client App
Your Salesforce user may not have permission to create External Client Apps. Ask a Salesforce administrator to create it.

If your org only offers Connected Apps, connected-app creation may need to be enabled or requested through Salesforce Support. Use the External Client App route when it is available.

The connection says invalid client credentials or invalid_grant
Check all of these:

  1. The External Client App or Connected App was saved at least 10 minutes ago.

  2. Client Credentials Flow is enabled.

  3. A Run As user is set.

  4. Run As contains the user's Salesforce username, not only their contact email.

  5. The Consumer Key and Consumer Secret were copied from the same app.

  6. There are no spaces before or after either value.

  7. The My Domain URL belongs to the same Salesforce org.

Then return to Cademy and run Test & Continue again.

The connection works, but records fail with an access error
The connection test proves that Salesforce can issue a token. It does not prove the integration user can edit every object and field.

Check that the Run As user has:

  • API Enabled.

  • Read, Create and Edit on the affected object.

  • Read and edit access to every mapped field and Cademy ID field.

  • Access through your Salesforce sharing rules to the affected record.

After changing permissions, retry the failed row in Sync Activity.

Salesforce says an object or field does not exist
Check the API names, including capitals and underscores. They must exactly match the names in this guide:

  • Cademy_Contact_ID__c

  • Cademy_Organisation_ID__c

  • Course_Date__c

  • Cademy_Course_Date_ID__c

  • Start__c

  • End__c

  • Status__c

  • Registration__c

  • Cademy_Registration_ID__c

  • Contact__c

  • Course_Date__c

  • Attendance_Status__c

Also check the integration user's field-level access.

I created a Cademy ID field after connecting
Create the field exactly as shown, then contact Cademy Support before enabling the module. The starting connection setup checks for standard-object ID fields only when the connection is first saved, so adding a field later may not update the saved matching rule automatically.

Salesforce rejects a record because a required field is missing
Your Salesforce org may have extra required fields or validation rules that are not part of the starting Cademy mappings.

Open the module under Mappings and map a suitable Cademy value to the required Salesforce field. If no suitable value exists, ask your Salesforce administrator whether the rule should have an exception for the integration user. Do not weaken an important business rule without reviewing the effect first.

A dropdown value is not accepted
Open the affected mapping and click Map values. Match each Cademy value to an allowed Salesforce picklist value, then save and retry the record.

A Contact did not link to an Account
Check that:

  • Organisations sync is enabled and saved.

  • Cademy_Organisation_ID__c exists on Account and is marked Unique and External ID.

  • The integration user can create and edit Accounts and the Contact's Account field.

  • The Cademy contact belongs to an organisation.

Look at both the Organisation and Contact rows in Sync Activity. Cademy can leave the Contact unlinked when the Account cannot be synced.

A Registration did not link to its Contact or Course Date
Check that Contacts, Course Dates and Registrations are all enabled and saved. Also check:

  • The Registration object has Contact__c and Course_Date__c lookup fields.

  • All three Cademy ID fields exist and are marked Unique and External ID.

  • The integration user can edit both lookup fields.

  • The registration belongs to a scheduled course date rather than an on-demand course.

  • The registration is not for a block-parent course date.

Then read the Registration row's error in Sync Activity and retry it after fixing the cause.

A course date was cancelled but Salesforce still says Scheduled
Cademy sends Cancelled when a previously synced course date is deleted in Cademy. Check that the Status mapping still points to Status__c. If you removed that mapping, Cademy cannot update the Salesforce status on deletion.

I connected Salesforce, but no old records appeared
This is expected. Cademy does not perform a full historic sync when you connect. Records are sent when they are created or changed after setup.

Everything now says Needs reconnect
The Consumer Secret may have expired, been rotated or been deleted, or the Run As user may have been deactivated. Create or copy valid credentials, check the Run As user, then use Edit Connection in Cademy to replace the credentials.

I changed a field mapping, but old Salesforce records did not change
Mapping changes are used on future syncs. They do not update all old records. The new mapping is used when each Cademy record changes again.

Getting help

If you still need help, contact Cademy Support and include:

  • The name of the Cademy Salesforce connection.

  • The Cademy record that did not sync.

  • The Salesforce object involved.

  • The status and full error shown in Sync Activity.

  • The time you last tried the sync.

Do not send your Consumer Key or Consumer Secret. Cademy Support does not need the secret value to investigate a sync problem.

Salesforce help links

Did this answer your question?