How to Connect LearnDash to ActiveCampaign

LearnDash has no built-in ActiveCampaign integration. To connect the two, you need a third-party bridge: either Krom Automation (a native WordPress workflow plugin), WP Fusion, or a middleware service like Zapier. This guide covers all three approaches, gives exact setup steps for Krom Automation, and documents the failure modes that keep most integrations broken for weeks before anyone notices.

The learndash activecampaign integration matters most at three points in the student lifecycle: enrollment, course completion, and quiz results. Get those three triggers firing reliably and you can automate everything else from upsell sequences to certificate delivery to cohort segmentation in ActiveCampaign.

The setup is not complicated, but the defaults are wrong in two places and the errors are silent. Read the troubleshooting section before you go live, not after.

Browse the full Krom Automation feature list to see every LearnDash trigger and ActiveCampaign action available before you start building.

Which Integration Method Should You Use?

Three realistic options exist. Each has a different cost structure, a different data depth, and a different maintenance burden. The table below answers the decision, not the feature list.

MethodYear-one cost (1 site)LearnDash quiz data to AC fields?Tag-based enrollment (AC tag enrolls student)?Self-hosted data?
Krom Automation Pro$119/yearYes, via Pro triggersYes, via incoming webhookYes, execution logs stay in your database
WP Fusion~$247/year (Personal)Yes, deep field mappingYes, native featureYes
Zapier$0 to $240+/year depending on task volumeLimited, depends on Zap structureYes, with a two-step ZapNo, data routes through Zapier servers

WP Fusion is the deepest native option and worth the price if the integration is the core of your business. Zapier costs scale with task volume, which means a busy course site with 500 completions per month will pay far more than year-one estimates suggest. Krom Automation sits in the middle: native to WordPress, self-hosted, and cheaper at scale because there are no per-task fees at any tier.

The rest of this guide uses Krom Automation. The conceptual steps for triggers and actions map across all three methods, so the logic applies even if you choose a different tool.

What Gets Synced: Field Mapping Table

Before building any workflow, confirm what data is available to pass. A tag applied at the wrong moment with the wrong data is harder to debug than a missing tag.

LearnDash data pointWhere it lands in ActiveCampaign
Student email addressContact email (creates or updates contact)
Student first nameContact field: First Name
Student last nameContact field: Last Name
Course titleTag or custom field: e.g. “Enrolled: [Course Name]”
Course IDCustom field: Course ID (useful for dynamic content)
Completion dateCustom field: Completion Date (ISO 8601 format)
Quiz score (percentage)Custom field: Quiz Score
Quiz pass/fail statusTag: “Passed: [Quiz Name]” or “Failed: [Quiz Name]”
Lesson titleTag or custom field: e.g. “Completed Lesson: [Lesson Title]”
Group enrollmentTag: “Group: [Group Name]”

Quiz score sync to a custom field is the piece most teams discover they needed six weeks after launch, when they want to segment “passed with distinction” from “scraped through.” Map it on day one even if you have no automation planned for it yet. Changing a custom field name in ActiveCampaign after workflows depend on it breaks those workflows silently.

A tag applied at the wrong moment with the wrong data is harder to debug than a missing tag. Map your fields before you build, not after your first 200 students enroll.

Setting Up the Integration with Krom Automation

You need the Krom Automation free plugin plus the Pro add-on active on your site. The LearnDash triggers and the ActiveCampaign actions are both Pro features. The installation guide for Krom Automation Pro covers licence activation if you have not done that yet.

