skills/sales-mailgun/SKILL.md
Mailgun (Sinch) platform help — developer-first transactional email API and SMTP relay with inbound routing, webhooks, and Mailgun Optimize deliverability tools. Use when Mailgun emails not delivering, DNS records (DKIM/SPF) failing verification, inbound routing not catching messages, webhooks not firing, templates rendering wrong, Mailgun Optimize showing poor inbox placement, or API calls returning errors. Do NOT use for general email deliverability strategy (use /sales-deliverability), cross-platform email marketing (use /sales-email-marketing), or email open/click tracking strategy (use /sales-email-tracking).
npx skillsauth add sales-skills/sales sales-mailgunInstall 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 with Mailgun (Sinch) platform questions — from sending transactional email via the REST API and SMTP relay through Inbound Email Routing, Templates, Mailing Lists, Domains, Routes, Webhooks, Metrics, and Mailgun Optimize. Mailgun is a developer-first transactional email API service founded in 2010 by Ev Kontsevoy and Taylor Wakefield, acquired by Rackspace (2012), Thoma Bravo (2019), and Sinch (2021). Josh Odom is President of the Sinch Developer & Email unit.
If references/learnings.md exists, read it first for accumulated knowledge.
Ask the user:
What area of Mailgun do you need help with?
POST /v3/{domain}/messages) or SMTP relayWhat's your role?
What are you trying to accomplish? (describe your specific goal or question)
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.
Note: If the user needs a specialized skill, route them there with a brief explanation of why that skill is a better fit.
If the request maps to a specialized skill, route:
/sales-deliverability/sales-email-marketing/sales-email-tracking/sales-sendgrid/sales-postmark/sales-integration/sales-funnelOtherwise, answer directly from platform knowledge using the reference below.
Read references/platform-guide.md for detailed module documentation, pricing, integrations, and data model.
You no longer need the platform guide details — focus on the user's specific situation.
Based on the user's specific question:
Sending transactional email via the API:
include:mailgun.org, DKIM CNAME/TXT)GET /v3/domains/{domain}POST /v3/{domain}/messages with Basic Auth (api:YOUR_API_KEY), passing from, to, subject, and text/html fields/messages endpoints only for securityo:tag) and custom variables (v:my-var) for tracking and analyticsGET /v3/{domain}/events) or set up webhooks for real-time notificationsSetting up inbound email routing:
POST /v3/routes) or UI — define a match expression and actionmatch_recipient("[email protected]"), match_header("subject", ".*order.*"), catch_all()forward("https://yourapp.com/webhook"), forward("[email protected]"), store(notify="https://yourapp.com/notify")Setting up domain-level templates:
POST /v3/{domain}/templates with name, description, and initial version content{{first_name}}, {{order_number}}, {{items}}template parameter with the template name and h:X-Mailgun-Variables with the JSON data objectConfiguring webhooks for delivery tracking:
POST /v3/domains/{domain}/webhooks (or the newer POST /v4/domains/{domain}/webhooks, which supports up to 3 URLs per event type) with the event type (e.g., delivered, opened, permanent_fail) and your endpoint URLUsing Mailgun Optimize for deliverability:
GET /v4/address/[email protected] — returns risk level (deliverable, undeliverable, risky, unknown)Best-effort from research — review these, especially items about plan-gated features and integration gotchas that may be outdated.
https://api.mailgun.net/v3/, EU domains use https://api.eu.mailgun.net/v3/. Once a domain is created in a region, it cannot be moved to the other. If you need EU data residency for GDPR compliance, create the domain in the EU region from the start. Using the wrong base URL will return authentication errors that can be confusing to debug./messages endpoints for security isolation. Using a Domain Sending Key for other API calls will return 401 errors.references/learnings.md with today's date./sales-deliverability — Cross-platform email deliverability — SPF/DKIM/DMARC, warmup, inbox placement/sales-email-marketing — Opt-in email marketing strategy across tools/sales-email-tracking — Email engagement tracking strategy/sales-integration — Connect Mailgun to CRM, Slack, or other tools via webhooks/Zapier/sales-sendgrid — SendGrid platform help — primary Mailgun competitor/sales-postmark — Postmark platform help — primary Mailgun competitor/sales-customerio — Customer.io platform help — uses Mailgun-like APIs for transactional/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-doUser says: "I need to send password reset and order confirmation emails from my Node.js app using Mailgun." Skill does:
include:mailgun.org), and DKIM DNS recordsmailgun.js SDK: initialize with API key and domain, then call mg.messages.create() with from, to, subject, html/text{{reset_url}}, {{expiry_minutes}}) and one for order confirmation ({{order_number}}, {{items}}, {{total}})delivered, permanent_fail, and complained events to monitor delivery health and trigger alerts
Result: User has production-ready transactional email with templates, scoped API keys, proper DNS authentication, and delivery monitoringUser says: "We want to receive customer reply emails at [email protected] and forward them to our ticketing webhook." Skill does:
ourdomain.com pointing to Mailgun's inbound serversmatch_recipient("[email protected]") with action forward("https://app.ourdomain.com/api/tickets/inbound")catch_all() to store unmatched inbound email for 3 days (store(notify="https://app.ourdomain.com/api/catchall")) so nothing is silently droppedUser says: "Our Mailgun emails are landing in spam at Gmail. How do we diagnose and fix this?" Skill does:
complained webhook events to identify content or recipients generating spam complaints
Result: User identifies the root cause of spam placement (e.g., missing DMARC, blocklisted IP, high bounce rate) and has a concrete remediation plan with ongoing monitoringSymptom: API calls return 401 Unauthorized for endpoints like GET /v3/domains or POST /v3/routes, but sending email works fine
Cause: Domain Sending Keys are restricted to /messages endpoints only. They cannot be used to manage domains, routes, webhooks, mailing lists, or any other Mailgun resource. This is by design for security isolation.
Solution: Use your main API key (found in the Mailgun dashboard under API Security) for non-sending operations. Reserve Domain Sending Keys for production sending code only. If you need to manage resources programmatically, store the main API key securely in environment variables and use it for admin operations in a separate service or deployment pipeline.
Symptom: You configured webhooks in Mailgun but your endpoint is not receiving any events — no requests appear in your server logs Cause: Common causes include: (1) the webhook URL is not publicly accessible (localhost or behind a firewall), (2) the endpoint is returning non-2xx status codes causing Mailgun to back off after retries, (3) the webhook was configured for the wrong domain, or (4) the events are not being generated (e.g., open/click tracking is not enabled). Solution: Verify your endpoint is publicly accessible — use a tool like ngrok for local development. Check the Mailgun dashboard under Sending > Webhooks for delivery status and recent attempts. Ensure your endpoint returns a 200 status code quickly (within a few seconds). Confirm the webhook is configured for the correct domain. For open/click events, verify tracking is enabled in domain settings. Test with a simple endpoint (e.g., webhook.site) to isolate whether the issue is with Mailgun's delivery or your endpoint's handling.
Symptom: API calls return 404 or authentication errors when trying to send email, even though the domain is verified and the API key is correct
Cause: The domain was created in one region (US or EU) but the API calls are being made to the other region's base URL. US domains must use https://api.mailgun.net/v3/, EU domains must use https://api.eu.mailgun.net/v3/. Domains cannot be moved between regions after creation.
Solution: Check which region your domain is in via the Mailgun dashboard (look for the region indicator on the domain page). Update your API base URL to match the domain's region. If you need to switch regions (e.g., for GDPR compliance), you must delete the domain and recreate it in the correct region — then re-verify DNS records. Update all application configuration, environment variables, and SDK initialization to use the correct regional URL.
tools
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).