MSPercury docs

Public CheckUp & widget setup

Step-by-step: from empty workspace to your own /check/your-shop landing page and a lead-magnet widget embedded on your marketing site. Total 5–10 minutes.

1. Set the slug

Go to /settings#publiccheckup. This is the only required configuration step — after this the CheckUp is live.

Type a slug. Lowercase, dashes, 3–40 chars. Example: your-shop produces https://mspercury.com/check/your-shop. Slugs are workspace-unique — if another tenant has already taken your preferred one, the system rejects it.

Save. The link appears immediately in the green block above the form and is live.

Go to /settings#branding:

  • Logo upload (PNG / JPEG / WebP / SVG, max 2 MB) — appears on the CheckUp landing page and on the final PDF report
  • Brand color (hex, e.g. #059669) — colors the CTA buttons, score card, and accent elements

Without these the CheckUp looks “MSPercury-default” instead of “your brand”.

3. Customise intro text (optional)

Below the slug field there’s a disclosure “Intro text (optional, per locale)”. Three textareas — DE / EN / ES.

Left blank, MSPercury renders a sensible default with your workspace name. If you have specific sales copy (“Get an honest read on your IT in under 3 minutes from ACME IT — free, no commitment”), drop it here.

You can override only one locale and leave the others blank — the default kicks in only for the un-overridden ones.

4. Edit the question catalog (optional)

Go to /catalog/findings?tab=public-questions.

Out of the box the MSPercury-curated catalog (~26 questions across 5 categories) is seeded. On your first visit it gets cloned into your workspace table — from then on it’s yours.

Per-question editable:

  • Stable key (internal, never renamed)
  • Question + help text in DE / EN / ES
  • Category dropdown
  • Weight slider (Secondary / Standard / Critical)
  • ↺ Risk-question toggle (for “Did you have an incident?” patterns where “yes” lowers the score)
  • ↳ Follow-up parent picker (question only appears when the parent has a specific answer)
  • ↑↓ reorder + delete + ”+ Question” per category

If you mess up: the “Reset to defaults” button at the top right (typed-RESET confirm gate) wipes your edits and reseeds the original.

In the green block at /settings#publiccheckup you see two things:

A — Direct link (e.g. https://mspercury.com/check/your-shop) Copy button next to it. Link from your email signature, LinkedIn bio, newsletter footer, business-card QR code, etc.

B — Iframe embed snippet for your marketing site:

<iframe src="https://mspercury.com/check/your-shop/embed"
        style="width:100%;min-height:780px;border:0"
        title="IT CheckUp" loading="lazy"></iframe>

Copy button to the right. Paste into wherever the CheckUp should live on your site. The embed endpoint is iframe-optimised (Content-Security-Policy: frame-ancestors *, X-Frame-Options: ALLOWALL) and carries the multi-step flow including PIN entry entirely INSIDE the iframe — the visitor never leaves your site.

Height tuning: 780px is enough for most steps. If you want to show the report or answer summary, that may need 900–1100px on some locales.

6. Add UTM tracking

Just append ?utm_source=…&utm_medium=…&utm_campaign=… to the iframe URL or direct link.

Examples:

  • Newsletter: …/check/your-shop?utm_source=newsletter&utm_medium=email&utm_campaign=q3-launch
  • Google ad: …/check/your-shop?utm_source=google&utm_medium=cpc&utm_campaign=brand
  • LinkedIn bio: …/check/your-shop?utm_source=linkedin&utm_medium=bio

MSPercury captures on first hit (first-touch) automatically via signed cookie:

  • utm_source, utm_medium, utm_campaign, utm_content, utm_term
  • referrerHost (the domain the click came from, when the browser sends the header)
  • sourceUrl (full landing URL with query string)

First-touch wins: a returning visitor with a different UTM doesn’t overwrite the original channel. You see the values later on /leads/[id] in the “Source” card and as a “Top sources” strip on /leads.

7. The prospect’s experience

From the prospect’s POV:

  1. Landing → enter email → 6-digit code by email
  2. Enter code → 23 questions with live-score display + progress bar
  3. “About you” — 4 fields (company, industry, size, optional phone)
  4. Privacy checkbox → Submit
  5. Score reveal with maturity badge (🥇 Gold / 🥈 Silver / 🥉 Bronze / 🚨 Acute), position bar 0–100, score explanation, optional cross-tenant benchmark, per-category breakdown
  6. PDF report is sent by email (background)

From the operator’s POV: the lead lands in /leads as a new entry in the “New” column of the kanban, with all answers, score breakdown, industry/size, and the UTM/source attribution.

8. Lead-to-customer flow

On /leads/[id]:

  • Pipeline status: New → Contacted → Proposal → Customer / Rejected
  • ”✨ Draft outreach email” — AI builds you a personalised first-contact email (see Features → AI outreach drafter)
  • ”→ Convert to customer” — turns the lead into a customers row, keeps the link via convertedCustomerId

Drag-and-drop: lead cards on /leads move between kanban columns by drag — status updates automatically.

GDPR / privacy notes

  • On submit, MSPercury captures consent timestamp + IP + user agent (Art. 7 GDPR proof requirement)
  • Lead data lives ONLY in your workspace DB (strict tenant isolation)
  • Cross-tenant benchmark on the score page is the ONE documented exception — aggregate, anonymous, hard minimum sample size before any number is shown
  • GDPR notice for your website: mention MSPercury processing in your privacy policy as a sub-processor (DPA template at /legal/dpa)

Common gotchas

“Iframe doesn’t load / shows blank”: check your marketing site’s Content-Security-Policy header. If it has frame-src 'self', you need to whitelist https://mspercury.com.

“Verification email doesn’t arrive”: spam folder. MSPercury sends from noreply@mspercury.com with your operator name as display name — some filters score that as “phishing-like”.

“Lead score swings between tests”: reminder — follow-up questions can shift the score significantly. If a test lead answers “MFA = no”, the phishing follow-up appears; its answer feeds the score too.

“My lead isn’t in the list”: check the pipelineStatus filter or ?source=… filter on /leads. Both can compose — accidentally-active filters are the most common cause.