An LMS Salesforce integration comes down to three data flows, and the one to build first is the completion write-back: a partner rep finishes a certification, and a status and a date land on their Contact and on their partner’s Account. It goes first because the other two flows read what it writes. Your pipeline report groups deals by that status, and deal-stage enrollment checks it so it doesn’t re-invite reps who already finished. This guide names the Salesforce objects each flow touches, what breaks in each one, and how to build all three with Zapier, Make, webhooks or an API when there’s no native connector to install.
Try Mini Course Generator free – build your first partner certification course from a document you already have.
Key Takeaways
- Build the completion write-back first: a certification status and date on the rep’s Contact and on the partner’s Account.
- Write to Contacts, never Leads. Salesforce can’t reverse a lead conversion, and a converted lead drops out of search unless an admin grants a special permission.
- Write a status and a date, never a running count. An event that runs twice counts the same rep twice.
- A partner marked Primary on an opportunity appears in opportunity reports, which is what lets you put pipeline next to certification.
- Deal-stage enrollment comes last. It has the longest chain of steps and needs the write-back field to skip reps who are already certified.
The Three Salesforce Data Flows, by Object and Direction
“Integrates with Salesforce” can mean any of three things. Each one runs in a different direction, touches different objects and answers a different question from your VP of partnerships.
| Flow | Direction | What starts it | Salesforce objects it touches | The question it answers |
|---|---|---|---|---|
| Completion write-back | LMS to Salesforce | A partner rep completes a certification course | Writes fields on the rep’s Contact and the partner’s Account | Who is certified, at which partners? |
| Partner pipeline by certification | Inside Salesforce | Nothing new, it’s a report | Reads Opportunities, their primary partner, and that partner Account’s status | Do certified partners bring in more pipeline? |
| Deal-stage enrollment | Salesforce to LMS | An Opportunity reaches a stage you pick | Reads the Opportunity, its primary partner Account and that Account’s Contacts | Which rep needs which course, right now? |
Only the first and third flows move data between systems. The second is a report, and it returns nothing useful until the first one has run for a while. The general model behind this (what else an LMS connects to, and which system owns which data) is in the LMS integration guide. This guide stays on the Salesforce records.
If the people you train are your own sales reps rather than partners, the same three flows apply. Your reps are Salesforce users rather than contacts, though, so ask your admin where training fields belong before you build anything.
Build the Completion Write-Back First
The write-back is the smallest build that changes what your sales team sees, and nothing about it depends on deal stages, partner portals or reports. A rep finishes the certification course. The LMS sends an event, and an automation writes to two Salesforce records.
The four fields to ask your admin for
- Contact: Partner Certification Status. A picklist with three values: In Progress, Certified, Not Certified.
- Contact: Partner Certification Date. The date the rep passed.
- Account: Partner Certification Status. Certified when at least one rep at that partner holds the current certification.
- Account: Last Certification Date. The most recent pass at that partner.
The dates matter more than they look. They let a report find every certification older than twelve months when your program requires yearly recertification. They also make the before-and-after pipeline comparison in the next section possible.
The build, step by step
-
Send the completion event out of the LMS. A webhook or the LMS’s own Zapier or Make app sends it to a scenario. Fire one test completion first and confirm the event carries the learner’s email address, because the next step has nothing to match on without it.
-
Find the Contact. Zapier’s Find Record step “finds a record of a specified Salesforce object by up to two fields and values you choose.” Match on email. If your org stores a partner ID on the Contact, use it as the second field. In Make, the same job is “Search records (soql)”.
-
Update the Contact. Zapier’s Update Record step “updates an existing record for a specified Salesforce object.” Set the status to Certified and write the date.
-
Update the partner Account. Same step, pointed at the Contact’s Account: status Certified, last certification date.
Done looks like this: a partner manager opens any partner Account, sees Certified with a date, and can see which Contacts hold it.
Write to Contacts, never Leads
A partner rep who signed up through a web form may exist in Salesforce only as a Lead. Don’t point the write-back there.
When a lead is converted, Salesforce “uses the information stored in the lead record to create a business account, a contact, and an opportunity.” After that, Salesforce Help says, “the lead record is no longer searchable, unless your admin assigned you the View and Edit Converted Leads permission,” and “You can’t reverse a lead conversion.” It also warns that conversion “sometimes creates duplicate records.”
So a sync that writes certifications to Leads is writing to records most of your sales team will convert and stop seeing. Set the Find step to Contacts only. If no Contact comes back, don’t create a Lead to hold the result. Send the event to a person who can find or create the right Contact, and let the scenario try again.
Give each field one editor
The status field now has two possible editors: the automation, and any partner manager who opens the record. Sooner or later someone types Certified for a rep who said on a call that they’d finished, and now Salesforce and the LMS disagree. Nobody can tell which one is right. The report you build next inherits the error.
Ask your admin to make all four fields read-only for everyone except the integration user. A wrong status then becomes a sync problem you can trace, not a debate between two partner managers.
Write a status and a date, never a count
A “Certified reps: 4” number on the Account is tempting. Don’t write it from the automation.
Webhooks get resent and automation steps get replayed after an error, so a step that adds one to a count will eventually count the same rep twice. A step that sets status to Certified and writes a date gives the same result on the second run as on the first. If your VP wants the count, have the admin build a Contact report grouped by Account and filtered to Certified.
Then Report Partner Pipeline by Certification
You’re measured on partner activation, the share of partners who transact, and on partner-sourced pipeline. A completion count shows neither. A partner that certified four reps and never registered a deal looks exactly like one that closes every month, until opportunities sit next to the certification field.
Salesforce already has the join you need. Opportunities and accounts carry a Partners related list, and on an opportunity you can mark one partner as Primary. In Salesforce Help’s words, “Partners marked as primary appear in opportunity reports.” Adding the partner also creates a reverse relationship, so each account lists the other.
Ask your admin for one report: opportunities created in the last two quarters that have a primary partner, with that partner Account’s certification status and last certification date as columns. Depending on how your org is set up, this can need a custom report type, which is the admin’s call. Then ask sales ops to make Primary partner required on every partner-registered deal. A deal registered without it doesn’t appear in the report at all.
A worked example, with made-up numbers
Here’s what the report can look like for a program with 40 partner accounts. The figures are an illustration, not a benchmark.
| Partner status | Partner accounts | Accounts with at least one opportunity | Activation | Pipeline, two quarters | Pipeline per partner |
|---|---|---|---|---|---|
| Certified | 18 | 14 | 78% | $810,000 | $45,000 |
| Not certified | 22 | 7 | 32% | $286,000 | $13,000 |
| All partners | 40 | 21 | 53% | $1,096,000 | $27,400 |
Activation is accounts with an opportunity divided by partner accounts: 14 of 18, 7 of 22, and 21 of 40. Pipeline per partner is pipeline divided by partner accounts.
Don’t send this table up on its own. Partners who certify may be the ones who were already selling, so a gap between the rows can’t tell your VP that the course caused it.
The version that holds up compares the same partners against themselves. Take the partners who certified two quarters ago, and compare their pipeline in the two quarters before their certification date with the two quarters since. That’s why the write-back stores a date, not just a status.
Don’t credit the course through a Campaign
Salesforce’s Campaign with Opportunities report “shows all the opportunities generated by your campaigns.” A certification cohort didn’t generate those deals. If you add certified reps to a training Campaign and read that report, the partner’s deals get counted as the course’s revenue, and the first person in finance who checks will say so.
A Campaign is still useful as a label. Zapier has an Add Contact to Campaign step, and the Campaigns with Campaign Members report counts how many members “have responded to each campaign.” Use a Campaign to see who’s in the Q4 certification wave. Use the primary-partner report to talk about pipeline.
Deal-Stage Enrollment Comes Last
The request usually sounds like this: when a partner’s deal reaches a certain stage, the partner’s rep gets the product module for that deal. It feels like the obvious first build. It’s the longest chain of the three.
-
Trigger on the stage. Zapier’s Updated Field on Record step “triggers when a field of your choosing (ie. email address, status) is updated on any record of a specified Salesforce object.” Here that’s the Stage field on Opportunity. In Make, it’s “Watch record fields”.
-
Filter to your stage. Continue only when the new value is the stage you picked. A deal that moves back a stage and forward again fires the trigger twice.
-
Find the primary partner. The partner sits in a related list, not on the opportunity’s own fields, so this takes a query step. Zapier lists Find Records by Query and Custom SOQL Query. Make has “Search records (soql)”.
-
Find the reps. Query the Contacts on that partner Account. Decide now whether every Contact gets the course, or only the ones flagged as working the deal.
-
Filter out certified reps. Skip every Contact whose Partner Certification Status already says Certified. This is where the write-back pays off: without that field, every stage change re-invites people who finished last month, and partners stop opening your emails.
-
Deliver the course. Send the rep the course, with access set to who should see it.
Compare that with the write-back: one trigger, one find and two updates. Enrollment is a trigger, two queries, two filters and a delivery step, and step 5 can’t exist until the write-back does.
Building It Without a Native Salesforce Connector
Mini Course Generator is our product, and it has no native Salesforce connector or managed package to install. It connects through Automations on Zapier or Make, through webhooks, and through the REST API on the Custom plan. Here’s how the three flows map to those routes.
| Flow | Route on Mini Course Generator | Salesforce-side steps | Plan note |
|---|---|---|---|
| Completion write-back | A course event goes out by webhook or through a Zapier or Make scenario, which finds and updates the Contact and the Account | Find, update, update | Webhooks are included from the Pro plan up |
| Partner pipeline by certification | Nothing to build on the LMS side | One report your admin builds | None |
| Deal-stage enrollment | Two options. The simple one: the scenario sends the rep a course link, and a Gateway or magic link controls access. The developer one: your code delivers the course through the REST API | Trigger, two queries, two filters | A course link sent by the scenario needs no API. Only the REST API option is on the Custom plan |
A webhook needs somewhere to land. Salesforce won’t turn an LMS webhook into a record update without code on the Salesforce side, so something has to receive the event and make the Salesforce call. For most partner teams that’s Zapier or Make. Choose the REST API when your RevOps team would rather own the integration in their own code than in an automation account the enablement team runs, and check the endpoints and rate limits against your object list before they scope it.
If your requirement is a vendor-maintained Salesforce package with components inside Salesforce screens, this isn’t that route. If it’s the three flows above, built and owned by your team, it is. If you’re still comparing platforms, partner training software, compared sets the options side by side.
What Sets the Size of the Build
No two Salesforce orgs are the same, so an hours figure for any of this would be a guess. What you can count before you start is objects, steps, fields and people.
| Completion write-back | Partner pipeline report | Deal-stage enrollment | |
|---|---|---|---|
| Direction | LMS to Salesforce | Inside Salesforce | Salesforce to LMS |
| Objects | Contact, Account | Opportunity, partner Account | Opportunity, partner Account, Contact |
| Salesforce-side steps | 3 | 0 (a report) | 5, including two filters |
| New fields | 4 | 0 | 0, if the write-back exists |
| People you need | Salesforce admin for fields and permissions | Admin for the report, sales ops for the Primary partner rule | Admin, plus whoever owns deal stages |
| Breaks when | The email doesn’t match, or someone hand-edits the status | Deals are registered without a primary partner | A deal changes stage twice, or certified reps aren’t filtered out |
Three things push each column up: the number of objects, the direction and who owns the fields. Every extra object is another find step and another place for a mismatch. Data going into the LMS needs lookups that data coming out doesn’t.
Ownership is the one that surprises people. When the Salesforce admin and the enablement lead are different people, the field request is usually the longest wait in the whole project, so send it first.
Ask Your Salesforce Admin for Four Fields This Week
Send the field request today: status and date on the Contact, status and last certification date on the Account, all four read-only except for the integration user. Build the write-back against Contacts only, with a person catching the events that don’t match. Ask sales ops to require a Primary partner on every partner deal, then have the report built with the certification date so you can compare partners before and after. Leave deal-stage enrollment until the write-back has run for a full quarter.
Once the fields exist and the certification course is the next job, see how an LMS for sales training builds that course from the product material you already have and issues the certificate the write-back records.
Frequently Asked Questions
Does Salesforce have its own training tool for partners?
Salesforce sells Enablement as an add-on license. It builds sales programs in Lightning Experience and “Partner programs (also called Partner Tracks) in an Experience Cloud site that you use for partner relationship management (PRM),” and each program measures a revenue outcome such as the number of deals won.
Partner programs need a second license, though: Trailhead says they’re “available only if your company also has a PRM add-on license.” If your partners already sign in to a Salesforce partner site, price both add-ons before you build anything. If they don’t, or the courses have to live outside Salesforce, you’re back to what an LMS does and the three flows above.
Our partner reps are Leads in Salesforce, not Contacts. What do we do?
Get them converted before you build the sync, or have the admin create Contacts for them under the right partner Account. Then keep the Find step on Contacts only, for the reasons under “Write to Contacts, never Leads” above.
What if our Salesforce admin won’t add new fields?
Show how small the request is first: four fields, read-only for everyone except the integration user, and nothing that changes how sales works a deal. If the answer is still no, a certification Campaign needs no new fields, and Zapier’s Add Contact to Campaign step can put each rep in it when they pass. You lose the status on the partner Account, though, and that’s the column the pipeline report groups by.
Does this need a developer, or can an ops person build it?
An ops person who already runs Zapier or Make can build the write-back from the standard find and update steps. The deal-stage flow is harder, because finding the primary partner takes a query step, so expect to write a short SOQL query or ask the admin for one. The route that needs a developer is the REST API, which on Mini Course Generator is on the Custom plan. Either way, the admin still creates the fields, sets who can edit them and builds the report.
Which LMS vendors sell a native Salesforce app?
Some do. Docebo, for example, sells Docebo for Salesforce as a premium app, alongside a workflow tool and APIs. Whatever the vendor, ask which Salesforce objects the app writes to, in which direction, and what happens when someone edits a synced field by hand in Salesforce. For how sales-focused platforms compare, see LMS options for sales training.
Sources
- Salesforce Help: Add Partner Relationships
- Salesforce Help: Convert Qualified Leads
- Trailhead: Track Potential Customers with Leads
- Trailhead: Campaign Basics, Campaign Reports
- Trailhead: Sales Programs and Partner Tracks Basics, Salesforce Enablement Programs Builder
- Zapier: Salesforce integrations
- Make: Salesforce app documentation
- Docebo: Salesforce integration product page



