FunkPd FAQ | Scope, Pricing, Ownership, Support

FunkPd FAQ | Scope, Pricing, Ownership, Support
        
        
    
    
    
    
    
    
    
    
    
    
    


































    
{
    "@context": "https://schema.org",
    "@graph": [
        {
            "@type": "Organization",
            "@id": "https://funkpd.com/#org",
            "name": "FunkPd",
            "alternateName": [
                "FunkProductions",
                "Funk Productions"
            ],
            "url": "https://funkpd.com/",
            "foundingDate": "2017",
            "founder": {
                "@type": "Person",
                "@id": "https://funkpd.com/nolan/#person",
                "name": "Nolan Phelps",
                "url": "https://funkpd.com/nolan/"
            },
            "logo": {
                "@type": "ImageObject",
                "@id": "https://funkpd.com/#logo",
                "url": "https://funkpd.com/assets/img/funkpd-hoz.svg"
            },
            "image": "https://funkpd.com/assets/img/funkpd-cover.webp",
            "contactPoint": [
                {
                    "@type": "ContactPoint",
                    "telephone": "+1-431-813-2402",
                    "email": "contact@funkpd.com",
                    "contactType": "customer support"
                }
            ],
            "sameAs": [
                "https://www.linkedin.com/company/funkproductions/",
                "https://www.crunchbase.com/organization/funk-productions",
                "https://www.bbb.org/ca/mb/winnipeg/profile/web-design/funkproductions-0057-72642",
                "https://m.yelp.com/biz/funkproductions-winnipeg",
                "https://www.instagram.com/funkpd/",
                "https://github.com/gmfunk9/",
                "https://funkpd.wordpress.com/",
                "https://www.facebook.com/funkpd"
            ],
            "hasOfferCatalog": {
                "@id": "https://funkpd.com/#catalog"
            }
        },
        {
            "@type": "WebSite",
            "@id": "https://funkpd.com/#website",
            "url": "https://funkpd.com/",
            "name": "FunkPd",
            "publisher": {
                "@id": "https://funkpd.com/#org"
            }
        },
        {
            "@type": "Person",
            "@id": "https://funkpd.com/nolan/#person",
            "name": "Nolan Phelps",
            "url": "https://funkpd.com/nolan/",
            "jobTitle": "Founder",
            "worksFor": {
                "@id": "https://funkpd.com/#org"
            },
            "sameAs": [
                "https://ca.linkedin.com/in/nolan-phelps-0a777a17b",
                "https://github.com/gmfunk9/",
                "https://www.instagram.com/funkpd/"
            ]
        },
        {
            "@type": "OfferCatalog",
            "@id": "https://funkpd.com/#catalog",
            "name": "FunkPd Packages",
            "itemListElement": [
                {
                    "@type": "OfferCatalog",
                    "name": "WordPress Builds, Rescue, Stabilization, and Systems",
                    "itemListElement": [
                        {
                            "@type": "Offer",
                            "name": "Website Rescue",
                            "url": "https://funkpd.com/service/website-rescue/",
                            "itemOffered": {
                                "@type": "Service",
                                "name": "WordPress Website Rescue"
                            }
                        },
                        {
                            "@type": "Offer",
                            "name": "WordPress Builds and Rebuilds",
                            "url": "https://funkpd.com/service/rebuilds/",
                            "itemOffered": {
                                "@type": "Service",
                                "name": "WordPress Builds and Rebuilds"
                            }
                        },
                        {
                            "@type": "Offer",
                            "name": "WordPress Stabilization",
                            "url": "https://funkpd.com/stabilization/",
                            "itemOffered": {
                                "@type": "Service",
                                "name": "WordPress Stabilization"
                            }
                        },
                        {
                            "@type": "Offer",
                            "name": "Custom Systems",
                            "url": "https://funkpd.com/service/growth-systems/",
                            "itemOffered": {
                                "@type": "Service",
                                "name": "Custom WordPress Systems"
                            }
                        }
                    ]
                }
            ]
        },
        {
            "@type": "ProfessionalService",
            "@id": "https://funkpd.com/#business",
            "name": "FunkPd",
            "url": "https://funkpd.com/",
            "image": "https://funkpd.com/assets/img/funkpd-cover.webp",
            "priceRange": "$",
            "telephone": "+1-431-813-2402",
            "email": "contact@funkpd.com",
            "parentOrganization": {
                "@id": "https://funkpd.com/#org"
            },
            "address": {
                "@type": "PostalAddress",
                "streetAddress": "521 Washington Ave",
                "addressLocality": "Winnipeg",
                "addressRegion": "MB",
                "postalCode": "R2K 1M1",
                "addressCountry": "CA"
            },
            "geo": {
                "@type": "GeoCoordinates",
                "latitude": 49.9155532,
                "longitude": -97.098281
            },
            "openingHoursSpecification": [
                {
                    "@type": "OpeningHoursSpecification",
                    "dayOfWeek": [
                        "Monday",
                        "Tuesday",
                        "Wednesday",
                        "Thursday",
                        "Friday",
                        "Saturday",
                        "Sunday"
                    ],
                    "opens": "00:00",
                    "closes": "23:59"
                }
            ],
            "areaServed": [
                {
                    "@type": "City",
                    "name": "Winnipeg"
                },
                {
                    "@type": "AdministrativeArea",
                    "name": "Manitoba"
                },
                {
                    "@type": "Country",
                    "name": "Canada"
                },
                {
                    "@type": "Country",
                    "name": "Australia"
                },
                {
                    "@type": "Country",
                    "name": "Thailand"
                },
                {
                    "@type": "Country",
                    "name": "Vietnam"
                }
            ]
        }
    ]
}


