
Canine Genetics for Puppy Shoppers: Making Science Simple is a collaborative project between Paction and Orivet Paw Print Genetics! The tool is intended to help you differentiate your breeding program by sharing with your prospective buyers how important it is to test breeding pairs and, because you are doing so, to choose you as a responsible breeder.
Paction has created this tool to function as a "widget". You can embed this widget on your own website to help get your prospective customers more engaged in your breeding program and to get them to spend more time on your website. Digital marketing research shows that you're 50% more likely to convert a lead if that lead engages on your site for 5 minutes or more. Plus, you're contributing to Paction's overall effort to better educate the current wave of Canadian dog owners!
Preview the widget below and see the instructions to follow.
This is exactly what visitors will see after you embed the widget. Test it out to explore the full course experience.

The embed takes less than five minutes. If you can paste text on your site, you can add this widget. Choose the option that matches how you manage your website:
Use this option for any CMS, static site, or website builder that lets you add custom HTML. It's the easiest choice if you do not work inside a React app.
<div data-paction-canine-genetics></div>
<script>
(function (w, d, scriptId, scriptUrl) {
function initWidget() {
if (w.PactionCanineGeneticsWidget && typeof w.PactionCanineGeneticsWidget.init === 'function') {
w.PactionCanineGeneticsWidget.init();
}
}
if (w.PactionCanineGeneticsWidget && typeof w.PactionCanineGeneticsWidget.init === 'function') {
initWidget();
return;
}
var existingScript = d.getElementById(scriptId);
if (existingScript) {
existingScript.addEventListener('load', initWidget);
return;
}
var scriptElement = d.createElement('script');
scriptElement.id = scriptId;
scriptElement.src = scriptUrl;
scriptElement.async = true;
scriptElement.addEventListener('load', initWidget);
var target = d.head || d.body || d.documentElement;
if (target) {
target.appendChild(scriptElement);
}
})(window, document, 'paction-canine-genetics-embed-script', 'https://paction.ca/widgets/canine-genetics.js');
</script>Working inside a React codebase? Drop this component into your project and mount it anywhere in your layout. It reuses the same script and keeps initialization logic tidy.
import { useEffect } from 'react';
const SCRIPT_ID = 'paction-canine-genetics-embed-script';
const SCRIPT_URL = 'https://paction.ca/widgets/canine-genetics.js';
export function PactionCanineGeneticsWidget() {
useEffect(() => {
const initWidget = () => {
window.PactionCanineGeneticsWidget?.init?.();
};
if (window.PactionCanineGeneticsWidget?.init) {
initWidget();
return undefined;
}
const handleLoad = () => initWidget();
let scriptElement = document.getElementById(SCRIPT_ID);
if (scriptElement) {
scriptElement.addEventListener('load', handleLoad);
return () => scriptElement.removeEventListener('load', handleLoad);
}
scriptElement = document.createElement('script');
scriptElement.id = SCRIPT_ID;
scriptElement.src = SCRIPT_URL;
scriptElement.async = true;
scriptElement.addEventListener('load', handleLoad);
const target = document.head || document.body || document.documentElement;
if (target) {
target.appendChild(scriptElement);
}
return () => {
scriptElement.removeEventListener('load', handleLoad);
};
}, []);
return <div data-paction-canine-genetics />;
}