{"id":350943,"date":"2026-08-16T09:48:47","date_gmt":"2026-08-16T09:48:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/conduit-crm\/"},"modified":"2026-08-16T09:48:11","modified_gmt":"2026-08-16T09:48:11","slug":"switchyard-crm","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/switchyard-crm\/","author":7640281,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.4","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"Switchyard CRM Sync and Access","header_author":"Jean Galea","header_description":"Connect WordPress to your CRM. Sync users, purchases and form entries, and gate content with CRM tags.","assets_banners_color":"1b1626","last_updated":"2026-08-16 09:48:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/jgalea\/switchyard-crm","header_author_uri":"https:\/\/jeangalea.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jeangalea","date":"2026-08-16 09:48:11"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3649502,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3649502,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3649502,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3649502,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[16114,1150,597,1034,1558],"plugin_category":[58],"plugin_contributors":[78515],"plugin_business_model":[],"class_list":["post-350943","plugin","type-plugin","status-publish","hentry","plugin_tags-content-restriction","plugin_tags-crm","plugin_tags-integration","plugin_tags-marketing-automation","plugin_tags-sync","plugin_category-user-management","plugin_contributors-jeangalea","plugin_committers-jeangalea"],"banners":{"banner":"https:\/\/ps.w.org\/switchyard-crm\/assets\/banner-772x250.png?rev=3649502","banner_2x":"https:\/\/ps.w.org\/switchyard-crm\/assets\/banner-1544x500.png?rev=3649502","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/switchyard-crm\/assets\/icon-128x128.png?rev=3649502","icon_2x":"https:\/\/ps.w.org\/switchyard-crm\/assets\/icon-256x256.png?rev=3649502","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Switchyard CRM keeps your WordPress site and your CRM in step. When someone registers, buys something or submits a form, their record lands in your CRM with the fields you mapped. When you tag them in the CRM, that tag decides what they can see on the site.<\/p>\n\n<p>Ten CRMs are supported, and the same features work on all of them.<\/p>\n\n<p><strong>What syncs outward<\/strong><\/p>\n\n<ul>\n<li>User registration and profile changes<\/li>\n<li>WooCommerce orders, including guest checkout, with per-product and per-status tags<\/li>\n<li>Easy Digital Downloads purchases and refunds<\/li>\n<li>Gravity Forms, WPForms, Fluent Forms and Contact Form 7 submissions, with per-form field mapping<\/li>\n<\/ul>\n\n<p><strong>What syncs back<\/strong><\/p>\n\n<ul>\n<li>Tags, through an inbound webhook, so a CRM automation can grant or revoke access<\/li>\n<li>Any mapped field, on demand or on a schedule<\/li>\n<li>Contacts imported as WordPress users<\/li>\n<\/ul>\n\n<p><strong>Access control<\/strong><\/p>\n\n<p>Restrict any post, page or custom post type by tag, or restrict a whole taxonomy term. Restricted content is kept out of archives, search, feeds and the REST API, not just hidden from the single view. Menu items, widgets and blocks have their own visibility rules, and there are shortcodes for conditional content inside a post.<\/p>\n\n<p><strong>Supported CRMs<\/strong><\/p>\n\n<p>ActiveCampaign, HubSpot, Mailchimp, Klaviyo, Kit (formerly ConvertKit), Brevo, FluentCRM, MailerLite, Zoho CRM, Salesforce.<\/p>\n\n<p>CRMs that have tags use tags. CRMs that only have lists, audiences or groups use those instead, so tag-based access control works everywhere.<\/p>\n\n<p><strong>Built to stay out of the way<\/strong><\/p>\n\n<p>A CRM outage never breaks checkout or registration. Requests retry with backoff, a circuit breaker suspends calls to a CRM that stops responding, and sync runs in the background. Everything is logged with credentials redacted, so a support conversation can start from evidence.<\/p>\n\n<p>No nag screens, no upsell banners, no review prompts.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Switchyard CRM only ever talks to the one CRM you connect it to. No service is contacted until you pick a CRM under Switchyard CRM \u2192 Connection and enter its credentials. Clearing those credentials stops all traffic to it.<\/p>\n\n<p>What is sent: the contact data in your field map. That is always the email address, and then whatever user profile fields, order fields and form fields you have mapped. It is sent when someone registers or updates their profile, when a WooCommerce or Easy Digital Downloads order is placed or refunded, and when a mapped form is submitted. The plugin reads back tags, list membership and mapped fields, on demand or on the schedule you set, and can import contacts as WordPress users.<\/p>\n\n<p>Site tracking is a separate, off-by-default setting under Switchyard CRM \u2192 Settings. Turning it on loads the CRM's own visitor tracking script in your visitors' browsers, from that CRM's servers: js.hs-scripts.com for HubSpot, static.klaviyo.com for Klaviyo, diffuser-cdn.app-us1.com for ActiveCampaign. Those scripts see what the CRM's tracking normally sees, which is page views and, for a logged-in visitor, the email address Switchyard passes to identify them. Leave the setting off and none of it loads.<\/p>\n\n<p>FluentCRM runs inside your own WordPress installation, so selecting it sends nothing off-site. The other providers are third-party services, each governed by its own terms and privacy policy:<\/p>\n\n<ul>\n<li>ActiveCampaign. Terms: https:\/\/www.activecampaign.com\/legal\/terms-of-service Privacy: https:\/\/www.activecampaign.com\/legal\/privacy-policy<\/li>\n<li>HubSpot. Terms: https:\/\/legal.hubspot.com\/terms-of-service Privacy: https:\/\/legal.hubspot.com\/privacy-policy<\/li>\n<li>Mailchimp. Terms: https:\/\/mailchimp.com\/legal\/terms\/ Privacy: https:\/\/www.intuit.com\/privacy\/statement\/<\/li>\n<li>Klaviyo. Terms: https:\/\/www.klaviyo.com\/legal\/terms-of-service Privacy: https:\/\/privacy.klaviyo.com\/policies\/?name=klaviyo-privacy-policy<\/li>\n<li>Kit. Terms: https:\/\/kit.com\/terms Privacy: https:\/\/kit.com\/privacy<\/li>\n<li>Brevo. Terms: https:\/\/www.brevo.com\/legal\/termsofuse\/ Privacy: https:\/\/www.brevo.com\/legal\/privacypolicy\/<\/li>\n<li>MailerLite. Terms: https:\/\/www.mailerlite.com\/legal\/terms-of-service Privacy: https:\/\/www.mailerlite.com\/legal\/privacy-policy<\/li>\n<li>Zoho CRM. Terms: https:\/\/www.zoho.com\/terms.html Privacy: https:\/\/www.zoho.com\/privacy.html<\/li>\n<li>Salesforce. Terms: https:\/\/www.salesforce.com\/company\/legal\/ Privacy: https:\/\/www.salesforce.com\/company\/legal\/privacy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/switchyard-crm<\/code> and activate it.<\/li>\n<li>Go to Switchyard CRM \u2192 Connection, pick your CRM and enter its credentials.<\/li>\n<li>Map your fields under Sync.<\/li>\n<li>Set access rules per post, or under Access for site-wide defaults.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20a%20crm%20that%20has%20no%20tags%3F\"><h3>Does this work with a CRM that has no tags?<\/h3><\/dt>\n<dd><p>Yes. Klaviyo, Brevo and MailerLite model segmentation as lists or groups rather than tags. Switchyard uses whichever the CRM provides, and the settings screens use the CRM's own terminology.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20crm%20goes%20down%3F\"><h3>What happens if my CRM goes down?<\/h3><\/dt>\n<dd><p>Nothing on the site breaks. Failed calls retry with backoff, then queue for later. After repeated failures Switchyard stops calling that CRM for five minutes rather than adding a timeout to every page load. Access decisions use the cached tags in the meantime.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20guest%20checkout%3F\"><h3>Does it work with guest checkout?<\/h3><\/dt>\n<dd><p>Yes. A WooCommerce or EDD order from someone without an account still creates or updates the contact, using the billing details on the order.<\/p><\/dd>\n<dt id=\"can%20i%20move%20to%20a%20different%20crm%20later%3F\"><h3>Can I move to a different CRM later?<\/h3><\/dt>\n<dd><p>Your field mapping and access rules are stored independently of the CRM, so switching means reconnecting and remapping fields. Tags have to exist in the new CRM under the same names.<\/p><\/dd>\n<dt id=\"is%20there%20a%20developer%20api%3F\"><h3>Is there a developer API?<\/h3><\/dt>\n<dd><p>Yes. <code>switchyard_apply_tags()<\/code>, <code>switchyard_remove_tags()<\/code>, <code>switchyard_has_tag()<\/code>, <code>switchyard_sync_user()<\/code>, <code>switchyard_sync_contact()<\/code> and more, plus filters on every sync payload and access decision. There are WP-CLI commands for status, sync, tags and import.<\/p><\/dd>\n<dt id=\"how%20do%20i%20do%20something%20else%20with%20an%20order%3F\"><h3>How do I do something else with an order?<\/h3><\/dt>\n<dd><p>Every synced WooCommerce or EDD order fires <code>switchyard_order_synced<\/code> with a normalised order object carrying line items, totals, currency and the customer user ID. Hook it to push orders wherever you want.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Ten CRM providers with a shared capability model.<\/li>\n<li>WooCommerce, Easy Digital Downloads, Gravity Forms, WPForms, Fluent Forms and Contact Form 7.<\/li>\n<li>Tag-based access control across single views, queries, feeds and REST.<\/li>\n<li>Inbound webhooks, batch import and export, WP-CLI commands.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to your CRM. Sync users, purchases and form entries, and gate content with CRM tags.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/350943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=350943"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jeangalea"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=350943"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=350943"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=350943"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=350943"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=350943"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=350943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}