skills/sales-qwilr-automation/SKILL.md
Builds automations connecting Qwilr to CRM and other tools via API, Zapier, or native integrations. Use when reps manually copy deal data into proposals, Qwilr and your CRM are out of sync, proposal status isn't updating in Salesforce or HubSpot, you want proposals auto-created when deals hit a stage, or webhooks aren't triggering on proposal views or acceptance. Do NOT use for writing proposal content (use /sales-proposal-page), designing reusable templates (use /sales-proposal-template), or interpreting engagement signals (use /sales-proposal-analytics).
npx skillsauth add sales-skills/sales sales-qwilr-automationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Help the user build automations that connect Qwilr to their CRM and other tools — via the Qwilr REST API, Zapier, or native integrations.
The Qwilr REST API lets you create pages from saved blocks with token substitutions, manage quote sections with interactive pricing, and subscribe to webhooks for real-time engagement signals.
Quick reference: Base URL https://api.qwilr.com/v1, JWT Bearer auth. Key endpoints: POST /pages (create), GET /blocks/saved (discover templates), POST /webhooks (subscribe to events).
For the complete API reference — endpoints, curl examples, token mapping, quote block structure, and testing checklist — consult references/qwilr-api-reference.md.
If references/learnings.md exists, read it first for accumulated knowledge.
Ask the user:
What do you want to automate?
What CRM/tools are you using?
What automation platform do you prefer?
What Qwilr plan are you on? (affects API access and native integrations)
If the user's request already provides most of this context, skip directly to the relevant step. Lead with your best-effort answer using reasonable assumptions (stated explicitly), then ask only the most critical 1-2 clarifying questions at the end — don't gate your response behind gathering complete context.
Based on the user's answers, recommend the right approach with trade-offs:
The build process follows four stages. For curl examples, JSON payloads, and token mapping details, consult references/qwilr-api-reference.md.
List saved blocks via GET /blocks/saved to find the block id values for page creation.
Use POST /pages with either a templateId or a blocks array. Pass CRM field values in a single top-level substitutions object (the API calls variables "substitutions", not "tokens"), set published (not isPublished), and put quote sections INSIDE a saved block for interactive pricing. See references/qwilr-api-reference.md for the exact field names.
Subscribe to pageFirstViewed, pageViewed, pageAccepted, and pagePartiallyAccepted events to get real-time engagement signals.
Use GET /pages/{id}?expand=acceptance,metadata to poll page details and acceptance status.
Design the mapping between CRM fields and Qwilr template tokens. Common tokens include {{company_name}}, {{contact_first_name}}, {{deal_amount}}, {{rep_name}}, etc. For the full token reference and guidelines, see references/qwilr-api-reference.md.
Key principles:
{{token}} textWalk through end-to-end before going live: auth verification, block discovery, token rendering, quote block accuracy, webhook delivery, CRM sync, error handling, and publish flow. Full checklist in references/qwilr-api-reference.md.
Three common patterns (detailed implementation in references/qwilr-api-reference.md):
POST /pages → update CRM with Qwilr URLpageFirstViewed webhook → Slack message → rep follows uppageAccepted webhook → update deal stage to Closed Won → trigger onboardingDon't overcomplicate with custom API when Zapier works. If the user's automation is a simple trigger-action (deal hits stage → create proposal), Zapier or the native integration is faster to set up and maintain. Reserve direct API work for custom logic, high volume, or complex conditional workflows.
Don't forget webhook retry and deduplication. Qwilr webhooks may retry on failure, sending the same event multiple times. Any webhook handler must be idempotent — check for duplicate event IDs before processing. Claude often generates webhook handlers without this.
Don't assume CRM field names without checking. Salesforce custom fields end in __c, HubSpot uses internal property names that differ from display names, and Pipedrive uses custom field keys. Always tell the user to verify their actual field names/IDs before building the mapping.
Don't skip testing with sandbox/test data. Claude tends to generate API code that goes straight to production. Always recommend creating test pages with published: false first, using test deals in the CRM, and verifying substitutions render correctly before going live.
Substitutions are strings only. Qwilr applies no formatting to variable values — dates and numbers must be passed as the exact final string (e.g. "$48,000", "March 30, 2026"). Format CRM values before sending; omitted variables render as empty strings.
API is plan-gated and paid. Per Qwilr's docs and API page, API access requires an Enterprise account with API access enabled and extra fees apply (contact Qwilr sales). Confirm the user has API access before recommending a direct-API build; otherwise steer to native integrations or Zapier.
Don't hardcode API tokens in scripts. Use environment variables ($QWILR_TOKEN) for authentication. Claude sometimes generates examples with placeholder tokens inline — make sure the user knows to use env vars or a secrets manager.
Self-improving: If you discover something not covered here, append it to references/learnings.md with today's date.
User says: "When a deal moves to 'Proposal' stage in HubSpot, I want a Qwilr proposal created automatically and the link written back to the deal."
Skill does:
company_name, contact_first_name, deal_amount, rep_name), warning that HubSpot internal property names differ from display names.POST /pages with a templateId and a top-level substitutions object (strings only, with fallback values), set to published: false for testing first.Result: Each deal entering Stage 3 gets a pre-filled Qwilr proposal, with its URL on the deal record — no manual copy-paste.
User says: "I want a Slack ping when someone opens my proposal, and the deal to move to Closed Won when they accept it."
Skill does:
POST /webhooks — pageFirstViewed for the view signal and pageAccepted for acceptance.pageFirstViewed to a Slack message so the rep can follow up promptly.pageAccepted to update the CRM deal stage to Closed Won and trigger onboarding.Result: Real-time view alerts in Slack and automatic Closed Won updates, with no duplicate Slack pings or double deal-stage changes.
{{token}} text instead of valuesCause: A substitution variable was omitted, misnamed, or sent with no fallback — Qwilr leaves unmatched tokens visible and renders omitted variables as empty strings.
Solution: Verify every template token has a matching key in the top-level substitutions object, pass values as preformatted strings (e.g. "$48,000", since Qwilr applies no number/date formatting), and set fallback values for optional tokens so nothing shows as raw {{token}}.
Cause: Qwilr retries webhook delivery on failure, so the same pageViewed/pageAccepted event can arrive more than once, and a non-idempotent handler reprocesses it.
Solution: Make the handler idempotent — store and check the event ID before processing, and skip events already seen so Slack pings and CRM updates fire exactly once.
Cause: The Qwilr REST API is plan-gated — it requires an Enterprise account with API access enabled (extra fees apply) — or the JWT Bearer token is missing/invalid.
Solution: Confirm the account has API access enabled before recommending a direct-API build; otherwise steer to the native CRM integration or Zapier. Supply the JWT as a Bearer token from an environment variable ($QWILR_TOKEN), never hardcoded in scripts.
/sales-proposal-page — Write the actual proposal content and quote block design/sales-proposal-analytics — Interpret engagement signals and decide follow-up actions/sales-proposal-template — Design reusable templates for API auto-population/sales-deal-room — For complex multi-page deal rooms/sales-do — Not sure which skill to use? The router matches any sales objective to the right skill. Install: npx skills add sales-skills/sales --skill sales-dotools
Wizlogo (wizlogo.com) platform help — a budget online logo maker (template/style-variation, marketed as "AI") plus a hub of FREE branding tools (business-name, blog-name and slogan generators, business-card maker, invoice generator, color converter, domain search). The pricing traps: the FREE logo is PERSONAL-USE-ONLY; the two cheap paid tiers are RASTER PNG/JPG only — Single (~€39.99 one-time) and Unlimited (~€3.99 per WEEK, recurring) — and VECTOR (SVG/PDF/EPS) is gated to the ~€299.99 Enterprise tier, which also bundles human designer edits and a social kit. Transparent PNG is on all paid plans. Use when making a Wizlogo logo, understanding free-vs-paid or personal-vs-commercial use, which tier unlocks vector/SVG for print, the weekly-subscription billing trap, its free name/slogan generators, or whether it has an API (UI-only — no public API, webhooks, Zapier or MCP). Do NOT use to just generate the business name (use /sales-namelix) or to compare/validate branding tools (use /sales-idea-validation).
tools
VistaPrint platform help (vistaprint.com, a Cimpress company) — the small-business design + print + digital-marketing platform: a free AI Logomaker (4 generations, 60 more after free sign-up) exporting SVG/PNG/PDF at 4000x4000 with no watermark, a free Brand Kit, business cards/flyers/signage/apparel/promo print, and a website builder. THE RIGHTS TRAP: VistaPrint states NO intellectual-property rights transfer on an AI-generated logo — you get usage rights but CANNOT register it for trademark or copyright; only its human designer service transfers full IP. Use when making a VistaPrint logo, asking if you own or can trademark it, running out of AI logo credits, printed colors not matching the screen, bleed/DPI/font file-prep rejections, or asking whether VistaPrint has an API (the consumer site does not — automation runs through the parent Cimpress Open partner-fulfilment API). Do NOT use for Vista Social scheduling (use /sales-vistasocial) or comparing logo tools market-wide (use /sales-idea-validation).
tools
Turbologo (turbologo.com) platform help — a budget AI/DIY logo maker: enter a business name + industry, pick icons and colors, and it proposes logo concepts you refine in an in-browser editor, then pay a one-time fee to download (designing is free, previews are watermarked, downloading is the paywall). Vector SVG/PDF is gated to the mid tier and up; the top tier adds a brand kit (business cards, letterheads, email signatures, social assets). Use when generating a logo in Turbologo, choosing which download tier to buy, vector SVG vs raster PNG, removing the free watermark, the time-limited edit-after-purchase window, pay-to-download pricing questions, whether an AI logo is yours to trademark, or whether Turbologo has an API to bulk-generate logos (it is UI-only — no public API, webhooks, Zapier, or MCP). Do NOT use to generate the business name (use /sales-namelix), compare or validate branding tools across the market (use /sales-idea-validation), or build wider marketing creative (use /sales-canva).
tools
Online Logo Maker (onlinelogomaker.com) platform help — a long-standing free/freemium DIY logo maker: build the mark yourself from icons, shapes, text, and fonts — MANUAL/template-based, NOT enter-a-name-get-AI-concepts. The free pack downloads a LOW-RES 300px PNG with a background; vector SVG, transparent PNG, and 2000px high-res are gated to a one-time lifetime Premium pack (not a subscription). The free tier's commercial-use rights are disputed by reviewers — clean ownership effectively needs Premium, and a shared-icon mark can be non-distinctive. Use for building/editing a logo here, free download vs Premium, vector SVG or transparent PNG, one-time pricing, commercial-use/trademark terms, near-namesake confusion (NOT LogoMaker.com / LogoMakr / Logomakerr.ai), or whether it has an API (UI-only — no API, webhooks, Zapier, MCP). Do NOT use to generate the business name (use /sales-namelix), compare branding tools across the market (use /sales-idea-validation), or build wider creative (use /sales-canva).