プロファイル:ネイサン・バリーが年間3,800万ドル($38M)のニュースレタープラットフォームを構築(個人事業主からスタート)
月商 — · 創業者—人 · 従業員—人 · —
—(—)· 創業 — · 記事掲載 November 13th, 2023 · — · 元の記事
創業者が元々ウェブデザイナーであり、Mailchimpの不満からアイデアを得た。創業者は自身がプロのブロガーに直接アプローチして移行支援を行い、その後アフィリエイトプログラムで大きく成長。2016年には月商50万ドル、2023年には年商3,800万ドル($38M)に達したと複数の情報源で言及されており、従業員数については記事では触れられていない
売値の出典: 記事の本文(2023年時点)。プランごとの詳細な機能は公式サイト参照(1ドル150円で換算)(2026-10-14 取得)
Nathan Barry is the founder and CEO of ConvertKit. He has always been passionate about creating visually stunning designs. Initially, he started working as a web and software designer but later developed a keen interest in audience building. This passion drove him to establish ConvertKit, which he currently heads.
Creators need email automation, and monetization tools that work together to drive continuous growth.
In 2013, Nathan set a challenge for himself: build a $5K/mo SaaS in 6 months with just $5,000. He got the idea after reading people's complaints about Mailchimp online, and decided to build a product that addressed those.
ConvertKit initially struggled to grow, stalling at $2,000 MRR. Hiten Shah advised Nathan to either shut down or invest heavily. Nathan focused sharply on professional bloggers, investing $50,000 and building a dedicated team. This pivot, coupled with direct sales and an emphasis on customer care through concierge migrations, sparked growth. By leveraging customer referrals and launching an affiliate program, ConvertKit rapidly scaled, reaching $500,000 MRR by 2016. Continuously innovating, such as with the 2017 redesign for visual automation, ConvertKit remains committed to serving creators independently, focusing on aiding them to earn a living.
The product launched after validating demand with a landing page and a waitlist generated through blog content related to email marketing philosophy. Nathan charged customers from day one without offering freemium or extended free trials, targeting a niche of creators who already had audiences and needed professional email marketing tools.
Initially, Nathan directly outreached to online creators and bloggers, offering to manually help them migrate from their previous email marketing platform to address the main objection. Affiliate programs then became a core part of how ConvertKit made money and scaled beyond a 1000 customers, with a forever ongoing 30% revenue share on each month a referral is using ConvertKit.
Convertkit has 3 plans: Free, Creator ($9/mo), and Creator Pro ($29/mo).
Nathan Barry learned the importance of validating a product idea before building it, focusing on a specific niche instead of chasing broad markets, and maintaining customer retention through excellent direct human support. He also emphasized working sustainably without venture capital to avoid pressure for hyper-growth that can harm product quality and customer satisfaction.
Stripe Payments 782 using WordPress Blog 675 using Zapier Other 335 using newDocumentReady(function () { $(".database-result-bottom").unbind().click(function() { $(this).find(".database-result-bottom-contents").toggle(); }) // Mobile DB view toggle — switch between the compact row list (default) // and the rich card view, remembered in localStorage. Instant, no reload. // Leading ';' guards against ASI: the preceding statement ends in `})`. ;(function () { var group = document.querySelector('.db-view-toggle-group'); if (!group) return; var rowsPanel = document.getElementById('db-view-rows'); var cardsPanel = document.getElementById('db-view-cards'); function applyView(view) { var isCards = view === 'cards'; if (cardsPanel) cardsPanel.classList.toggle('hidden', !isCards); if (rowsPanel) rowsPanel.classList.toggle('hidden', isCards); group.querySelectorAll('.db-view-toggle').forEach(function (b) { b.classList.toggle('db-view-toggle-active', b.dataset.view === view); }); } var saved = 'rows'; try { saved = window.localStorage.getItem('dbMobileView') || 'rows'; } catch (e) {} applyView(saved === 'cards' ? 'cards' : 'rows'); group.querySelectorAll('.db-view-toggle').forEach(function (b) { b.addEventListener('click', function () { var v = b.dataset.view; try { window.localStorage.setItem('dbMobileView', v); } catch (e) {} applyView(v); }); }); })(); // Search UX: debounced auto-submit + global "/" focus shortcut. // Server-side pg_search is GIN-indexed and returns in <50ms; combined // with the page render, total feedback after the debounce window is // ~500ms — close enough to "live" without an XHR/Turbo refactor. var searchInput = document.getElementById('search'); if (searchInput) { var debounceTimer = null; var lastSubmittedValue = searchInput.value; searchInput.addEventListener('input', function () { clearTimeout(debounceTimer); debounceTimer = setTimeout(function () { // Don't submit if the value hasn't changed (e.g. arrow keys). if (searchInput.value === lastSubmittedValue) return; lastSubmittedValue = searchInput.value; searchInput.form && searchInput.form.submit(); }, 350); }); // Enter still submits immediately — short-circuits the debounce. searchInput.addEventListener('keydown', function (e) { if (e.key === 'Enter') { e.preventDefault(); clearTimeout(debounceTimer); searchInput.form && searchInput.form.submit(); } }); } // Global "/" shortcut to focus search — GitHub/Linear pattern. document.addEventListener('keydown', function (e) { if (e.key !== '/' || e.metaKey || e.ctrlKey || e.altKey) return; var t = e.target; if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable)) return; var s = document.getElementById('search'); if (s) { e.preventDefault(); s.focus(); s.select(); } }); function prettySliderValue(func, value) { var n = Math.round(Number(value)); if (func == "money") { if (n >= 1000000000) return "$" + (n / 1000000000).toFixed(n % 1000000000 === 0 ? 0 : 1) + "B"; if (n >= 1000000) return "$" + (n / 1000000).toFixed(n % 1000000 === 0 ? 0 : 1) + "M"; if (n >= 1000) return "$" + (n / 1000).toFixed(n % 1000 === 0 ? 0 : 1) + "K"; return "$" + numberWithCommas(n); } else if (func == "daystomonths") { return (n / 30) + " months"; } else if (func == "hours") { return n + " hours"; } else { return n; } } function getInitialSliderValues(el) { var initial = el.dataset.initial; var defMin = Number(el.dataset.defaultmin); var defMax = Number(el.dataset.defaultmax); if (initial) { var parts = initial.split("|"); var a = parts[0] === "" ? defMin : Number(parts[0]); var b = parts[1] === "" ? defMax : Number(parts[1]); return [a, b]; } return [defMin, defMax]; } function createTwoProngedSlider(id) { var el = document.querySelector(id); if (!el || el.noUiSlider) return; var min = Number(el.dataset.min); var max = Number(el.dataset.max); var step = Number(el.dataset.step); var cleanfunc = el.dataset.cleanfunc; var values = getInitialSliderValues(el); var container = el.closest(".range-filter") || el.parentElement; var input = container.querySelector('input[type="hidden"]'); var label = container.querySelector(".preview-label"); noUiSlider.create(el, { start: values, connect: true, step: step, range: { min: min, max: max }, behaviour: "tap-drag" }); el.noUiSlider.on("update", function(vals) { var lo = Math.round(Number(vals[0])); var hi = Math.round(Number(vals[1])); if (label) label.textContent = prettySliderValue(cleanfunc, lo) + " – " + prettySliderValue(cleanfunc, hi); if (input) input.value = lo + "|" + hi; }); el.noUiSlider.on("change", function() { var form = el.closest("form"); if (form) form.submit(); }); } createTwoProngedSlider("#revenue-slider"); createTwoProngedSlider("#starting-costs-slider"); createTwoProngedSlider("#time-to-revenue-slider"); createTwoProngedSlider("#min-hours-per-week"); createTwoProngedSlider("#market-size"); createTwoProngedSlider("#startup-costs"); createTwoProngedSlider("#case-studies"); $(".mobile-filters-applied-button").click(function() { $(".database-filters").addClass("inView") }) $(".close-mobile-filters").click(function() { $(".database-filters").removeClass("inView") }) // Explore "More filters" — reveal/hide the secondary filter pills. var moreFiltersToggle = document.getElementById("explore-more-filters-toggle"); if (moreFiltersToggle) { moreFiltersToggle.addEventListener("click", function () { var panel = document.querySelector(".explore-secondary-filters"); if (!panel) return; var nowHidden = panel.classList.toggle("hidden"); moreFiltersToggle.setAttribute("aria-expanded", String(!nowHidden)); }); } // Infinite scroll lives in its OWN init block below (initSSInfiniteScroll), // deliberately decoupled from this newDocumentReady callback. Anything that // throws above (a slider lib that didn't load from CDN, a jQuery plugin, // etc.) would otherwise abort the rest of THIS callback and silently kill // infinite scroll — the "only works on a hard reload" bug. Keeping it // separate means nothing here can take it down. }); // ---- Infinite scroll (pro/admin/free-access; table + tile views) ---- // Driven off Kaminari's next-page URL, which the partial renders into // #infinite-scroll-sentinel only when the visitor is eligible. We fetch the // next full page, lift out the children of its .database-append-target // container (<tbody> rows for the table view, tiles for the grid views), // append them, then chain to that page's own sentinel URL. DOMParser does // NOT execute the fetched page's scripts, so only content nodes are added — // sliders/search/PostHog never re-run. The sentinel is absent for non-pro // visitors, so this whole block no-ops for them and their paywall is intact. // // Idempotent: guarded by sentinel.dataset.ssInfiniteInit so re-running on // pageshow (bfcache/back-forward restore, where DOMContentLoaded never fires) // can't double-observe an already-wired sentinel. function initSSInfiniteScroll() { var sentinel = document.getElementById('infinite-scroll-sentinel'); if (!sentinel || !sentinel.dataset.nextUrl) return; if (sentinel.dataset.ssInfiniteInit === '1') return; sentinel.dataset.ssInfiniteInit = '1'; // The "database" view renders TWO append targets — the mobile card list // and the desktop table tbody (one is display:none per viewport). Append // to both so infinite scroll works no matter which is visible. Tile views // have a single target. containers[0] drives the loaded-count readout. var containers = Array.prototype.slice.call(document.querySelectorAll('.database-append-target')); if (!containers.length) { delete sentinel.dataset.ssInfiniteInit; return; } var container = containers[0]; // Infinite scroll is live — hide the prev/next fallback for JS clients. var paginate = document.querySelector('.paginate'); if (paginate) paginate.style.display = 'none'; var numResults = document.querySelector('.num-results'); var loadingEl = sentinel.querySelector('.infinite-scroll-loading'); var nextUrl = sentinel.dataset.nextUrl; var loading = false; // Item nodes only — tile partials (e.g. _video) emit a sibling <style> // per render; those are global CSS we already have, so skip them when // appending and counting. function itemNodes(root) { return Array.prototype.filter.call(root.children, function (n) { return n.tagName !== 'STYLE' && n.tagName !== 'SCRIPT'; }); } function updateCount() { if (!numResults) return; var count = itemNodes(container).length; // Keep the "of N …" suffix; just bump the leading loaded-count. numResults.textContent = numResults.textContent.replace(/Showing\s+[\d,]+/, 'Showing ' + count.toLocaleString()); } function loadMore() { if (loading || !nextUrl) return; loading = true; if (loadingEl) loadingEl.style.display = ''; fetch(nextUrl, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(function (r) { return r.text(); }) .then(function (html) { var doc = new DOMParser().parseFromString(html, 'text/html'); var srcs = doc.querySelectorAll('.database-append-target'); Array.prototype.forEach.call(srcs, function (src, i) { var dest = containers[i]; if (!dest) return; itemNodes(src).forEach(function (node) { dest.appendChild(document.importNode(node, true)); }); }); var ns = doc.getElementById('infinite-scroll-sentinel'); nextUrl = (ns && ns.dataset.nextUrl) || null; sentinel.dataset.nextUrl = nextUrl || ''; updateCount(); if (!nextUrl) { observer.disconnect(); sentinel.style.display = 'none'; } }) .catch(function () { /* leave nextUrl intact so a later scroll retries */ }) .finally(function () { loading = false; if (loadingEl) loadingEl.style.display = 'none'; }); } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) loadMore(); }); }, { rootMargin: '600px 0px' }); observer.observe(sentinel); } newDocumentReady(initSSInfiniteScroll); // bfcache/back-forward restore doesn't fire DOMContentLoaded; pageshow does. // Idempotency guard above makes the re-call a no-op when already wired. window.addEventListener('pageshow', initSSInfiniteScroll); .blur-row { filter: blur(4px); pointer-events: none; user-select: none; } /* Mobile view toggle (rows ↔ cards) */ .db-view-toggle { display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border: 0; border-radius: 6px; background: transparent; color: #64748b; font-size: 12px; font-weight: 600; cursor: pointer; transition: background-color 0.12s, color 0.12s; } .db-view-toggle-active { background: #0f172a; color: #ffffff; } .database-video-grid { display: grid; grid-template-columns: 1fr; gap: 18px; } @media (min-width: 768px) { .database-video-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } /* Airbnb-style range slider (uses noUiSlider) */ .range-filter { display: inline-flex; flex-direction: column; justify-content: center; gap: 4px; padding: 6px 16px 10px; border: 1px solid rgb(226 232 240); background: #fff; border-radius: 9999px; min-width: 220px; margin-bottom: 0 !important; } .range-filter .range-filter-header { display: flex; align-items: baseline; gap: 6px; line-height: 1; } .range-filter .range-filter-header label { font-size: 0.875rem; color: rgb(100 116 139); font-weight: 500; margin: 0 !important; line-height: 1.2; flex-shrink: 0; } .range-filter .range-filter-header label::after { content: "|"; margin-left: 6px; color: rgb(203 213 225); font-weight: 400; } .range-filter .preview-label { font-size: 0.875rem; color: rgb(15 23 42); font-weight: 600; line-height: 1.2; margin: 0 !important; white-space: nowrap; } .range-filter .filter-slider.noUi-target { height: 3px; background: rgb(226 232 240); border: 0; box-shadow: none; border-radius: 9999px; margin: 3px 6px 0; } .range-filter.is-active { border-color: rgb(15 23 42); background: rgb(241 245 249); } .range-filter.is-active .range-filter-header label { color: rgb(15 23 42); } .range-filter .filter-slider .noUi-connect { background: rgb(15 23 42); } .range-filter .filter-slider .noUi-handle { height: 20px; width: 20px; top: -8px; right: -10px; border-radius: 9999px; background: #fff; border: 1px solid rgb(203 213 225); box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12), 0 2px 4px rgba(15, 23, 42, 0.08); cursor: grab; transition: transform 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease; outline: none; } .range-filter .filter-slider .noUi-handle::before, .range-filter .filter-slider .noUi-handle::after { display: none; } .range-filter .filter-slider .noUi-handle:hover { border-color: rgb(15 23 42); transform: scale(1.05); } .range-filter .filter-slider .noUi-handle.noUi-active, .range-filter .filter-slider .noUi-handle:focus-visible { cursor: grabbing; box-shadow: 0 0 0 6px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.18); border-color: rgb(15 23 42); } .range-filter .filter-slider.noUi-horizontal { height: 4px; } .range-filter input[type="hidden"] { display: none; }
IDEA REVENUE Reddit audience research ... · gummysearch.com Audience research tool for Reddit users $1K /mo Catholic prayer and medit... · hallow.com "Catholic prayer and meditation app fostering faith growth." — B2B email finder tool · findymail.com Email finder tool for B2B sales professionals $20K /mo Website technology profiler · builtwith.com Website technology profiler for competitive analysis. — Trend discovery platform · treendly.com Trend-spotting platform for untapped market insights. $1K /mo Open-source live support ... · livehelperchat.com Open-source live chat platform for companies. $7.5K /mo EG Ai-powered linkedin post ... · easygen.io AI tool for generating LinkedIn content. — newDocumentReady(function() { // Save-bookmark hover — delegated on document (guarded once) so rows // appended by infinite scroll get the behavior too. mouseover/mouseout // bubble (mouseenter/leave don't); closest('tr') scopes to the hovered row, // and the relatedTarget check suppresses flicker when moving cell-to-cell // within the same row. if (!window.__saveBookmarkHoverInit) { window.__saveBookmarkHoverInit = true; document.addEventListener('mouseover', function(e) { var row = e.target.closest('tr'); if (!row) return; var saveBookmark = row.querySelector('.save-bookmark'); if (saveBookmark) saveBookmark.classList.remove('invisible'); }); document.addEventListener('mouseout', function(e) { var row = e.target.closest('tr'); if (!row) return; if (e.relatedTarget && row.contains(e.relatedTarget)) return; var saveBookmark = row.querySelector('.save-bookmark'); if (saveBookmark) saveBookmark.classList.add('invisible'); }); } // ---- Tag-pill hover tooltip (LLM-generated context for each Tagging) ---- if (!window.__tagTooltipInit) { window.__tagTooltipInit = true; const tip = document.createElement('div'); tip.className = 'tag-tooltip-popover'; tip.style.cssText = [ 'position:fixed','z-index:9999','max-width:340px','display:none', 'background:#0f172a','color:#fff','font-size:12px','line-height:1.4', 'padding:8px 10px','border-radius:6px','box-shadow:0 8px 24px rgba(0,0,0,.18)', 'pointer-events:none','white-space:normal' ].join(';'); document.body.appendChild(tip); const showTip = function(e) { const target = e.currentTarget; const text = target.getAttribute('data-tag-tooltip'); if (!text) return; tip.textContent = text; tip.style.display = 'block'; const r = target.getBoundingClientRect(); const tr = tip.getBoundingClientRect(); let top = r.bottom + 8; if (top + tr.height > window.innerHeight - 8) top = r.top - 8 - tr.height; let left = r.left; if (left + tr.width > window.innerWidth - 8) left = window.innerWidth - tr.width - 8; if (left < 8) left = 8; tip.style.top = Math.round(top) + 'px'; tip.style.left = Math.round(left) + 'px'; }; const hideTip = function() { tip.style.display = 'none'; }; document.addEventListener('mouseover', function(e) { const el = e.target.closest('[data-tag-tooltip]'); if (el) showTip({ currentTarget: el }); }); document.addEventListener('mouseout', function(e) { const el = e.target.closest('[data-tag-tooltip]'); if (el) hideTip(); }); } });
Who is the owner of ConvertKit? When did Nathan Barry start ConvertKit? What is Nathan Barry's net worth? How much money has Nathan Barry made from ConvertKit? {"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Who is the owner of ConvertKit?","acceptedAnswer":{"@type":"Answer","text":"Nathan Barry is the founder of ConvertKit."}},{"@type":"Question","name":"When did Nathan Barry start ConvertKit?","acceptedAnswer":{"@type":"Answer","text":"2013"}},{"@type":"Question","name":"What is Nathan Barry's net worth?","acceptedAnswer":{"@type":"Answer","text":"Nathan Barry's business makes an average of $1M/month."}},{"@type":"Question","name":"How much money has Nathan Barry made from ConvertKit?","acceptedAnswer":{"@type":"Answer","text":"Nathan Barry started the business in 2013, and currently makes an average of $12M/year."}}]} Sources (27) 17 webs · 6 podcasts · 2 tweets · 1 indie hackers · 1 app store kit.com Web ConvertKit is now Kit: The Email-First OS for Creators Aug 4, 2026 · Kit (formerly ConvertKit) empowers creators with email-first tools to scale their businesses, grow audiences, and easily … nathanbarry.com Web · 2016 ConvertKit raises $1.8m from large group of angel investors thedisruptors.beehiiv.com Web · 2023 Bootstrapping ConvertKit from a Side-Project to a $30M Revenue Giant audio.fexingo.com Podcast · 3 months ago How ConvertKit Bootstrapped to 30 Million in Revenue Without Venture Capital indiehackers.com Indie hackers · 2017 ConvertKit: How Nathan Barry Bootstrapped an Email Marketing Business convertkit.com Web · 2018 ConvertKit will not change its name – a great apology nathanbarry.com Web · 2020 Renaming ConvertKit share.transistor.fm Podcast · 2017 #008 – Growing a $600,000/mo Business by Starting with Direct Sales with Nathan Barry of ConvertKit linkedin.com Web ConvertKit [archive] - LinkedIn ConvertKit helps 600k+ creators like you work smarter – not harder – with email, automation, and monetization tools that work … sacra.com Web · 2023 ConvertKit at $38M ARR kit.com Web Kit: The Platform for Creators - Email Marketing, Automation ... Kit (formerly ConvertKit) is the creator-first email marketing and newsletter platform. Grow your audience, automate campaigns, and … nathanbarry.com Web · 2013 A sneak peak of ConvertKit creatorstackclub.com Web · 4 months ago Kit (formerly ConvertKit) Review (2026): Pricing & Features Kit (ConvertKit) review: pricing, features, and honest assessment (2026) Kit Per-subscriber tiered pricing · Cloud · Web · Free trial … nathanbarry.com Web · 2015 Growing ConvertKit to $5,020 in Monthly Recurring Revenue medium.com Web · 2016 Email marketing startup ConvertKit raises $1.8m angel investors facebook.com Web Kit - formerly ConvertKit The email-first operating system for creators who mean business. Kit helps serious creators like yourself craft epic emails, create … apps.apple.com App store · 3 months ago ConvertKit One ConvertKit One converts your documents instantly — no account, no cloud, no waiting. Import a PDF or MOBI file and get JPG images, PNG pa... share.transistor.fm Podcast · 6 months ago The Nathan Barry Show — I Met 16 Of The World’s Smartest Authors (Their Best Advice) | Nathan Barry | 125 What does it take to truly master book marketing and author growth in today’s crowded landscape? Nathan Barry and James Clear co-hosted a... bloggingwizard.com Web Kit (formerly ConvertKit) Review 2026: Pros And Cons You Need To … Feb 12, 2026 · Wondering whether Kit is right for you? Or how to setup your account? Find out everything you need to know in this Kit … twitter.com Tweet · 2022 ConvertKit refused to sell to Spotify for “hundreds of millions” in 2021 twitter.com Tweet · 2021 Founder of ConvertKit Comments on Gumroad Fundraise lastweekinaws.com Web · 2019 How ConvertKit Could Lower Its $64K Monthly AWS Bill searchengineland.com Web ConvertKit: The complete guide (Now called Kit) ConvertKit is easy to use, decently powerful, and its paid plans are fairly priced. They also offer a free landing page plan. ConvertKit ... youtube.com Web Introduction to Kit (formerly ConvertKit) and Free Trial 2025 Looking for the best email marketing software for coaches, course creators and small businesses? Kit, formerly known as ConvertKit, ... How to Win podcast with Peep Laja Podcast · 2021 How Nathan Barry bared all to take ConvertKit from $0 to $2 million MRR <p><strong>Listen and learn:</strong></p><ul><li>The best advice Nathan Barry has received in business (1:44)</li><li>How ConvertKit diff... Bootstrapped Stories Podcast · 2022 #5 How to build an audience? | Nathan Barry, Founder & CEO ConvertKit <p>$30M in ARR, a team spread in 28 cities, and a strong audience worldwide. In this podcast, we talk about Nathan's successful keys in g... Indie Hackers Podcast · 2021 #206 – How Small Actions Lead to Compound Gains with Nathan Barry of ConvertKit <p>Nathan Barry (@nathanbarry) has grown ConvertKit from $7M to $27M since I last spoke with him three years ago. He’s done several thing...
—