{
    "@context": "https://schema.org",
    "@type": "WebPage",
    "@id": "https://funkpd.com/faq/#webpage",
    "url": "https://funkpd.com/faq/",
    "name": "FunkPd FAQ | Scope, Pricing, Ownership, Support",
    "description": "Clear answers on fit, pricing, builds, rescue, stabilization, Site Ops Coverage, ownership, support, and proof-backed handoff.",
    "datePublished": "2026-05-08T06:49:12+00:00",
    "dateModified": "2026-05-08T06:49:12+00:00",
    "isPartOf": {
        "@id": "https://funkpd.com/#website"
    }
}


{
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://funkpd.com/faq/#faq",
    "url": "https://funkpd.com/faq/",
    "name": "FunkPd FAQ",
    "mainEntity": [
        {
            "@type": "Question",
            "name": "Does FunkPd build new websites or only fix broken ones?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Both. FunkPd builds new business-critical WordPress sites and systems, fixes broken or fragile existing sites, stabilizes risky setups, and diagnoses the right path when the answer is not obvious."
            }
        },
        {
            "@type": "Question",
            "name": "When should I choose rescue, rebuild, or new build?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Choose rescue when the current site can be saved and the failure is active. Choose rebuild when the base is too fragile to keep patching. Choose new build when there is no safe owned base yet or the business needs a clean system from day one."
            }
        },
        {
            "@type": "Question",
            "name": "Can FunkPd help if another developer abandoned the project?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes, if the work can be scoped and proven. Nolan starts by finding what exists, what is broken, who owns the accounts, what risk matters, and whether rescue, rebuild, stabilization, or a new build is the safer path."
            }
        },
        {
            "@type": "Question",
            "name": "Does FunkPd work with larger companies?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes, when the scope is direct and the decision path is clear. Published work includes industrial, commercial, WooCommerce, catalog, workflow, and multi-site WordPress projects. Nolan still needs direct access to the right people and systems."
            }
        },
        {
            "@type": "Question",
            "name": "Does FunkPd work with small businesses?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes, when the site or system matters enough to scope properly. FunkPd is not the cheapest path for a simple brochure site, but small companies can be a fit when ownership, lead flow, stability, or clean handoff matters."
            }
        },
        {
            "@type": "Question",
            "name": "Why not use Wix, Shopify, or an AI site builder?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Fast cheap builders can work for simple cases. FunkPd is for companies that need ownership, control, proof, WordPress flexibility, and a system that will not collapse when the business depends on it."
            }
        },
        {
            "@type": "Question",
            "name": "Who actually does the work?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Nolan handles diagnosis, scope, build, fixes, and handoff directly. There is no sales layer, project manager, or outsource chain between the buyer and the person doing the work."
            }
        },
        {
            "@type": "Question",
            "name": "What does proof before handoff mean?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "The agreed checks happen before the job closes. Depending on scope, that can include staging review, form tests, checkout tests, redirects, backups, speed checks, tracking checks, screenshots, changelog, access notes, and handoff notes."
            }
        },
        {
            "@type": "Question",
            "name": "What happens if the project is urgent?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Urgent work is reserved for real business risk: site down, checkout broken, forms dead, malware visible, launch blocked, or revenue affected. If capacity exists, urgent rescue can jump the queue. Routine edits stay in the normal queue."
            }
        },
        {
            "@type": "Question",
            "name": "What if I am not sure what I need?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Start with the site URL, goal, risk, deadline, and access status. If the path is unclear, the first paid step can be a diagnostic or blueprint before build, rescue, or stabilization work starts."
            }
        },
        {
            "@type": "Question",
            "name": "What is the best starting point?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Send the site URL, failure, risk, access status, and deadline. Broken, hacked, crashed, unstable, checkout-blocking, or revenue-blocking sites route to Website Rescue. Sites not worth patching route to WordPress Rebuilds. Fragile but salvageable sites route to Stabilization."
            }
        },
        {
            "@type": "Question",
            "name": "How does pricing work?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "These are current CAD ranges. Website Rescue is $3,500-$8,500. Essentials Rebuild is $4,500-$9,500. Growth Rebuild is $9,500-$18,000. Stabilization Fix is $1,250-$2,500. Stabilization Sprint is $3,500-$7,500. Systems work is scoped separately. Final scope and price are written before work starts."
            }
        },
        {
            "@type": "Question",
            "name": "What is the difference between Stabilization and Website Rescue?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Stabilization is the category for making a fragile site safe. Website Rescue is the flagship urgent paid product for failed builds, hacks, outages, unstable releases, and revenue-blocking failures. Smaller crash fixes can route to Stabilize Site or hourly support when that is safer."
            }
        },
        {
            "@type": "Question",
            "name": "Do you push monthly retainers?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. Stable low-risk sites should pay ad hoc through Web Maintenance. No monthly plan means no reserved capacity or guaranteed response window. Site Ops Coverage only fits when slow response would cost more than the plan."
            }
        },
        {
            "@type": "Question",
            "name": "Why can cheap patching cost more later?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Cheap patching can hide the real failure. If the site has bad ownership, brittle plugins, no staging, weak backups, or broken checkout risk, the safer move is to stabilize or rebuild the base instead of adding another quick fix."
            }
        },
        {
            "@type": "Question",
            "name": "Does no forced retainer mean no support?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. It means support is matched to risk. Stable sites use ad hoc support. Sites where delay would cost more than coverage can use Site Ops Coverage with reserved capacity and defined response expectations."
            }
        },
        {
            "@type": "Question",
            "name": "What is Site Ops Coverage?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Site Ops Coverage is monthly monitoring, checks, priority response, proof notes, and improvement work for justified risk. If nothing breaks, the site still gets better through cleanup, speed work, content edits, SEO fixes, tracking checks, documentation, backlog reduction, or risk reduction. It is not unlimited support and it is not 24/7 by default."
            }
        },
        {
            "@type": "Question",
            "name": "What counts as an emergency?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Emergency routing is for real outages: site down, checkout broken, forms dead, visible malware, DNS or email failure, or a launch-critical page broken. Cosmetic edits, new features, and routine backlog items are not emergencies."
            }
        },
        {
            "@type": "Question",
            "name": "What proof do I get?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "The FunkPd Proof Pack depends on scope. It may include before and after screenshots, Lighthouse or WebPageTest results, crawl results, form tests, backup checks, changelog, plugin notes, redirect checks, tracking checks, DNS or email checks, accessibility checks, launch checklist, and handoff notes."
            }
        },
        {
            "@type": "Question",
            "name": "What gets proven before cutover?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Cutover normally waits on the agreed proof list: key page checks, form tests, redirects, backups, access notes, tracking checks, and visible review of the fix list. The exact proof depends on scope."
            }
        },
        {
            "@type": "Question",
            "name": "How is capacity handled?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "FunkPd is intentionally small. Nolan only accepts scope that can be finished properly. Urgent work can jump the queue when there is real outage risk, but reserved response windows belong to Site Ops Coverage."
            }
        },
        {
            "@type": "Question",
            "name": "Who owns the stack?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "You should own domains, hosting, analytics, backups, licenses, accounts, and credentials. FunkPd can work inside client-owned systems or hand systems over cleanly. No lock-in, no hostage accounts, no mystery stack."
            }
        },
        {
            "@type": "Question",
            "name": "Do you charge hourly?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes, for post-launch or out-of-scope work. Standard support is $175/hr CAD. WooCommerce and complex support is $225/hr CAD. Urgent or after-hours work is $325-$450/hr CAD with a 2-hour minimum when capacity exists."
            }
        },
        {
            "@type": "Question",
            "name": "What is not a fit?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Brand therapy, vague moodboards, committee-led redesign loops, social media calendars, ad management, endless revisions, no decision maker, and no clear business problem are not a fit."
            }
        },
        {
            "@type": "Question",
            "name": "What should I send through contact?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Send the site URL, failure, business risk, urgency, access status, current platform or host, known failures, and desired path."
            }
        }
    ]
}

            
    
        
        
        
    
    
(function(windowObj, documentObj) {
    const gtmId = "GTM-KLWPCVT";
    const metaPixelId = "682105530429747";
    const hubspotPortalId = "22219379";
    const clarityId = "";
    let userInteracted = false;
    let pendingTrackingStart = false;
    const interactionEvents = ['click', 'keydown', 'pointerdown', 'touchstart', 'wheel'];

    function loadGtm() {
        if (!gtmId) {
            return;
        }

        if (!windowObj.dataLayer) {
            windowObj.dataLayer = [];
        }

        windowObj.dataLayer.push({
            'gtm.start': new Date().getTime(),
            event: 'gtm.js'
        });

        const existingScript = documentObj.getElementById('gtm-loader-' + gtmId);

        if (existingScript) {
            return;
        }

        const firstScript = documentObj.getElementsByTagName('script')[0];
        const gtmScript = documentObj.createElement('script');
        gtmScript.async = true;
        gtmScript.src = 'https://www.googletagmanager.com/gtm.js?id=' + gtmId;
        gtmScript.id = 'gtm-loader-' + gtmId;

        if (firstScript && firstScript.parentNode) {
            firstScript.parentNode.insertBefore(gtmScript, firstScript);
        } else if (documentObj.head) {
            documentObj.head.appendChild(gtmScript);
        }
    }

    function loadMetaPixel() {
        if (!metaPixelId) {
            return;
        }

        if (windowObj.fbq && typeof windowObj.fbq === 'function') {
            windowObj.fbq('consent', 'grant');
            windowObj.fbq('track', 'PageView');
            return;
        }

        function createFbqQueue() {
            const queue = function() {
                if (queue.callMethod) {
                    queue.callMethod.apply(queue, arguments);
                } else {
                    queue.queue.push(arguments);
                }
            };
            queue.queue = [];
            queue.loaded = true;
            queue.version = '2.0';
            queue.callMethod = queue.callMethod || null;
            queue.push = queue;
            return queue;
        }

        const fbqQueue = createFbqQueue();
        windowObj.fbq = fbqQueue;
        windowObj._fbq = fbqQueue;

        const existingPixel = documentObj.getElementById('fb-pixel-loader');

        if (existingPixel) {
            return;
        }

        const pixelScript = documentObj.createElement('script');
        pixelScript.id = 'fb-pixel-loader';
        pixelScript.async = true;
        pixelScript.src = 'https://connect.facebook.net/en_US/fbevents.js';
        const firstScript = documentObj.getElementsByTagName('script')[0];

        if (firstScript && firstScript.parentNode) {
            firstScript.parentNode.insertBefore(pixelScript, firstScript);
        } else if (documentObj.head) {
            documentObj.head.appendChild(pixelScript);
        }

        windowObj.fbq('init', metaPixelId);
        windowObj.fbq('track', 'PageView');
    }

    function loadHubspot() {
        if (!hubspotPortalId) {
            return;
        }

        const existingHubspot = documentObj.getElementById('hs-script-loader');

        if (existingHubspot) {
            return;
        }

        const hubspotScript = documentObj.createElement('script');
        hubspotScript.id = 'hs-script-loader';
        hubspotScript.async = true;
        hubspotScript.defer = true;
        hubspotScript.src = '//js.hs-scripts.com/' + hubspotPortalId + '.js';
        const firstScript = documentObj.getElementsByTagName('script')[0];

        if (firstScript && firstScript.parentNode) {
            firstScript.parentNode.insertBefore(hubspotScript, firstScript);
        } else if (documentObj.head) {
            documentObj.head.appendChild(hubspotScript);
        }
    }

    function loadClarity() {
        if (!clarityId) {
            return;
        }

        if (windowObj.clarity && typeof windowObj.clarity === 'function') {
            return;
        }

        const existingClarity = documentObj.getElementById('clarity-loader');

        if (existingClarity) {
            return;
        }

        windowObj.clarity = windowObj.clarity || function() {
            (windowObj.clarity.q = windowObj.clarity.q || []).push(arguments);
        };

        const clarityScript = documentObj.createElement('script');
        clarityScript.id = 'clarity-loader';
        clarityScript.async = true;
        clarityScript.src = 'https://www.clarity.ms/tag/' + clarityId;
        const firstScript = documentObj.getElementsByTagName('script')[0];

        if (firstScript && firstScript.parentNode) {
            firstScript.parentNode.insertBefore(clarityScript, firstScript);
        } else if (documentObj.head) {
            documentObj.head.appendChild(clarityScript);
        }
    }

    const hasTrackingTargets = Boolean(gtmId || metaPixelId || hubspotPortalId || clarityId);

    function markUserInteraction() {
        if (userInteracted) {
            return;
        }

        userInteracted = true;

        for (const eventName of interactionEvents) {
            windowObj.removeEventListener(eventName, markUserInteraction);
        }

        if (pendingTrackingStart) {
            bootTracking();
        }
    }

    function startTracking() {
        if (windowObj.funkpdTrackingLoaded) {
            return;
        }

        windowObj.funkpdTrackingLoaded = true;
        loadGtm();
        loadMetaPixel();
        loadClarity();
    }

    function bootTracking() {
        if (!hasTrackingTargets) {
            return;
        }

        if (!userInteracted) {
            pendingTrackingStart = true;
            return;
        }

        pendingTrackingStart = false;
        startTracking();
        loadHubspot();
    }

    windowObj.funkpdLoadTracking = bootTracking;

    windowObj.funkpdUnloadTracking = function() {
        const removableScriptIds = [
            'gtm-loader-' + gtmId,
            'fb-pixel-loader',
            'hs-script-loader',
            'clarity-loader'
        ];

        if (windowObj.clarity && typeof windowObj.clarity === 'function') {
            try {
                windowObj.clarity('consent', false);
                windowObj.clarity('stop');
            } catch (error) {}
        }

        for (const scriptId of removableScriptIds) {
            const node = documentObj.getElementById(scriptId);
            if (node && node.parentNode) {
                node.parentNode.removeChild(node);
            }
        }

        const gtmIframe = documentObj.querySelector('iframe[src*="googletagmanager.com/ns.html"]');
        if (gtmIframe && gtmIframe.parentNode) {
            gtmIframe.parentNode.removeChild(gtmIframe);
        }

        const fbNoscript = documentObj.querySelector('img[src*="facebook.com/tr?id="]');
        if (fbNoscript && fbNoscript.parentNode && fbNoscript.parentNode.parentNode) {
            fbNoscript.parentNode.parentNode.removeChild(fbNoscript.parentNode);
        }

        const hubspotFrame = documentObj.getElementById('hubspot-messages-iframe-container');
        if (hubspotFrame && hubspotFrame.parentNode) {
            hubspotFrame.parentNode.removeChild(hubspotFrame);
        }

        windowObj.funkpdTrackingLoaded = false;
        windowObj.dataLayer = [];
        windowObj.fbq = function() {};
        windowObj._fbq = null;
        windowObj.clarity = function() {};
        windowObj.clarity.q = [];
        pendingTrackingStart = false;
    };

    for (const eventName of interactionEvents) {
        windowObj.addEventListener(eventName, markUserInteraction, {
            once: true,
            passive: true
        });
    }
})(window, document);