Step 1: Connect Your ActiveCampaign Account

  1. In your WordPress admin, go to Krom Automation Settings Integrations.
  2. Find the ActiveCampaign card and click Connect.
  3. Enter your ActiveCampaign API URL (found in AC under Settings Developer, formatted as https://youraccountname.api-ac.com) and your API Key.
  4. Click Test Connection. A green confirmation means the credentials are valid and Krom Automation can reach your ActiveCampaign account.
  5. Click Save.

If the test fails, the most common cause is a trailing space in the API URL or key. Copy the values fresh from ActiveCampaign rather than from a password manager that may have auto-filled incorrectly.

Step 2: Build the Course Completion Workflow

  1. Go to Krom Automation Workflows Add New.
  2. On the canvas, click the trigger node and select LearnDash: Course Completed.
  3. In the trigger settings panel, choose the specific course from the Course dropdown, or leave it set to Any Course to catch completions across your whole catalogue.
  4. Click the plus icon below the trigger to add your first action.
  5. Select ActiveCampaign: Add Tag to Contact.
  6. In the Email field, insert the merge tag {{learndash.student_email}}. This pulls the completing student’s email from the trigger data automatically.
  7. In the Tag field, type the tag you want applied, for example Completed: Advanced SEO Course. You can also use Completed: {{learndash.course_title}} to generate the tag name dynamically from the course title.
  8. Click Save Workflow and toggle the workflow status to Active.

The merge tags documentation lists every LearnDash variable available, including course ID, lesson title, quiz score, and group name. Use it as your reference when building the field mapping from the table above.

Step 3: Add an Enrollment Trigger

Repeat the workflow creation process with LearnDash: Course Enrolled as the trigger. Apply a different tag, such as Enrolled: {{learndash.course_title}}, and optionally add the student to an ActiveCampaign list using the ActiveCampaign: Add Contact to List action. This list can then be the entry point for your onboarding automation in ActiveCampaign.

For the full reference of every available LearnDash trigger, including group enrollment, lesson completion, and quiz pass and fail events, see the LearnDash integration documentation.

Step 4: Sync Quiz Results to Custom Fields

  1. Create a new workflow with the trigger LearnDash: Quiz Completed.
  2. Add the action ActiveCampaign: Update Contact Field.
  3. Set the Email field to {{learndash.student_email}}.
  4. Set the Field Name to the exact API field name from ActiveCampaign, for example quiz_score_advanced_seo. This must match what ActiveCampaign shows under Settings Custom Fields, including case.
  5. Set the Value to {{learndash.quiz_score}} for the percentage score, or use {{learndash.quiz_passed}} for a true/false value.
  6. Add a second action below: ActiveCampaign: Add Tag to Contact. Use conditional branching to apply different tags depending on whether the student passed or failed.

The conditions and branching documentation explains how to set up the yes/no logic so a pass applies one tag and a fail applies another, all within a single workflow.

Step 5: Reverse Direction, Enroll a Student When an AC Tag Is Applied

This direction requires the Incoming Webhook Receiver in Krom Automation Pro. ActiveCampaign sends a webhook when a tag is applied, Krom Automation receives it, and the workflow enrolls the student in the correct LearnDash course.

  1. In Krom Automation, go to Workflows Add New and select Incoming Webhook as the trigger.
  2. Copy the unique webhook URL generated for this workflow.
  3. In ActiveCampaign, go to Automations New Automation and choose the trigger Tag is added. Select the relevant tag.
  4. Add a Webhook action and paste the Krom Automation URL into the URL field. Set method to POST.
  5. Back in Krom Automation, add the action LearnDash: Enroll User in Course.
  6. Map the User Email field using the webhook payload variable {{webhook.contact.email}} and select the target course from the Course dropdown.

The incoming webhook documentation covers HMAC-SHA256 signature verification, which you should enable for any webhook that triggers course enrollment. Without it, anyone who discovers the URL can enroll arbitrary users.

Testing Before You Go Live

Do not test by manually completing a course on a live student account. Use the Workflow Simulator in Krom Automation to do a dry run with zero side effects. It fires the trigger with sample data, walks through every action, and shows you exactly what would be sent to ActiveCampaign without actually sending it.

After the dry run, create a test WordPress user, enroll them in the course, mark it complete from the LearnDash admin, and check the execution log under Krom Automation Logs. You want to see a green success entry for every action in the workflow. The testing and simulator documentation covers both approaches.

Testing by completing a real course on a live account is how you discover your automation emails a student three times. Use the simulator first, always.

What Does NOT Transfer: The Honest List

Every integration guide covers what works. This section covers what breaks or simply does not exist, because that is the information you actually need before committing to a setup.

  • Historical enrollment data does not sync retroactively. If you have 1,200 existing students, none of their past completions will fire into ActiveCampaign when you activate the workflow. You need a one-time import via CSV or a manual process. Plan for this before you launch a campaign targeting completions.
  • Course progress percentage does not sync natively. LearnDash tracks percentage completion internally, but there is no built-in trigger for “student reached 50% of course.” You can approximate this with lesson completion triggers, but not with a single percentage threshold.
  • Group leader actions do not fire student triggers. If a group leader marks a student’s course as complete from the group leader dashboard, the LearnDash course completion hook does not always fire. Test this specifically if you use group leaders.
  • Certificate URL is not available as a merge tag by default. If you want to email students their certificate link, you need a custom merge tag or a separate plugin that exposes the URL to WordPress hooks.
  • ActiveCampaign deals and pipelines are not accessible from LearnDash triggers. The integration touches contacts, tags, lists, and custom fields. Deal creation requires a separate workflow or a dedicated CRM-level setup.
  • Deleted contacts in ActiveCampaign do not block re-creation. If a student unsubscribes and is deleted from AC, the next enrollment trigger will recreate the contact. This is usually correct behavior but surprises teams who use ActiveCampaign deletions as suppression.

Troubleshooting: The Three Real Failure Modes

This is the section that competitors skip. If your learndash activecampaign integration is not working, one of three things is almost always wrong.

Failure Mode 1: Tags Are Not Appearing in ActiveCampaign

Check the execution log first. Go to Krom Automation Logs and find the workflow run that should correspond to the completion event.

If the log shows a success but the tag is missing in ActiveCampaign, the problem is the tag name. ActiveCampaign creates tags dynamically, but if the tag name in your action contains a merge tag that resolved to an empty string, AC receives a blank tag name and silently does nothing.

Confirm that {{learndash.course_title}} is resolving correctly by checking the log’s detail view, which shows exactly what value each merge tag had at execution time. If it is blank, the trigger fired before LearnDash had attached course data to the hook.

Failure Mode 2: The Workflow Never Fires at All

If the log shows zero entries for a workflow that should have triggered, the workflow is either paused or the trigger condition is too narrow. Check two things in order.

  • Open the workflow and confirm the status toggle is set to Active, not Paused.
  • Check the trigger’s Course dropdown. If you selected a specific course and the completion happened in a different course, the trigger correctly did not fire. Set it to Any Course temporarily and test again.

If the workflow is active and the trigger is set to Any Course and it still does not fire, confirm that LearnDash is marking the course as complete rather than just the final lesson. The two hooks are different and some themes or completion plugins intercept one without firing the other.

Failure Mode 3: Duplicate Contacts or Duplicate Tags in ActiveCampaign

Duplicate tags usually mean the workflow is set to run multiple times for the same user. In Krom Automation, open the workflow settings and enable Run Once Per Entity. This prevents the same user from triggering the workflow a second time, which happens when a student is manually re-enrolled or when the LearnDash completion hook fires twice due to a caching plugin clearing transients mid-request.

Duplicate contacts in ActiveCampaign happen when the same person has multiple WordPress accounts or when the email address passed by the merge tag does not match the case of the existing contact. ActiveCampaign is case-insensitive on email matching, but confirm that {{learndash.student_email}} is returning the account email and not a secondary address from a profile field. The ActiveCampaign integration documentation explains how the contact lookup and upsert logic works.

Automating the Full Student Journey

Once the three core triggers are working, enrollment, completion, and quiz results, you can automate the full student experience without touching either platform manually. A realistic workflow for a paid course looks like this:

  1. Enrollment fires: tag applied in AC, student added to onboarding list, welcome sequence starts.
  2. Lesson completion fires (optional, for engagement tracking): progress field updated in AC.
  3. Quiz failure fires: tag applied, support sequence triggered asking if they need help.
  4. Quiz pass fires: score written to custom field, different tag applied.
  5. Course completion fires: enrollment tag removed, completion tag applied, upsell sequence starts for the next course.

The article on automating new user onboarding covers how to structure the welcome and engagement sequences in more detail, including delay timing between emails.

If you also sell courses through WooCommerce, the enrollment trigger can be combined with a WooCommerce order completion trigger to ensure students are only enrolled after payment is confirmed. The WooCommerce Subscriptions integration documentation covers how subscription renewals can re-trigger enrollment for cohort-based courses.

The completion trigger is not the end of the student relationship. It is the most reliable moment you have to start the next one. Most sites waste it with a generic “congratulations” email and nothing else.

Krom Automation Pricing for This Integration

The LearnDash and ActiveCampaign integrations are both Pro features. The free version of Krom Automation includes 16 triggers and 21 actions, none of which are LearnDash-specific. Pro starts at $119 per year for a single site or $299 as a one-time lifetime purchase.

PlanSitesAnnualLifetime
Basic1$119/year$299
Standard5$199/year$499
EnterpriseUnlimited$369/year$799

Every plan includes every Pro feature: all 24 integrations, 80+ additional triggers, 60+ additional actions, and the incoming webhook receiver needed for the reverse enrollment direction. The only difference between plans is site count.

There are no per-task fees and no execution caps. See full pricing details or download the free version from the WordPress.org plugin directory to test the canvas before committing.

Also from wpRigel

Pollify is a Gutenberg-native poll, survey, and quiz plugin for WordPress. Polls are built as real blocks inside the editor, so there are no shortcodes to paste and no separate admin interface to navigate. It is useful for course sites that want mid-lesson knowledge checks or post-completion satisfaction surveys without adding a separate tool.

Commandify is a command palette for the WordPress admin. Press Cmd or Ctrl plus K to jump anywhere, search any post or user, and run admin actions without clicking through menus. It is the only command palette with real WooCommerce order, product, and customer commands built in, which makes it worth knowing about if your course site also runs a WooCommerce storefront.

Frequently Asked Questions

Does LearnDash have a native ActiveCampaign integration?

No. LearnDash does not include a built-in ActiveCampaign connection. You need a third-party plugin such as Krom Automation or WP Fusion, or a middleware service such as Zapier, to pass data between the two platforms.

Will the integration sync past course completions for existing students?

No. Workflow-based integrations only capture events that happen after the workflow is activated.

Existing completions will not retroactively sync to ActiveCampaign. You need a one-time manual import or a CSV upload to backfill historical data.

Can I enroll a student in a LearnDash course automatically when I apply a tag in ActiveCampaign?

Yes, but it requires the incoming webhook direction. ActiveCampaign sends a webhook when the tag is applied, Krom Automation receives it and runs a workflow that enrolls the user. This needs the Krom Automation Pro incoming webhook receiver and HMAC signature verification configured to prevent unauthorized enrollments.

What happens if the student has no WordPress account when ActiveCampaign triggers enrollment?

The enrollment action requires an existing WordPress user. If the student does not have a WordPress account yet, the workflow needs a preceding action: Create User, using the email address from the webhook payload. The Create User action in Krom Automation handles this and will update rather than duplicate if the email already exists.

How do I know if the workflow is working or silently failing?

Check the execution log under Krom Automation Logs after the first few real events. Each log entry shows the trigger data, every action that ran, the exact value each merge tag resolved to, and the response from ActiveCampaign’s API. A failure at the API response level shows the error message ActiveCampaign returned, which is almost always either an invalid field name or an expired API key.

Is quiz score data available in the ActiveCampaign integration?

Yes. The LearnDash Quiz Completed trigger exposes the score as a percentage, a pass/fail boolean, and the quiz title. You can write the score to an ActiveCampaign custom field and apply different tags depending on the pass/fail result using conditional branching in the same workflow.

Compare all three Krom Automation plans and see which fits your site count and budget. A 14-day money-back guarantee applies to every plan, so you can test the full LearnDash and ActiveCampaign integration on a real site before committing.