(function(windowObj, documentObj) {
    const consentKey = 'funkpdAnalyticsConsent';
    const consentAllowedValue = 'allow';
    const consentDeniedValue = 'deny';
    const consentBannerId = 'analytics-consent';
    const consentButtonId = 'analytics-consent-button';
    let banner = null;
    let button = null;
    let trackingActive = true;
    let savedConsent = null;

    function setButtonState(isActive) {
        if (!button) {
            return;
        }

        button.textContent = isActive ? 'Turn off cookies' : 'Turn on cookies';
        button.setAttribute('aria-pressed', isActive ? 'true' : 'false');
    }

    function readStoredConsent() {
        try {
            return windowObj.localStorage.getItem(consentKey);
        } catch (error) {
            return null;
        }
    }

    function storeConsentAllowed() {
        try {
            windowObj.localStorage.setItem(consentKey, consentAllowedValue);
        } catch (error) {}
    }

    function storeConsentDenied() {
        try {
            windowObj.localStorage.setItem(consentKey, consentDeniedValue);
        } catch (error) {}
    }

    function activateTracking() {
        if (trackingActive) {
            storeConsentAllowed();
            if (typeof windowObj.funkpdLoadTracking === 'function') {
                windowObj.funkpdLoadTracking();
            }
            if (windowObj.clarity && typeof windowObj.clarity === 'function') {
                try {
                    windowObj.clarity('consent', true);
                } catch (error) {}
            }
            setButtonState(true);
            return;
        }

        trackingActive = true;

        if (typeof windowObj.funkpdLoadTracking === 'function') {
            windowObj.funkpdLoadTracking();
        }

        storeConsentAllowed();
        if (windowObj.clarity && typeof windowObj.clarity === 'function') {
            try {
                windowObj.clarity('consent', true);
            } catch (error) {}
        }
        setButtonState(true);
    }

    function deactivateTracking() {
        if (!trackingActive) {
            storeConsentDenied();
            setButtonState(false);
            return;
        }

        trackingActive = false;

        if (windowObj.clarity && typeof windowObj.clarity === 'function') {
            try {
                windowObj.clarity('consent', false);
            } catch (error) {}
        }

        if (typeof windowObj.funkpdUnloadTracking === 'function') {
            windowObj.funkpdUnloadTracking();
        }

        storeConsentDenied();
        setButtonState(false);
    }

    function handleButtonClick() {
        if (trackingActive) {
            deactivateTracking();
            return;
        }

        activateTracking();
    }

    function initConsentUi() {
        banner = documentObj.getElementById(consentBannerId);
        button = documentObj.getElementById(consentButtonId);

        if (!banner || !button) {
            return;
        }

        banner.removeAttribute('hidden');
        button.addEventListener('click', handleButtonClick);
        setButtonState(trackingActive);
    }

    savedConsent = readStoredConsent();

    if (savedConsent === consentDeniedValue) {
        trackingActive = false;
    } else {
        trackingActive = true;
    }

    if (trackingActive) {
        activateTracking();
    }

    if (documentObj.readyState === 'loading') {
        documentObj.addEventListener('DOMContentLoaded', initConsentUi);
    } else {
        initConsentUi();
    }
})(window, document);



    
    


    

    Skip to content

        

    
        
    
    
        root / faq/index.php
    
    Get Fixed Scope



    

    
        Menu
        
            
        
    
    
        
            
                Main
                
                    
                        
                        
                    
                    Home
                
                
                    
                        
                        
                        
                    
                    Start Here
                
                
                    
                        
                        
                        
                    
                    Rescue
                
                
                    
                        
                        
                        
                    
                    Builds
                
                
                    
                        
                    
                    Stabilization
                
                
                    
                        
                        
                    
                    Work
                
                
                    
                        
                        
                    
                    Pricing
                
                
                    
                        
                    
                    Contact
                
            

            
                Resources
                
                    
                        
                        
                    
                    Service Map
                
                
                    
                        
                        
                    
                    Nolan
                
                
                    
                        
                        
                        
                    
                    Process
                
                
                    
                        
                        
                    
                    Blog
                
                
                    
                        
                    
                    FAQ
                
                
                    
                        
                        
                        
                        
                    
                    Glossary
                
            

            
            
            
                    
        
            Status
            No alerts. Form updates show here.
        
    


    
        FAQ for builds, fixes, scope, pricing, ownership, and support.Short answers before you buy. FunkPd builds new WordPress systems, fixes broken ones, stabilizes fragile setups, and starts with diagnosis when the path is unclear.Get Fixed ScopePricingBuild, rescue, maintenance, audit, and system ranges stay separated.SupportAd hoc by default. Monthly only when risk justifies it.ProofEvery serious service states what evidence you receive.
        
                        
                Does FunkPd build new websites or only fix broken ones?
                Both. FunkPd builds new business-critical WordPress sites and systems, fixes broken or fragile existing sites, stabilizes risky setups, and diagnoses the right path when the answer is not obvious.
            
                        
                When should I choose rescue, rebuild, or new build?
                Choose rescue when the current site can be saved and the failure is active. Choose rebuild when the base is too fragile to keep patching. Choose new build when there is no safe owned base yet or the business needs a clean system from day one.
            
                        
                Can FunkPd help if another developer abandoned the project?
                Yes, if the work can be scoped and proven. Nolan starts by finding what exists, what is broken, who owns the accounts, what risk matters, and whether rescue, rebuild, stabilization, or a new build is the safer path.
            
                        
                Does FunkPd work with larger companies?
                Yes, when the scope is direct and the decision path is clear. Published work includes industrial, commercial, WooCommerce, catalog, workflow, and multi-site WordPress projects. Nolan still needs direct access to the right people and systems.
            
                        
                Does FunkPd work with small businesses?
                Yes, when the site or system matters enough to scope properly. FunkPd is not the cheapest path for a simple brochure site, but small companies can be a fit when ownership, lead flow, stability, or clean handoff matters.
            
                        
                Why not use Wix, Shopify, or an AI site builder?
                Fast cheap builders can work for simple cases. FunkPd is for companies that need ownership, control, proof, WordPress flexibility, and a system that will not collapse when the business depends on it.
            
                        
                Who actually does the work?
                Nolan handles diagnosis, scope, build, fixes, and handoff directly. There is no sales layer, project manager, or outsource chain between the buyer and the person doing the work.
            
                        
                What does proof before handoff mean?
                The agreed checks happen before the job closes. Depending on scope, that can include staging review, form tests, checkout tests, redirects, backups, speed checks, tracking checks, screenshots, changelog, access notes, and handoff notes.
            
                        
                What happens if the project is urgent?
                Urgent work is reserved for real business risk: site down, checkout broken, forms dead, malware visible, launch blocked, or revenue affected. If capacity exists, urgent rescue can jump the queue. Routine edits stay in the normal queue.
            
                        
                What if I am not sure what I need?
                Start with the site URL, goal, risk, deadline, and access status. If the path is unclear, the first paid step can be a diagnostic or blueprint before build, rescue, or stabilization work starts.
            
                        
                What is the best starting point?
                Send the site URL, failure, risk, access status, and deadline. Broken, hacked, crashed, unstable, checkout-blocking, or revenue-blocking sites route to Website Rescue. Sites not worth patching route to WordPress Rebuilds. Fragile but salvageable sites route to Stabilization.
            
                        
                How does pricing work?
                These are current CAD ranges. Website Rescue is $3,500-$8,500. Essentials Rebuild is $4,500-$9,500. Growth Rebuild is $9,500-$18,000. Stabilization Fix is $1,250-$2,500. Stabilization Sprint is $3,500-$7,500. Systems work is scoped separately. Final scope and price are written before work starts.
            
                        
                What is the difference between Stabilization and Website Rescue?
                Stabilization is the category for making a fragile site safe. Website Rescue is the flagship urgent paid product for failed builds, hacks, outages, unstable releases, and revenue-blocking failures. Smaller crash fixes can route to Stabilize Site or hourly support when that is safer.
            
                        
                Do you push monthly retainers?
                No. Stable low-risk sites should pay ad hoc through Web Maintenance. No monthly plan means no reserved capacity or guaranteed response window. Site Ops Coverage only fits when slow response would cost more than the plan.
            
                        
                Why can cheap patching cost more later?
                Cheap patching can hide the real failure. If the site has bad ownership, brittle plugins, no staging, weak backups, or broken checkout risk, the safer move is to stabilize or rebuild the base instead of adding another quick fix.
            
                        
                Does no forced retainer mean no support?
                No. It means support is matched to risk. Stable sites use ad hoc support. Sites where delay would cost more than coverage can use Site Ops Coverage with reserved capacity and defined response expectations.
            
                        
                What is Site Ops Coverage?
                Site Ops Coverage is monthly monitoring, checks, priority response, proof notes, and improvement work for justified risk. If nothing breaks, the site still gets better through cleanup, speed work, content edits, SEO fixes, tracking checks, documentation, backlog reduction, or risk reduction. It is not unlimited support and it is not 24/7 by default.
            
                        
                What counts as an emergency?
                Emergency routing is for real outages: site down, checkout broken, forms dead, visible malware, DNS or email failure, or a launch-critical page broken. Cosmetic edits, new features, and routine backlog items are not emergencies.
            
                        
                What proof do I get?
                The FunkPd Proof Pack depends on scope. It may include before and after screenshots, Lighthouse or WebPageTest results, crawl results, form tests, backup checks, changelog, plugin notes, redirect checks, tracking checks, DNS or email checks, accessibility checks, launch checklist, and handoff notes.
            
                        
                What gets proven before cutover?
                Cutover normally waits on the agreed proof list: key page checks, form tests, redirects, backups, access notes, tracking checks, and visible review of the fix list. The exact proof depends on scope.
            
                        
                How is capacity handled?
                FunkPd is intentionally small. Nolan only accepts scope that can be finished properly. Urgent work can jump the queue when there is real outage risk, but reserved response windows belong to Site Ops Coverage.
            
                        
                Who owns the stack?
                You should own domains, hosting, analytics, backups, licenses, accounts, and credentials. FunkPd can work inside client-owned systems or hand systems over cleanly. No lock-in, no hostage accounts, no mystery stack.
            
                        
                Do you charge hourly?
                Yes, for post-launch or out-of-scope work. Standard support is $175/hr CAD. WooCommerce and complex support is $225/hr CAD. Urgent or after-hours work is $325-$450/hr CAD with a 2-hour minimum when capacity exists.
            
                        
                What is not a fit?
                Brand therapy, vague moodboards, committee-led redesign loops, social media calendars, ad management, endless revisions, no decision maker, and no clear business problem are not a fit.
            
                        
                What should I send through contact?
                Send the site URL, failure, business risk, urgency, access status, current platform or host, known failures, and desired path.
            
                    

        
    
        Operator Identity
        Built and fixed by one person.
        You work with Nolan Phelps directly. He does the diagnosis, scope, build, fixes, and handoff himself.
        No sales layer. No project manager. No outsource chain.

        
            Since 2017
            Winnipeg
            WordPress rescue
        

        
            Start with the problem
            Meet Nolan
        
    

    
        
        Nolan Phelps
        FunkPd
    


    
        
            WordPress Risk Intake
            Get fixed scope for the build, fix, or stabilization.
            Share the goal, failure if there is one, risk, access status, and deadline. Typical response: 1 business day.
        
        
            Get Fixed Scope
            
                Call +1-431-813-2402
                Email contact@funkpd.com
            
            Operator response window: 1 business day.
        
    

    
        Since 2017 building, rescuing, rebuilding, and stabilizing WordPress systems.
        Delivery model: async execution with fixed-scope handoff.
        Coverage: Winnipeg HQ. Serving CA, US, and AU operators.
    

    
        
            Company
            
                About
                Nolan
                Process
                Contact
            
        

        
            Main Paths
            
                
                    Rescue
                    Contain failed builds, outages, hacks, and unsafe launches.
                
                
                    Builds
                    Build new sites and replace sites that are no longer worth patching.
                
                
                    Stabilize
                    Cut bloat, restore performance, and lower operating risk.
                
                
                    Systems
                    Custom systems for catalogs, commerce, integrations, and workflows.
                
            
        

        
            Resources
            
                Work
                Pricing
                Blog
                Services
                FAQ
                Glossary
                Health Check
            
        

        
            Credibility + Contact
            
                BBB Profile
                LinkedIn
                Crunchbase
                GitHub
                contact@funkpd.com
                +1-431-813-2402
                521 Washington Ave, Winnipeg, MB R2K 1M1, Canada
            
        
    

    
        © 2026 FunkPd. Senior WordPress build, rescue, stabilization, and systems work.
        
            Terms
            Privacy
            Sitemap
        
    

    


                
        Turn off cookies